# This file is auto-generated by tools/update_civis_api_spec.py.
# Do not edit it by hand.

from collections import OrderedDict
from collections.abc import Iterator
from typing import Any, List

from civis.response import Response

class _Admin:
    def list_organizations(
        self,
        *,
        status: List[str] | None = ...,
        org_type: List[str] | None = ...,
    ) -> List[_ResponseAdminListOrganizations]:
        """List organizations

        API URL: ``GET /admin/organizations``

        Parameters
        ----------
        status : List[str], optional
            The status of the organization (active/trial/inactive).
        org_type : List[str], optional
            The organization type (platform/ads/survey_vendor/other).

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of this organization.
            - name : str
                The name of this organization.
            - slug : str
                The slug of this organization.
            - account_manager_id : int
                The user ID of the Account Manager.
            - cs_specialist_id : int
                The user ID of the Client Success Specialist.
            - status : str
                The status of the organization (active/trial/inactive).
            - org_type : str
                The organization type (platform/ads/survey_vendor/other).
            - custom_branding : str
                The custom branding settings.
            - contract_size : int
                The monthly contract size.
            - max_analyst_users : int
                The max number of full platform users for the org.
            - max_report_users : int
                The max number of report-only platform users for the org.
            - vertical : str
                The business vertical that the organization belongs to.
            - cs_metadata : str
                Additional metadata about the organization in JSON format.
            - remove_footer_in_emails : bool
                If true, emails sent by platform will not include Civis text.
            - salesforce_account_id : str
                The Salesforce Account ID for this organization.
            - tableau_site_id : str
                The Tableau Site ID for this organization.
            - fedramp_enabled : bool
                Flag denoting whether this organization is FedRAMP compliant.
            - created_by_id : int
                The ID of the user who created this organization
            - last_updated_by_id : int
                The ID of the user who last updated this organization
            - advanced_settings : :class:`civis.Response`
                - dedicated_dj_pool_enabled : bool
                    If true, the Organization has a dedicated delayed jobs pool.
                    Defaults to false.
            - tableau_refresh_history : List[:class:`civis.Response`]
                The number of tableau refreshes used this month.
        """
        ...

class _Aliases:
    def list_shares(
        self,
        id: int,
    ) -> List[_ResponseAliasesListShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /aliases/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseAliasesPutSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /aliases/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /aliases/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseAliasesPutSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /aliases/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /aliases/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseAliasesListDependencies]:
        """List dependent objects for this object

        API URL: ``GET /aliases/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseAliasesPutTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /aliases/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list(
        self,
        *,
        object_type: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseAliasesList]:
        """List Aliases

        API URL: ``GET /aliases``

        Parameters
        ----------
        object_type : str, optional
            Filter results by object type. Pass multiple object types with a comma-
            separatedlist. Valid types include: cass_ncoa, container_script, geocode,
            identity_resolution, dbt_script, python_script, r_script,
            javascript_script, sql_script, project, notebook, workflow,
            template_script, template_report, service, report, tableau and
            service_report.
        limit : int, optional
            Number of results to return. Defaults to 50. Maximum allowed is 1000.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id, object_type.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to asc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The id of the Alias object.
            - object_id : int
                The id of the object
            - object_type : str
                The type of the object. Valid types include: cass_ncoa,
                container_script, geocode, identity_resolution, dbt_script,
                python_script, r_script, javascript_script, sql_script, project,
                notebook, workflow, template_script, template_report, service, report,
                tableau and service_report.
            - alias : str
                The alias of the object
            - user_id : int
                The id of the user who created the alias
            - display_name : str
                The display name of the Alias object. Defaults to object name if not
                provided.
        """
        ...

    def post(
        self,
        object_id: int,
        object_type: str,
        alias: str,
        *,
        display_name: str | None = ...,
    ) -> _ResponseAliasesPost:
        """Create an Alias

        API URL: ``POST /aliases``

        Parameters
        ----------
        object_id : int
            The id of the object
        object_type : str
            The type of the object. Valid types include: cass_ncoa, container_script,
            geocode, identity_resolution, dbt_script, python_script, r_script,
            javascript_script, sql_script, project, notebook, workflow,
            template_script, template_report, service, report, tableau and
            service_report.
        alias : str
            The alias of the object
        display_name : str, optional
            The display name of the Alias object. Defaults to object name if not
            provided.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The id of the Alias object.
            - object_id : int
                The id of the object
            - object_type : str
                The type of the object. Valid types include: cass_ncoa,
                container_script, geocode, identity_resolution, dbt_script,
                python_script, r_script, javascript_script, sql_script, project,
                notebook, workflow, template_script, template_report, service, report,
                tableau and service_report.
            - alias : str
                The alias of the object
            - user_id : int
                The id of the user who created the alias
            - display_name : str
                The display name of the Alias object. Defaults to object name if not
                provided.
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseAliasesGet:
        """Get an Alias

        API URL: ``GET /aliases/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The id of the Alias object.
            - object_id : int
                The id of the object
            - object_type : str
                The type of the object. Valid types include: cass_ncoa,
                container_script, geocode, identity_resolution, dbt_script,
                python_script, r_script, javascript_script, sql_script, project,
                notebook, workflow, template_script, template_report, service, report,
                tableau and service_report.
            - alias : str
                The alias of the object
            - user_id : int
                The id of the user who created the alias
            - display_name : str
                The display name of the Alias object. Defaults to object name if not
                provided.
        """
        ...

    def put(
        self,
        id: int,
        object_id: int,
        object_type: str,
        alias: str,
        *,
        display_name: str | None = ...,
    ) -> _ResponseAliasesPut:
        """Replace all attributes of this Alias

        API URL: ``PUT /aliases/{id}``

        Parameters
        ----------
        id : int
            The id of the Alias object.
        object_id : int
            The id of the object
        object_type : str
            The type of the object. Valid types include: cass_ncoa, container_script,
            geocode, identity_resolution, dbt_script, python_script, r_script,
            javascript_script, sql_script, project, notebook, workflow,
            template_script, template_report, service, report, tableau and
            service_report.
        alias : str
            The alias of the object
        display_name : str, optional
            The display name of the Alias object. Defaults to object name if not
            provided.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The id of the Alias object.
            - object_id : int
                The id of the object
            - object_type : str
                The type of the object. Valid types include: cass_ncoa,
                container_script, geocode, identity_resolution, dbt_script,
                python_script, r_script, javascript_script, sql_script, project,
                notebook, workflow, template_script, template_report, service, report,
                tableau and service_report.
            - alias : str
                The alias of the object
            - user_id : int
                The id of the user who created the alias
            - display_name : str
                The display name of the Alias object. Defaults to object name if not
                provided.
        """
        ...

    def patch(
        self,
        id: int,
        *,
        object_id: int | None = ...,
        object_type: str | None = ...,
        alias: str | None = ...,
        display_name: str | None = ...,
    ) -> _ResponseAliasesPatch:
        """Update some attributes of this Alias

        API URL: ``PATCH /aliases/{id}``

        Parameters
        ----------
        id : int
            The id of the Alias object.
        object_id : int, optional
            The id of the object
        object_type : str, optional
            The type of the object. Valid types include: cass_ncoa, container_script,
            geocode, identity_resolution, dbt_script, python_script, r_script,
            javascript_script, sql_script, project, notebook, workflow,
            template_script, template_report, service, report, tableau and
            service_report.
        alias : str, optional
            The alias of the object
        display_name : str, optional
            The display name of the Alias object. Defaults to object name if not
            provided.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The id of the Alias object.
            - object_id : int
                The id of the object
            - object_type : str
                The type of the object. Valid types include: cass_ncoa,
                container_script, geocode, identity_resolution, dbt_script,
                python_script, r_script, javascript_script, sql_script, project,
                notebook, workflow, template_script, template_report, service, report,
                tableau and service_report.
            - alias : str
                The alias of the object
            - user_id : int
                The id of the user who created the alias
            - display_name : str
                The display name of the Alias object. Defaults to object name if not
                provided.
        """
        ...

    def delete(
        self,
        id: int,
    ) -> Response:
        """Delete an alias

        API URL: ``DELETE /aliases/{id}``

        Parameters
        ----------
        id : int
            The id of the Alias object.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def get_object_type(
        self,
        object_type: str,
        alias: str,
    ) -> _ResponseAliasesGetObjectType:
        """Get details about an alias within an FCO type

        API URL: ``GET /aliases/{object_type}/{alias}``

        Parameters
        ----------
        object_type : str
            The type of the object. Valid types include: cass_ncoa, container_script,
            geocode, identity_resolution, dbt_script, python_script, r_script,
            javascript_script, sql_script, project, notebook, workflow,
            template_script, template_report, service, report, tableau and
            service_report.
        alias : str
            The alias of the object

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The id of the Alias object.
            - object_id : int
                The id of the object
            - object_type : str
                The type of the object. Valid types include: cass_ncoa,
                container_script, geocode, identity_resolution, dbt_script,
                python_script, r_script, javascript_script, sql_script, project,
                notebook, workflow, template_script, template_report, service, report,
                tableau and service_report.
            - alias : str
                The alias of the object
            - user_id : int
                The id of the user who created the alias
            - display_name : str
                The display name of the Alias object. Defaults to object name if not
                provided.
        """
        ...

class _Announcements:
    def list(
        self,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseAnnouncementsList]:
        """List announcements

        API URL: ``GET /announcements``

        Parameters
        ----------
        limit : int, optional
            Number of results to return. Defaults to 10. Maximum allowed is 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to released_at. Must
            be one of: released_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of this announcement
            - subject : str
                The subject of this announcement.
            - body : str
                The body of this announcement.
            - released_at : str (date-time)
                The date and time this announcement was released.
            - created_at : str (date-time)
            - updated_at : str (date-time)
        """
        ...

class _Clusters:
    def list_kubernetes(
        self,
        *,
        organization_id: int | None = ...,
        organization_slug: str | None = ...,
        raw_cluster_slug: str | None = ...,
        exclude_inactive_orgs: bool | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseClustersListKubernetes]:
        """List Kubernetes Clusters

        API URL: ``GET /clusters/kubernetes``

        Parameters
        ----------
        organization_id : int, optional
            The ID of this cluster's organization. Cannot be used along with the
            organization slug.
        organization_slug : str, optional
            The slug of this cluster's organization. Cannot be used along with the
            organization ID.
        raw_cluster_slug : str, optional
            The slug of this cluster's raw configuration.
        exclude_inactive_orgs : bool, optional
            When true, excludes KubeClusters associated with inactive orgs. Defaults to
            false.
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to organization_id.
            Must be one of: organization_id, created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to asc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of this cluster.
            - organization_id : str
                The id of this cluster's organization.
            - organization_name : str
                The name of this cluster's organization.
            - organization_slug : str
                The slug of this cluster's organization.
            - raw_cluster_slug : str
                The slug of this cluster's raw configuration.
            - custom_partitions : bool
                Whether this cluster has a custom partition configuration.
            - cluster_partitions : List[:class:`civis.Response`]
                List of cluster partitions associated with this cluster.

                - cluster_partition_id : int
                    The ID of this cluster partition.
                - name : str
                    The name of the cluster partition.
                - labels : List[str]
                    Labels associated with this partition.
                - instance_configs : List[:class:`civis.Response`]
                    The instances configured for this cluster partition.

                    - instance_config_id : int
                        The ID of this InstanceConfig.
                    - instance_type : str
                        An EC2 instance type. Possible values include t2.large,
                        m4.xlarge, m4.2xlarge, m4.4xlarge, m5.12xlarge, c5.18xlarge,
                        and g6.2xlarge.
                    - min_instances : int
                        The minimum number of instances of that type in this cluster.
                    - max_instances : int
                        The maximum number of instances of that type in this cluster.
                    - instance_max_memory : int
                        The amount of memory (RAM) available to a single instance of
                        that type in megabytes.
                    - instance_max_cpu : int
                        The number of processor shares available to a single instance
                        of that type in millicores.
                    - instance_max_disk : int
                        The amount of disk available to a single instance of that type
                        in gigabytes.
                    - usage_stats : :class:`civis.Response`
                        - pending_memory_requested : int
                            The sum of memory requests (in MB) for pending deployments
                            in this instance config.
                        - pending_cpu_requested : int
                            The sum of cpu requests (in millicores) for pending
                            deployments in this instance config.
                        - running_memory_requested : int
                            The sum of memory requests (in MB) for running deployments
                            in this instance config.
                        - running_cpu_requested : int
                            The sum of cpu requests (in millicores) for running
                            deployments in this instance config.
                        - pending_deployments : int
                            The number of pending deployments in this instance config.
                        - running_deployments : int
                            The number of running deployments in this instance config.
                - default_instance_config_id : int
                    The id of the InstanceConfig that is the default for this
                    partition.
            - is_nat_enabled : bool
                Whether this cluster needs a NAT gateway or not.
        """
        ...

    def get_kubernetes(
        self,
        id: int,
        *,
        include_usage_stats: bool | None = ...,
    ) -> _ResponseClustersGetKubernetes:
        """Describe a Kubernetes Cluster

        API URL: ``GET /clusters/kubernetes/{id}``

        Parameters
        ----------
        id : int
        include_usage_stats : bool, optional
            When true, usage stats are returned in instance config objects. Defaults to
            false.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this cluster.
            - organization_id : str
                The id of this cluster's organization.
            - organization_name : str
                The name of this cluster's organization.
            - organization_slug : str
                The slug of this cluster's organization.
            - raw_cluster_slug : str
                The slug of this cluster's raw configuration.
            - custom_partitions : bool
                Whether this cluster has a custom partition configuration.
            - cluster_partitions : List[:class:`civis.Response`]
                List of cluster partitions associated with this cluster.

                - cluster_partition_id : int
                    The ID of this cluster partition.
                - name : str
                    The name of the cluster partition.
                - labels : List[str]
                    Labels associated with this partition.
                - instance_configs : List[:class:`civis.Response`]
                    The instances configured for this cluster partition.

                    - instance_config_id : int
                        The ID of this InstanceConfig.
                    - instance_type : str
                        An EC2 instance type. Possible values include t2.large,
                        m4.xlarge, m4.2xlarge, m4.4xlarge, m5.12xlarge, c5.18xlarge,
                        and g6.2xlarge.
                    - min_instances : int
                        The minimum number of instances of that type in this cluster.
                    - max_instances : int
                        The maximum number of instances of that type in this cluster.
                    - instance_max_memory : int
                        The amount of memory (RAM) available to a single instance of
                        that type in megabytes.
                    - instance_max_cpu : int
                        The number of processor shares available to a single instance
                        of that type in millicores.
                    - instance_max_disk : int
                        The amount of disk available to a single instance of that type
                        in gigabytes.
                    - usage_stats : :class:`civis.Response`
                        - pending_memory_requested : int
                            The sum of memory requests (in MB) for pending deployments
                            in this instance config.
                        - pending_cpu_requested : int
                            The sum of cpu requests (in millicores) for pending
                            deployments in this instance config.
                        - running_memory_requested : int
                            The sum of memory requests (in MB) for running deployments
                            in this instance config.
                        - running_cpu_requested : int
                            The sum of cpu requests (in millicores) for running
                            deployments in this instance config.
                        - pending_deployments : int
                            The number of pending deployments in this instance config.
                        - running_deployments : int
                            The number of running deployments in this instance config.
                - default_instance_config_id : int
                    The id of the InstanceConfig that is the default for this
                    partition.
            - is_nat_enabled : bool
                Whether this cluster needs a NAT gateway or not.
            - hours : float (float)
                The number of hours used this month for this cluster.
        """
        ...

    def list_kubernetes_compute_hours(
        self,
        id: int,
        *,
        include_usage_stats: bool | None = ...,
    ) -> List[_ResponseClustersListKubernetesComputeHours]:
        """List compute hours for a Kubernetes Cluster

        API URL: ``GET /clusters/kubernetes/{id}/compute_hours``

        Parameters
        ----------
        id : int
        include_usage_stats : bool, optional
            When true, usage stats are returned in instance config objects. Defaults to
            false.

        Returns
        -------
        :class:`civis.ListResponse`
            - total_normalized_hours : int
                The total number of normalized hours used by this cluster.
            - normalized_hours_by_instance_type : str
                Denotes the instance type the normalized hours are attributed to.
            - updated_at : str (time)
            - month_and_year : str
                The month and year the normalized hours are attributed to.
        """
        ...

    def list_kubernetes_deployments(
        self,
        id: int,
        *,
        base_type: str | None = ...,
        state: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseClustersListKubernetesDeployments]:
        """List the deployments associated with a Kubernetes Cluster

        API URL: ``GET /clusters/kubernetes/{id}/deployments``

        Parameters
        ----------
        id : int
            The id of the cluster.
        base_type : str, optional
            If specified, return deployments of these base types. It accepts a comma-
            separated list, possible values are 'Notebook', 'Service', 'Run'.
        state : str, optional
            If specified, return deployments in these states. It accepts a comma-
            separated list, possible values are pending, running, terminated, sleeping
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to created_at. Must be
            one of: created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to asc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The id of this deployment.
            - name : str
                The name of the deployment.
            - base_id : int
                The id of the base object associated with the deployment.
            - base_type : str
                The base type of this deployment.
            - state : str
                The state of the deployment.
            - cpu : int
                The CPU in millicores required by the deployment.
            - memory : int
                The memory in MB required by the deployment.
            - disk_space : int
                The disk space in GB required by the deployment.
            - instance_type : str
                The EC2 instance type requested for the deployment.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - max_memory_usage : float (float)
                If the deployment has finished, the maximum amount of memory used
                during the deployment, in MB.
            - max_cpu_usage : float (float)
                If the deployment has finished, the maximum amount of cpu used during
                the deployment, in millicores.
            - created_at : str (time)
            - updated_at : str (time)
        """
        ...

    def list_kubernetes_deployment_stats(
        self,
        id: int,
    ) -> List[_ResponseClustersListKubernetesDeploymentStats]:
        """Get stats about deployments associated with a Kubernetes Cluster

        API URL: ``GET /clusters/kubernetes/{id}/deployment_stats``

        Parameters
        ----------
        id : int
            The ID of this cluster.

        Returns
        -------
        :class:`civis.ListResponse`
            - base_type : str
                The base type of this deployment
            - state : str
                State of the deployment
            - count : int
                Number of deployments of base type and state
            - total_cpu : int
                Total amount of CPU in millicores for deployments of base type and
                state
            - total_memory : int
                Total amount of Memory in megabytes for deployments of base type and
                state
        """
        ...

    def list_kubernetes_partitions(
        self,
        id: int,
        *,
        include_usage_stats: bool | None = ...,
    ) -> List[_ResponseClustersListKubernetesPartitions]:
        """List Cluster Partitions for given cluster

        API URL: ``GET /clusters/kubernetes/{id}/partitions``

        Parameters
        ----------
        id : int
        include_usage_stats : bool, optional
            When true, usage stats are returned in instance config objects. Defaults to
            false.

        Returns
        -------
        :class:`civis.ListResponse`
            - cluster_partition_id : int
                The ID of this cluster partition.
            - name : str
                The name of the cluster partition.
            - labels : List[str]
                Labels associated with this partition.
            - instance_configs : List[:class:`civis.Response`]
                The instances configured for this cluster partition.

                - instance_config_id : int
                    The ID of this InstanceConfig.
                - instance_type : str
                    An EC2 instance type. Possible values include t2.large, m4.xlarge,
                    m4.2xlarge, m4.4xlarge, m5.12xlarge, c5.18xlarge, and g6.2xlarge.
                - min_instances : int
                    The minimum number of instances of that type in this cluster.
                - max_instances : int
                    The maximum number of instances of that type in this cluster.
                - instance_max_memory : int
                    The amount of memory (RAM) available to a single instance of that
                    type in megabytes.
                - instance_max_cpu : int
                    The number of processor shares available to a single instance of
                    that type in millicores.
                - instance_max_disk : int
                    The amount of disk available to a single instance of that type in
                    gigabytes.
                - usage_stats : :class:`civis.Response`
                    - pending_memory_requested : int
                        The sum of memory requests (in MB) for pending deployments in
                        this instance config.
                    - pending_cpu_requested : int
                        The sum of cpu requests (in millicores) for pending deployments
                        in this instance config.
                    - running_memory_requested : int
                        The sum of memory requests (in MB) for running deployments in
                        this instance config.
                    - running_cpu_requested : int
                        The sum of cpu requests (in millicores) for running deployments
                        in this instance config.
                    - pending_deployments : int
                        The number of pending deployments in this instance config.
                    - running_deployments : int
                        The number of running deployments in this instance config.
            - default_instance_config_id : int
                The id of the InstanceConfig that is the default for this partition.
        """
        ...

    def post_kubernetes_partitions(
        self,
        id: int,
        instance_configs: List[dict],
        name: str,
        labels: List[str],
    ) -> _ResponseClustersPostKubernetesPartitions:
        """Create a Cluster Partition for given cluster

        API URL: ``POST /clusters/kubernetes/{id}/partitions``

        Parameters
        ----------
        id : int
            The ID of the cluster which this partition belongs to.
        instance_configs : List[dict]
            The instances configured for this cluster partition.

            - instance_type : str
                An EC2 instance type. Possible values include t2.large, m4.xlarge,
                m4.2xlarge, m4.4xlarge, m5.12xlarge, c5.18xlarge, and g6.2xlarge.
            - min_instances : int
                The minimum number of instances of that type in this cluster.
            - max_instances : int
                The maximum number of instances of that type in this cluster.
        name : str
            The name of the cluster partition.
        labels : List[str]
            Labels associated with this partition.

        Returns
        -------
        :class:`civis.Response`
            - cluster_partition_id : int
                The ID of this cluster partition.
            - name : str
                The name of the cluster partition.
            - labels : List[str]
                Labels associated with this partition.
            - instance_configs : List[:class:`civis.Response`]
                The instances configured for this cluster partition.

                - instance_config_id : int
                    The ID of this InstanceConfig.
                - instance_type : str
                    An EC2 instance type. Possible values include t2.large, m4.xlarge,
                    m4.2xlarge, m4.4xlarge, m5.12xlarge, c5.18xlarge, and g6.2xlarge.
                - min_instances : int
                    The minimum number of instances of that type in this cluster.
                - max_instances : int
                    The maximum number of instances of that type in this cluster.
                - instance_max_memory : int
                    The amount of memory (RAM) available to a single instance of that
                    type in megabytes.
                - instance_max_cpu : int
                    The number of processor shares available to a single instance of
                    that type in millicores.
                - instance_max_disk : int
                    The amount of disk available to a single instance of that type in
                    gigabytes.
                - usage_stats : :class:`civis.Response`
                    - pending_memory_requested : int
                        The sum of memory requests (in MB) for pending deployments in
                        this instance config.
                    - pending_cpu_requested : int
                        The sum of cpu requests (in millicores) for pending deployments
                        in this instance config.
                    - running_memory_requested : int
                        The sum of memory requests (in MB) for running deployments in
                        this instance config.
                    - running_cpu_requested : int
                        The sum of cpu requests (in millicores) for running deployments
                        in this instance config.
                    - pending_deployments : int
                        The number of pending deployments in this instance config.
                    - running_deployments : int
                        The number of running deployments in this instance config.
            - default_instance_config_id : int
                The id of the InstanceConfig that is the default for this partition.
        """
        ...

    def patch_kubernetes_partitions(
        self,
        id: int,
        cluster_partition_id: int,
        *,
        instance_configs: List[dict] | None = ...,
        name: str | None = ...,
        labels: List[str] | None = ...,
    ) -> _ResponseClustersPatchKubernetesPartitions:
        """Update a Cluster Partition

        API URL: ``PATCH /clusters/kubernetes/{id}/partitions/{cluster_partition_id}``

        Parameters
        ----------
        id : int
            The ID of the cluster which this partition belongs to.
        cluster_partition_id : int
            The ID of this cluster partition.
        instance_configs : List[dict], optional
            The instances configured for this cluster partition.

            - instance_type : str
                An EC2 instance type. Possible values include t2.large, m4.xlarge,
                m4.2xlarge, m4.4xlarge, m5.12xlarge, c5.18xlarge, and g6.2xlarge.
            - min_instances : int
                The minimum number of instances of that type in this cluster.
            - max_instances : int
                The maximum number of instances of that type in this cluster.
        name : str, optional
            The name of the cluster partition.
        labels : List[str], optional
            Labels associated with this partition.

        Returns
        -------
        :class:`civis.Response`
            - cluster_partition_id : int
                The ID of this cluster partition.
            - name : str
                The name of the cluster partition.
            - labels : List[str]
                Labels associated with this partition.
            - instance_configs : List[:class:`civis.Response`]
                The instances configured for this cluster partition.

                - instance_config_id : int
                    The ID of this InstanceConfig.
                - instance_type : str
                    An EC2 instance type. Possible values include t2.large, m4.xlarge,
                    m4.2xlarge, m4.4xlarge, m5.12xlarge, c5.18xlarge, and g6.2xlarge.
                - min_instances : int
                    The minimum number of instances of that type in this cluster.
                - max_instances : int
                    The maximum number of instances of that type in this cluster.
                - instance_max_memory : int
                    The amount of memory (RAM) available to a single instance of that
                    type in megabytes.
                - instance_max_cpu : int
                    The number of processor shares available to a single instance of
                    that type in millicores.
                - instance_max_disk : int
                    The amount of disk available to a single instance of that type in
                    gigabytes.
                - usage_stats : :class:`civis.Response`
                    - pending_memory_requested : int
                        The sum of memory requests (in MB) for pending deployments in
                        this instance config.
                    - pending_cpu_requested : int
                        The sum of cpu requests (in millicores) for pending deployments
                        in this instance config.
                    - running_memory_requested : int
                        The sum of memory requests (in MB) for running deployments in
                        this instance config.
                    - running_cpu_requested : int
                        The sum of cpu requests (in millicores) for running deployments
                        in this instance config.
                    - pending_deployments : int
                        The number of pending deployments in this instance config.
                    - running_deployments : int
                        The number of running deployments in this instance config.
            - default_instance_config_id : int
                The id of the InstanceConfig that is the default for this partition.
        """
        ...

    def delete_kubernetes_partitions(
        self,
        id: int,
        cluster_partition_id: int,
    ) -> Response:
        """Delete a Cluster Partition

        API URL: ``DELETE /clusters/kubernetes/{id}/partitions/{cluster_partition_id}``

        Parameters
        ----------
        id : int
            The ID of the cluster which this partition belongs to.
        cluster_partition_id : int
            The ID of this cluster partition.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def get_kubernetes_partitions(
        self,
        id: int,
        cluster_partition_id: int,
        *,
        include_usage_stats: bool | None = ...,
    ) -> _ResponseClustersGetKubernetesPartitions:
        """Describe a Cluster Partition

        API URL: ``GET /clusters/kubernetes/{id}/partitions/{cluster_partition_id}``

        Parameters
        ----------
        id : int
            The ID of the cluster which this partition belongs to.
        cluster_partition_id : int
            The ID of this cluster partition.
        include_usage_stats : bool, optional
            When true, usage stats are returned in instance config objects. Defaults to
            false.

        Returns
        -------
        :class:`civis.Response`
            - cluster_partition_id : int
                The ID of this cluster partition.
            - name : str
                The name of the cluster partition.
            - labels : List[str]
                Labels associated with this partition.
            - instance_configs : List[:class:`civis.Response`]
                The instances configured for this cluster partition.

                - instance_config_id : int
                    The ID of this InstanceConfig.
                - instance_type : str
                    An EC2 instance type. Possible values include t2.large, m4.xlarge,
                    m4.2xlarge, m4.4xlarge, m5.12xlarge, c5.18xlarge, and g6.2xlarge.
                - min_instances : int
                    The minimum number of instances of that type in this cluster.
                - max_instances : int
                    The maximum number of instances of that type in this cluster.
                - instance_max_memory : int
                    The amount of memory (RAM) available to a single instance of that
                    type in megabytes.
                - instance_max_cpu : int
                    The number of processor shares available to a single instance of
                    that type in millicores.
                - instance_max_disk : int
                    The amount of disk available to a single instance of that type in
                    gigabytes.
                - usage_stats : :class:`civis.Response`
                    - pending_memory_requested : int
                        The sum of memory requests (in MB) for pending deployments in
                        this instance config.
                    - pending_cpu_requested : int
                        The sum of cpu requests (in millicores) for pending deployments
                        in this instance config.
                    - running_memory_requested : int
                        The sum of memory requests (in MB) for running deployments in
                        this instance config.
                    - running_cpu_requested : int
                        The sum of cpu requests (in millicores) for running deployments
                        in this instance config.
                    - pending_deployments : int
                        The number of pending deployments in this instance config.
                    - running_deployments : int
                        The number of running deployments in this instance config.
            - default_instance_config_id : int
                The id of the InstanceConfig that is the default for this partition.
        """
        ...

    def get_kubernetes_instance_configs(
        self,
        instance_config_id: int,
        *,
        include_usage_stats: bool | None = ...,
    ) -> _ResponseClustersGetKubernetesInstanceConfigs:
        """Describe an Instance Config

        API URL: ``GET /clusters/kubernetes/instance_configs/{instance_config_id}``

        Parameters
        ----------
        instance_config_id : int
            The ID of this instance config.
        include_usage_stats : bool, optional
            When true, usage stats are returned in instance config objects. Defaults to
            false.

        Returns
        -------
        :class:`civis.Response`
            - instance_config_id : int
                The ID of this InstanceConfig.
            - instance_type : str
                An EC2 instance type. Possible values include t2.large, m4.xlarge,
                m4.2xlarge, m4.4xlarge, m5.12xlarge, c5.18xlarge, and g6.2xlarge.
            - min_instances : int
                The minimum number of instances of that type in this cluster.
            - max_instances : int
                The maximum number of instances of that type in this cluster.
            - instance_max_memory : int
                The amount of memory (RAM) available to a single instance of that type
                in megabytes.
            - instance_max_cpu : int
                The number of processor shares available to a single instance of that
                type in millicores.
            - instance_max_disk : int
                The amount of disk available to a single instance of that type in
                gigabytes.
            - usage_stats : :class:`civis.Response`
                - pending_memory_requested : int
                    The sum of memory requests (in MB) for pending deployments in this
                    instance config.
                - pending_cpu_requested : int
                    The sum of cpu requests (in millicores) for pending deployments in
                    this instance config.
                - running_memory_requested : int
                    The sum of memory requests (in MB) for running deployments in this
                    instance config.
                - running_cpu_requested : int
                    The sum of cpu requests (in millicores) for running deployments in
                    this instance config.
                - pending_deployments : int
                    The number of pending deployments in this instance config.
                - running_deployments : int
                    The number of running deployments in this instance config.
            - cluster_partition_id : int
                The ID of this InstanceConfig's cluster partition
            - cluster_partition_name : str
                The name of this InstanceConfig's cluster partition
        """
        ...

    def list_kubernetes_instance_configs_active_workloads(
        self,
        id: int,
        *,
        state: str | None = ...,
    ) -> List[_ResponseClustersListKubernetesInstanceConfigsActiveWorkloads]:
        """List active workloads in an Instance Config

        API URL: ``GET /clusters/kubernetes/instance_configs/{id}/active_workloads``

        Parameters
        ----------
        id : int
            The id of the instance config.
        state : str, optional
            If specified, return workloads in these states. It accepts a comma-
            separated list, possible values are pending, running

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The id of this deployment.
            - base_type : str
                The base type of this deployment.
            - base_id : int
                The id of the base object associated with this deployment.
            - base_object_name : str
                The name of the base object associated with this deployment. Null if
                you do not have permission to read the object.
            - job_type : str
                If the base object is a job run you have permission to read, the type
                of the job. One of "python_script", "r_script", "container_script", or
                "custom_script".
            - job_id : int
                If the base object is a job run you have permission to read, the id of
                the job.
            - job_cancel_requested_at : str (time)
                If the base object is a job run you have permission to read, and it was
                requested to be cancelled, the timestamp of that request.
            - state : str
                The state of this deployment.
            - cpu : int
                The CPU in millicores requested by this deployment.
            - memory : int
                The memory in MB requested by this deployment.
            - disk_space : int
                The disk space in GB requested by this deployment.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
                The timestamp of when the deployment began.
            - cancellable : bool
                True if you have permission to cancel this deployment.
        """
        ...

    def list_kubernetes_instance_configs_user_statistics(
        self,
        instance_config_id: int,
        *,
        order: str | None = ...,
        order_dir: str | None = ...,
    ) -> List[_ResponseClustersListKubernetesInstanceConfigsUserStatistics]:
        """Get statistics about the current users of an Instance Config

        API URL: ``GET /clusters/kubernetes/instance_configs/{instance_config_id}/user_statistics``

        Parameters
        ----------
        instance_config_id : int
            The ID of this instance config.
        order : str, optional
            The field on which to order the result set. Defaults to
            running_deployments. Must be one of pending_memory_requested,
            pending_cpu_requested, running_memory_requested, running_cpu_requested,
            pending_deployments, running_deployments.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending).
            Defaults to desc.

        Returns
        -------
        :class:`civis.ListResponse`
            - user_id : str
                The owning user's ID
            - user_name : str
                The owning user's name
            - pending_deployments : int
                The number of deployments belonging to the owning user in "pending"
                state
            - pending_memory_requested : int
                The sum of memory requests (in MB) for deployments belonging to the
                owning user in "pending" state
            - pending_cpu_requested : int
                The sum of CPU requests (in millicores) for deployments belonging to
                the owning user in "pending" state
            - running_deployments : int
                The number of deployments belonging to the owning user in "running"
                state
            - running_memory_requested : int
                The sum of memory requests (in MB) for deployments belonging to the
                owning user in "running" state
            - running_cpu_requested : int
                The sum of CPU requests (in millicores) for deployments belonging to
                the owning user in "running" state
        """
        ...

    def list_kubernetes_instance_configs_historical_graphs(
        self,
        instance_config_id: int,
        *,
        timeframe: str | None = ...,
    ) -> List[_ResponseClustersListKubernetesInstanceConfigsHistoricalGraphs]:
        """Get graphs of historical resource usage in an Instance Config

        API URL: ``GET /clusters/kubernetes/instance_configs/{instance_config_id}/historical_graphs``

        Parameters
        ----------
        instance_config_id : int
            The ID of this instance config.
        timeframe : str, optional
            The span of time that the graphs cover. Must be one of 1_day, 1_week.

        Returns
        -------
        :class:`civis.ListResponse`
            - cpu_graph_url : str
                URL for the graph of historical CPU usage in this instance config.
            - mem_graph_url : str
                URL for the graph of historical memory usage in this instance config.
        """
        ...

    def list_kubernetes_instance_configs_historical_metrics(
        self,
        instance_config_id: int,
        *,
        timeframe: str | None = ...,
        metric: str | None = ...,
    ) -> List[_ResponseClustersListKubernetesInstanceConfigsHistoricalMetrics]:
        """Get graphs of historical resource usage in an Instance Config

        API URL: ``GET /clusters/kubernetes/instance_configs/{instance_config_id}/historical_metrics``

        Parameters
        ----------
        instance_config_id : int
            The ID of this instance config.
        timeframe : str, optional
            The span of time that the graphs cover. Must be one of 1_day, 1_week.
        metric : str, optional
            The metric to retrieve. Must be one of cpu, memory.

        Returns
        -------
        :class:`civis.ListResponse`
            - instance_config_id : int
                The ID of this instance config.
            - metric : str
                URL for the graph of historical CPU usage in this instance config.
            - timeframe : str
                The span of time that the graphs cover. Must be one of 1_day, 1_week.
            - unit : str
                The unit of the values.
            - metrics : :class:`civis.Response`
                - used : :class:`civis.Response`
                    - times : List[int]
                        The times associated with data points, in seconds since epoch.
                    - values : List[float]
                        The values of the data points.
                - requested : :class:`civis.Response`
                    - times : List[int]
                        The times associated with data points, in seconds since epoch.
                    - values : List[float]
                        The values of the data points.
                - capacity : :class:`civis.Response`
                    - times : List[int]
                        The times associated with data points, in seconds since epoch.
                    - values : List[float]
                        The values of the data points.
        """
        ...

class _Credentials:
    def list_types(
        self,
    ) -> List[_ResponseCredentialsListTypes]:
        """Get list of Credential Types

        API URL: ``GET /credentials/types``

        Returns
        -------
        :class:`civis.ListResponse`
            - types : List[str]
                list of acceptable credential types
        """
        ...

    def list(
        self,
        *,
        type: str | None = ...,
        remote_host_id: int | None = ...,
        default: bool | None = ...,
        system_credentials: bool | None = ...,
        users: str | None = ...,
        name: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseCredentialsList]:
        """List credentials

        API URL: ``GET /credentials``

        Parameters
        ----------
        type : str, optional
            The type (or types) of credentials to return. One or more of: Amazon Web
            Services S3, Bitbucket, CASS/NCOA PAF, Certificate, Civis Platform, Custom,
            Database, Google, Github, Salesforce User, Salesforce Client, and
            TableauUser. Specify multiple values as a comma-separated list (e.g.,
            "A,B").
        remote_host_id : int, optional
            The ID of the remote host associated with the credentials to return.
        default : bool, optional
            If true, will return a list with a single credential which is the current
            user's default credential.
        system_credentials : bool, optional
            If true, will only return system credentials. System credentials can only
            be created and viewed by Civis Admins.
        users : str, optional
            A comma-separated list of user ids. If specified, returns set of
            credentials owned by the users that requesting user has at least read
            access on.
        name : str, optional
            If specified, will be used to filter the credentials returned. Will search
            across name and will return any full name containing the search string.
        limit : int, optional
            Number of results to return. Defaults to its maximum of 1000.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to updated_at. Must be
            one of: updated_at, created_at, name.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the credential.
            - name : str
                The name identifying the credential
            - type : str
                The credential's type.
            - username : str
                The username for the credential.
            - description : str
                A long description of the credential.
            - owner : str
                The username of the user who this credential belongs to. Using
                user.username is preferred.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - remote_host_id : int
                The ID of the remote host associated with this credential.
            - remote_host_name : str
                The name of the remote host associated with this credential.
            - state : str
                The U.S. state for the credential. Only for VAN credentials.
            - created_at : str (time)
                The creation time for this credential.
            - updated_at : str (time)
                The last modification time for this credential.
            - default : bool
                Whether or not the credential is a default. Only for Database
                credentials.
            - oauth : bool
                Whether or not the credential is an OAuth credential.
        """
        ...

    def post(
        self,
        type: str,
        username: str,
        password: str,
        *,
        name: str | None = ...,
        description: str | None = ...,
        remote_host_id: int | None = ...,
        user_id: int | None = ...,
        state: str | None = ...,
        system_credential: bool | None = ...,
        default: bool | None = ...,
        oauth: bool | None = ...,
    ) -> _ResponseCredentialsPost:
        """Create a credential

        API URL: ``POST /credentials``

        Parameters
        ----------
        type : str
            The type of credential. Note: only these credentials can be created or
            edited via this API ["Amazon Web Services S3", "CASS/NCOA PAF",
            "Certificate", "Civis Platform", "Custom", "Database", "Google",
            "Salesforce User", "Salesforce Client", "TableauUser"]
        username : str
            The username for the credential.
        password : str
            The password for the credential.
        name : str, optional
            The name identifying the credential.
        description : str, optional
            A long description of the credential.
        remote_host_id : int, optional
            The ID of the remote host associated with the credential.
        user_id : int, optional
            The ID of the user the credential is created for. Note: This attribute is
            only accepted if you are a Civis Admin User.
        state : str, optional
            The U.S. state for the credential. Only for VAN credentials.
        system_credential : bool, optional
            Boolean flag that sets a credential to be a system credential. System
            credentials can only be created by Civis Admins and will create a
            credential owned by the Civis Robot user.
        default : bool, optional
            Whether or not the credential is a default. Only for Database credentials.
        oauth : bool, optional
            Whether or not the credential is an OAuth credential.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the credential.
            - name : str
                The name identifying the credential
            - type : str
                The credential's type.
            - username : str
                The username for the credential.
            - description : str
                A long description of the credential.
            - owner : str
                The username of the user who this credential belongs to. Using
                user.username is preferred.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - remote_host_id : int
                The ID of the remote host associated with this credential.
            - remote_host_name : str
                The name of the remote host associated with this credential.
            - state : str
                The U.S. state for the credential. Only for VAN credentials.
            - created_at : str (time)
                The creation time for this credential.
            - updated_at : str (time)
                The last modification time for this credential.
            - default : bool
                Whether or not the credential is a default. Only for Database
                credentials.
            - oauth : bool
                Whether or not the credential is an OAuth credential.
        """
        ...

    def put(
        self,
        id: int,
        type: str,
        username: str,
        password: str,
        *,
        name: str | None = ...,
        description: str | None = ...,
        remote_host_id: int | None = ...,
        user_id: int | None = ...,
        state: str | None = ...,
        system_credential: bool | None = ...,
        default: bool | None = ...,
        oauth: bool | None = ...,
    ) -> _ResponseCredentialsPut:
        """Update an existing credential

        API URL: ``PUT /credentials/{id}``

        Parameters
        ----------
        id : int
            The ID of the credential.
        type : str
            The type of credential. Note: only these credentials can be created or
            edited via this API ["Amazon Web Services S3", "CASS/NCOA PAF",
            "Certificate", "Civis Platform", "Custom", "Database", "Google",
            "Salesforce User", "Salesforce Client", "TableauUser"]
        username : str
            The username for the credential.
        password : str
            The password for the credential.
        name : str, optional
            The name identifying the credential.
        description : str, optional
            A long description of the credential.
        remote_host_id : int, optional
            The ID of the remote host associated with the credential.
        user_id : int, optional
            The ID of the user the credential is created for. Note: This attribute is
            only accepted if you are a Civis Admin User.
        state : str, optional
            The U.S. state for the credential. Only for VAN credentials.
        system_credential : bool, optional
            Boolean flag that sets a credential to be a system credential. System
            credentials can only be created by Civis Admins and will create a
            credential owned by the Civis Robot user.
        default : bool, optional
            Whether or not the credential is a default. Only for Database credentials.
        oauth : bool, optional
            Whether or not the credential is an OAuth credential.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the credential.
            - name : str
                The name identifying the credential
            - type : str
                The credential's type.
            - username : str
                The username for the credential.
            - description : str
                A long description of the credential.
            - owner : str
                The username of the user who this credential belongs to. Using
                user.username is preferred.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - remote_host_id : int
                The ID of the remote host associated with this credential.
            - remote_host_name : str
                The name of the remote host associated with this credential.
            - state : str
                The U.S. state for the credential. Only for VAN credentials.
            - created_at : str (time)
                The creation time for this credential.
            - updated_at : str (time)
                The last modification time for this credential.
            - default : bool
                Whether or not the credential is a default. Only for Database
                credentials.
            - oauth : bool
                Whether or not the credential is an OAuth credential.
        """
        ...

    def patch(
        self,
        id: int,
        *,
        name: str | None = ...,
        type: str | None = ...,
        description: str | None = ...,
        username: str | None = ...,
        password: str | None = ...,
        remote_host_id: int | None = ...,
        user_id: int | None = ...,
        state: str | None = ...,
        system_credential: bool | None = ...,
        default: bool | None = ...,
        oauth: bool | None = ...,
    ) -> _ResponseCredentialsPatch:
        """Update some attributes of a credential

        API URL: ``PATCH /credentials/{id}``

        Parameters
        ----------
        id : int
            The ID of the credential.
        name : str, optional
            The name identifying the credential.
        type : str, optional
            The type of credential. Note: only these credentials can be created or
            edited via this API ["Amazon Web Services S3", "CASS/NCOA PAF",
            "Certificate", "Civis Platform", "Custom", "Database", "Google",
            "Salesforce User", "Salesforce Client", "TableauUser"]
        description : str, optional
            A long description of the credential.
        username : str, optional
            The username for the credential.
        password : str, optional
            The password for the credential.
        remote_host_id : int, optional
            The ID of the remote host associated with the credential.
        user_id : int, optional
            The ID of the user the credential is created for. Note: This attribute is
            only accepted if you are a Civis Admin User.
        state : str, optional
            The U.S. state for the credential. Only for VAN credentials.
        system_credential : bool, optional
            Boolean flag that sets a credential to be a system credential. System
            credentials can only be created by Civis Admins and will create a
            credential owned by the Civis Robot user.
        default : bool, optional
            Whether or not the credential is a default. Only for Database credentials.
        oauth : bool, optional
            Whether or not the credential is an OAuth credential.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the credential.
            - name : str
                The name identifying the credential
            - type : str
                The credential's type.
            - username : str
                The username for the credential.
            - description : str
                A long description of the credential.
            - owner : str
                The username of the user who this credential belongs to. Using
                user.username is preferred.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - remote_host_id : int
                The ID of the remote host associated with this credential.
            - remote_host_name : str
                The name of the remote host associated with this credential.
            - state : str
                The U.S. state for the credential. Only for VAN credentials.
            - created_at : str (time)
                The creation time for this credential.
            - updated_at : str (time)
                The last modification time for this credential.
            - default : bool
                Whether or not the credential is a default. Only for Database
                credentials.
            - oauth : bool
                Whether or not the credential is an OAuth credential.
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseCredentialsGet:
        """Get a credential

        API URL: ``GET /credentials/{id}``

        Parameters
        ----------
        id : int
            The ID of the credential.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the credential.
            - name : str
                The name identifying the credential
            - type : str
                The credential's type.
            - username : str
                The username for the credential.
            - description : str
                A long description of the credential.
            - owner : str
                The username of the user who this credential belongs to. Using
                user.username is preferred.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - remote_host_id : int
                The ID of the remote host associated with this credential.
            - remote_host_name : str
                The name of the remote host associated with this credential.
            - state : str
                The U.S. state for the credential. Only for VAN credentials.
            - created_at : str (time)
                The creation time for this credential.
            - updated_at : str (time)
                The last modification time for this credential.
            - default : bool
                Whether or not the credential is a default. Only for Database
                credentials.
            - oauth : bool
                Whether or not the credential is an OAuth credential.
        """
        ...

    def delete(
        self,
        id: int,
    ) -> Response:
        """Delete a credential

        API URL: ``DELETE /credentials/{id}``

        Parameters
        ----------
        id : int
            The ID of the credential.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def post_authenticate(
        self,
        url: str,
        remote_host_type: str,
        username: str,
        password: str,
    ) -> _ResponseCredentialsPostAuthenticate:
        """Authenticate against a remote host

        API URL: ``POST /credentials/authenticate``

        Parameters
        ----------
        url : str
            The URL to your host.
        remote_host_type : str
            The type of remote host. One of: RemoteHostTypes::Bigquery,
            RemoteHostTypes::Bitbucket, RemoteHostTypes::GitSSH,
            RemoteHostTypes::Github, RemoteHostTypes::GoogleDoc, RemoteHostTypes::JDBC,
            RemoteHostTypes::Postgres, RemoteHostTypes::Redshift,
            RemoteHostTypes::S3Storage, and RemoteHostTypes::Salesforce
        username : str
            The username for the credential.
        password : str
            The password for the credential.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the credential.
            - name : str
                The name identifying the credential
            - type : str
                The credential's type.
            - username : str
                The username for the credential.
            - description : str
                A long description of the credential.
            - owner : str
                The username of the user who this credential belongs to. Using
                user.username is preferred.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - remote_host_id : int
                The ID of the remote host associated with this credential.
            - remote_host_name : str
                The name of the remote host associated with this credential.
            - state : str
                The U.S. state for the credential. Only for VAN credentials.
            - created_at : str (time)
                The creation time for this credential.
            - updated_at : str (time)
                The last modification time for this credential.
            - default : bool
                Whether or not the credential is a default. Only for Database
                credentials.
            - oauth : bool
                Whether or not the credential is an OAuth credential.
        """
        ...

    def post_temporary(
        self,
        id: int,
        *,
        duration: int | None = ...,
    ) -> _ResponseCredentialsPostTemporary:
        """Generate a temporary credential for accessing S3

        API URL: ``POST /credentials/{id}/temporary``

        Parameters
        ----------
        id : int
            The ID of the credential.
        duration : int, optional
            The number of seconds the temporary credential should be valid. Defaults to
            15 minutes. Must not be less than 15 minutes or greater than 36 hours.

        Returns
        -------
        :class:`civis.Response`
            - access_key : str
                The identifier of the credential.
            - secret_access_key : str
                The secret part of the credential.
            - session_token : str
                The session token identifier.
        """
        ...

    def list_shares(
        self,
        id: int,
    ) -> List[_ResponseCredentialsListShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /credentials/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseCredentialsPutSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /credentials/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /credentials/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseCredentialsPutSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /credentials/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /credentials/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseCredentialsListDependencies]:
        """List dependent objects for this object

        API URL: ``GET /credentials/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseCredentialsPutTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /credentials/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

class _Databases:
    def list(
        self,
    ) -> List[_ResponseDatabasesList]:
        """List databases

        API URL: ``GET /databases``

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for the database.
            - name : str
                The name of the database in Platform.
            - adapter : str
                The type of the database.
            - cluster_identifier : str
                The cluster identifier of the database.
            - host : str
                The host of the database server.
            - port : int
                The port of the database.
            - database_name : str
                The internal name of the database.
            - managed : bool
                True if the database is Civis-managed. False otherwise.
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseDatabasesGet:
        """Show database information

        API URL: ``GET /databases/{id}``

        Parameters
        ----------
        id : int
            The ID for the database.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the database.
            - name : str
                The name of the database in Platform.
            - adapter : str
                The type of the database.
            - cluster_identifier : str
                The cluster identifier of the database.
            - host : str
                The host of the database server.
            - port : int
                The port of the database.
            - database_name : str
                The internal name of the database.
            - managed : bool
                True if the database is Civis-managed. False otherwise.
        """
        ...

    def list_schemas(
        self,
        id: int,
        *,
        name: str | None = ...,
        credential_id: int | None = ...,
    ) -> List[_ResponseDatabasesListSchemas]:
        """List schemas in this database

        API URL: ``GET /databases/{id}/schemas``

        Parameters
        ----------
        id : int
            The ID of the database.
        name : str, optional
            If specified, will be used to filter the schemas returned.Substring
            matching is supported (e.g., "name=schema" will return both "schema1" and
            "schema2"). Does not apply to BigQuery databases.
        credential_id : int, optional
            If provided, schemas will be filtered based on the given credential.

        Returns
        -------
        :class:`civis.ListResponse`
            - schema : str
                The name of a schema.
        """
        ...

    def list_schemas_tables(
        self,
        id: int,
        schema_name: str,
        *,
        credential_id: int | None = ...,
    ) -> List[_ResponseDatabasesListSchemasTables]:
        """List tables in this schema

        API URL: ``GET /databases/{id}/schemas/{schema_name}/tables``

        Parameters
        ----------
        id : int
            The ID of the database
        schema_name : str
            The name of the schema
        credential_id : int, optional
            If provided, schemas will be filtered based on the given credential.

        Returns
        -------
        :class:`civis.ListResponse`
            - name : str
                The name of the table.
            - schema : str
                The name of the schema containing the table.
            - is_view : bool
                True if this table represents a view. False if it represents a regular
                table.
            - database_id : int
                The ID of the database server.
        """
        ...

    def get_schemas_tables(
        self,
        id: int,
        schema_name: str,
        table_name: str,
        *,
        credential_id: int | None = ...,
    ) -> _ResponseDatabasesGetSchemasTables:
        """Show basic table info

        API URL: ``GET /databases/{id}/schemas/{schema_name}/tables/{table_name}``

        Parameters
        ----------
        id : int
            The ID of the database
        schema_name : str
            The name of the schema
        table_name : str
            The name of the table
        credential_id : int, optional
            If provided, schemas will be filtered based on the given credential.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the table.
            - database_id : int
                The ID of the database.
            - schema : str
                The name of the schema containing the table.
            - name : str
                Name of the table.
            - description : str
                The description of the table, as specified by the table owner
            - is_view : bool
                True if this table represents a view. False if it represents a regular
                table.
            - row_count : int
                The number of rows in the table.
            - column_count : int
                The number of columns in the table.
            - size_mb : float (float)
                The size of the table in megabytes.
            - owner : str
                The database username of the table's owner.
            - distkey : str
                The column used as the Amazon Redshift distkey.
            - sortkeys : str
                The column used as the Amazon Redshift sortkey.
            - refresh_status : str
                How up-to-date the table's statistics on row counts, null counts,
                distinct counts, and values distributions are. One of: refreshing,
                stale, or current.
            - last_refresh : str (date-time)
                The time of the last statistics refresh.
            - data_updated_at : str (date-time)
                The last time that Civis Platform captured a change in this table.Only
                applicable for Redshift tables; please see the Civis help desk for more
                info.
            - schema_updated_at : str (date-time)
                The last time that Civis Platform captured a change to the table
                attributes/structure.Only applicable for Redshift tables; please see
                the Civis help desk for more info.
            - refresh_id : str
                The ID of the most recent statistics refresh.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - primary_keys : List[str]
                The primary keys for this table.
            - last_modified_keys : List[str]
                The columns indicating an entry's modification status for this table.
            - table_tags : List[:class:`civis.Response`]
                The table tags associated with this table.

                - id : int
                    Table Tag ID
                - name : str
                    Table Tag Name
            - ontology_mapping : :class:`civis.Response`
                The ontology-key to column-name mapping.  See /ontology for the list of
                valid ontology keys.
            - columns : List[:class:`civis.Response`]
                - name : str
                    Name of the column.
                - civis_data_type : str
                    The generic data type of the column (ex. "string"). Since this is
                    database-agnostic, it may be helpful when loading data to R/Python.
                - sql_type : str
                    The database-specific SQL type of the column (ex. "varchar(30)").
                - sample_values : List[str]
                    A sample of values from the column.
                - encoding : str
                    The compression encoding for this columnSee: http://docs.aws.amazon
                    .com/redshift/latest/dg/c_Compression_encodings.html
                - description : str
                    The description of the column, as specified by the table owner
                - order : int
                    Relative position of the column in the table.
                - min_value : str
                    Smallest value in the column.
                - max_value : str
                    Largest value in the column.
                - avg_value : float (float)
                    This parameter is deprecated.
                - stddev : float (float)
                    This parameter is deprecated.
                - value_distribution_percent : :class:`civis.Response`
                    A mapping between each value in the column and the percentage of
                    rows with that value.Only present for tables with fewer than
                    approximately 25,000,000 rows and for columns with fewer than
                    twenty distinct values.
                - coverage_count : int
                    Number of non-null values in the column.
                - null_count : int
                    Number of null values in the column.
                - possible_dependent_variable_types : List[str]
                    Possible dependent variable types the column may be used to model.
                    Null if it may not be used as a dependent variable.
                - useable_as_independent_variable : bool
                    Whether the column may be used as an independent variable to train
                    a model.
                - useable_as_primary_key : bool
                    Whether the column may be used as an primary key to identify table
                    rows.
                - value_distribution : :class:`civis.Response`
                    An object mapping distinct values in the column to the number of
                    times they appear in the column
                - distinct_count : int
                    Number of distinct values in the column. NULL values are counted
                    and treated as a single distinct value.
            - joins : List[:class:`civis.Response`]
                - id : int
                - left_table_id : int
                - left_identifier : str
                - right_table_id : int
                - right_identifier : str
                - on : str
                - left_join : bool
                - created_at : str (time)
                - updated_at : str (time)
            - multipart_key : List[str]
            - enhancements : List[:class:`civis.Response`]
                - type : str
                - created_at : str (time)
                - updated_at : str (time)
                - join_id : int
            - view_def : str
            - table_def : str
            - outgoing_table_matches : List[:class:`civis.Response`]
                - source_table_id : int
                    Source table
                - target_type : str
                    Target type
                - target_id : int
                    Target ID
                - target : :class:`civis.Response`
                    - name : str
                - job : :class:`civis.Response`
                    - id : int
                    - name : str
                    - type : str
                    - from_template_id : int
                    - state : str
                        Whether the job is idle, queued, running, cancelled, or failed.
                    - created_at : str (date-time)
                    - updated_at : str (date-time)
                    - runs : List[:class:`civis.Response`]
                        Information about the most recent runs of the job.

                        - id : int
                        - state : str
                        - created_at : str (time)
                            The time that the run was queued.
                        - started_at : str (time)
                            The time that the run started.
                        - finished_at : str (time)
                            The time that the run completed.
                        - error : str
                            The error message for this run, if present.
                    - last_run : :class:`civis.Response`
                        - id : int
                        - state : str
                        - created_at : str (time)
                            The time that the run was queued.
                        - started_at : str (time)
                            The time that the run started.
                        - finished_at : str (time)
                            The time that the run completed.
                        - error : str
                            The error message for this run, if present.
                    - hidden : bool
                        The hidden status of the item.
                    - match_options : :class:`civis.Response`
                        - max_matches : int
                        - threshold : str
        """
        ...

    def patch_schemas_tables(
        self,
        id: int,
        schema_name: str,
        table_name: str,
        *,
        credential_id: int | None = ...,
        description: str | None = ...,
    ) -> _ResponseDatabasesPatchSchemasTables:
        """Update a table

        API URL: ``PATCH /databases/{id}/schemas/{schema_name}/tables/{table_name}``

        Parameters
        ----------
        id : int
            The ID of the database
        schema_name : str
            The name of the schema
        table_name : str
            The name of the table
        credential_id : int, optional
            If provided, schemas will be filtered based on the given credential.
        description : str, optional
            The user-defined description of the table.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the table.
            - database_id : int
                The ID of the database.
            - schema : str
                The name of the schema containing the table.
            - name : str
                Name of the table.
            - description : str
                The description of the table, as specified by the table owner
            - is_view : bool
                True if this table represents a view. False if it represents a regular
                table.
            - row_count : int
                The number of rows in the table.
            - column_count : int
                The number of columns in the table.
            - size_mb : float (float)
                The size of the table in megabytes.
            - owner : str
                The database username of the table's owner.
            - distkey : str
                The column used as the Amazon Redshift distkey.
            - sortkeys : str
                The column used as the Amazon Redshift sortkey.
            - refresh_status : str
                How up-to-date the table's statistics on row counts, null counts,
                distinct counts, and values distributions are. One of: refreshing,
                stale, or current.
            - last_refresh : str (date-time)
                The time of the last statistics refresh.
            - data_updated_at : str (date-time)
                The last time that Civis Platform captured a change in this table.Only
                applicable for Redshift tables; please see the Civis help desk for more
                info.
            - schema_updated_at : str (date-time)
                The last time that Civis Platform captured a change to the table
                attributes/structure.Only applicable for Redshift tables; please see
                the Civis help desk for more info.
            - refresh_id : str
                The ID of the most recent statistics refresh.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - primary_keys : List[str]
                The primary keys for this table.
            - last_modified_keys : List[str]
                The columns indicating an entry's modification status for this table.
            - table_tags : List[:class:`civis.Response`]
                The table tags associated with this table.

                - id : int
                    Table Tag ID
                - name : str
                    Table Tag Name
            - ontology_mapping : :class:`civis.Response`
                The ontology-key to column-name mapping.  See /ontology for the list of
                valid ontology keys.
            - columns : List[:class:`civis.Response`]
                - name : str
                    Name of the column.
                - civis_data_type : str
                    The generic data type of the column (ex. "string"). Since this is
                    database-agnostic, it may be helpful when loading data to R/Python.
                - sql_type : str
                    The database-specific SQL type of the column (ex. "varchar(30)").
                - sample_values : List[str]
                    A sample of values from the column.
                - encoding : str
                    The compression encoding for this columnSee: http://docs.aws.amazon
                    .com/redshift/latest/dg/c_Compression_encodings.html
                - description : str
                    The description of the column, as specified by the table owner
                - order : int
                    Relative position of the column in the table.
                - min_value : str
                    Smallest value in the column.
                - max_value : str
                    Largest value in the column.
                - avg_value : float (float)
                    This parameter is deprecated.
                - stddev : float (float)
                    This parameter is deprecated.
                - value_distribution_percent : :class:`civis.Response`
                    A mapping between each value in the column and the percentage of
                    rows with that value.Only present for tables with fewer than
                    approximately 25,000,000 rows and for columns with fewer than
                    twenty distinct values.
                - coverage_count : int
                    Number of non-null values in the column.
                - null_count : int
                    Number of null values in the column.
                - possible_dependent_variable_types : List[str]
                    Possible dependent variable types the column may be used to model.
                    Null if it may not be used as a dependent variable.
                - useable_as_independent_variable : bool
                    Whether the column may be used as an independent variable to train
                    a model.
                - useable_as_primary_key : bool
                    Whether the column may be used as an primary key to identify table
                    rows.
                - value_distribution : :class:`civis.Response`
                    An object mapping distinct values in the column to the number of
                    times they appear in the column
                - distinct_count : int
                    Number of distinct values in the column. NULL values are counted
                    and treated as a single distinct value.
            - joins : List[:class:`civis.Response`]
                - id : int
                - left_table_id : int
                - left_identifier : str
                - right_table_id : int
                - right_identifier : str
                - on : str
                - left_join : bool
                - created_at : str (time)
                - updated_at : str (time)
            - multipart_key : List[str]
            - enhancements : List[:class:`civis.Response`]
                - type : str
                - created_at : str (time)
                - updated_at : str (time)
                - join_id : int
            - view_def : str
            - table_def : str
            - outgoing_table_matches : List[:class:`civis.Response`]
                - source_table_id : int
                    Source table
                - target_type : str
                    Target type
                - target_id : int
                    Target ID
                - target : :class:`civis.Response`
                    - name : str
                - job : :class:`civis.Response`
                    - id : int
                    - name : str
                    - type : str
                    - from_template_id : int
                    - state : str
                        Whether the job is idle, queued, running, cancelled, or failed.
                    - created_at : str (date-time)
                    - updated_at : str (date-time)
                    - runs : List[:class:`civis.Response`]
                        Information about the most recent runs of the job.

                        - id : int
                        - state : str
                        - created_at : str (time)
                            The time that the run was queued.
                        - started_at : str (time)
                            The time that the run started.
                        - finished_at : str (time)
                            The time that the run completed.
                        - error : str
                            The error message for this run, if present.
                    - last_run : :class:`civis.Response`
                        - id : int
                        - state : str
                        - created_at : str (time)
                            The time that the run was queued.
                        - started_at : str (time)
                            The time that the run started.
                        - finished_at : str (time)
                            The time that the run completed.
                        - error : str
                            The error message for this run, if present.
                    - hidden : bool
                        The hidden status of the item.
                    - match_options : :class:`civis.Response`
                        - max_matches : int
                        - threshold : str
        """
        ...

    def list_schemas_tables_projects(
        self,
        id: int,
        schema_name: str,
        table_name: str,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseDatabasesListSchemasTablesProjects]:
        """List the projects a Table belongs to

        API URL: ``GET /databases/{id}/schemas/{schema_name}/tables/{table_name}/projects``

        Parameters
        ----------
        id : int
            The ID of the database
        schema_name : str
            The name of the schema
        table_name : str
            The name of the table
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_schemas_tables_projects(
        self,
        id: int,
        project_id: int,
        schema_name: str,
        table_name: str,
    ) -> Response:
        """Add a Table to a project

        API URL: ``PUT /databases/{id}/schemas/{schema_name}/tables/{table_name}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the database
        project_id : int
            The ID of the project.
        schema_name : str
            The name of the schema
        table_name : str
            The name of the table

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_schemas_tables_projects(
        self,
        id: int,
        project_id: int,
        schema_name: str,
        table_name: str,
    ) -> Response:
        """Remove a Table from a project

        API URL: ``DELETE /databases/{id}/schemas/{schema_name}/tables/{table_name}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the database
        project_id : int
            The ID of the project.
        schema_name : str
            The name of the schema
        table_name : str
            The name of the table

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def post_schemas_scan(
        self,
        id: int,
        schema: str,
        *,
        stats_priority: str | None = ...,
    ) -> _ResponseDatabasesPostSchemasScan:
        """Creates and enqueues a schema scanner job

        API URL: ``POST /databases/{id}/schemas/scan``

        Parameters
        ----------
        id : int
            The ID of the database.
        schema : str
            The name of the schema.
        stats_priority : str, optional
            When to sync table statistics for every table in the schema. Valid options
            are the following. Option: 'flag' means to flag stats for the next
            scheduled run of a full table scan on the database. Option: 'block' means
            to block this job on stats syncing. Option: 'queue' means to queue a
            separate job for syncing stats and do not block this job on the queued job.
            Defaults to 'flag'

        Returns
        -------
        :class:`civis.Response`
            - job_id : int
                The ID of the job created.
            - run_id : int
                The ID of the run created.
        """
        ...

    def get_table_privileges_schema_name(
        self,
        id: int,
        schema_name: str,
        table_name: str,
        *,
        credential_id: int | None = ...,
    ) -> _ResponseDatabasesGetTablePrivilegesSchemaName:
        """Show table privileges

        API URL: ``GET /databases/{id}/table_privileges/{schema_name}/{table_name}``

        Parameters
        ----------
        id : int
            The ID of the database
        schema_name : str
            The name of the schema
        table_name : str
            The name of the table
        credential_id : int, optional
            If provided, schemas will be filtered based on the given credential.

        Returns
        -------
        :class:`civis.Response`
            - grantee : str
                Name of the granted user or group
            - grantee_type : str
                User or group
            - privileges : List[str]
                Privileges that the grantee has on this resource
            - grantable_privileges : List[str]
                Privileges that the grantee can grant to others for this resource
        """
        ...

    def get_schema_privileges(
        self,
        id: int,
        schema_name: str,
        *,
        credential_id: int | None = ...,
    ) -> _ResponseDatabasesGetSchemaPrivileges:
        """Show schema privileges

        API URL: ``GET /databases/{id}/schema_privileges/{schema_name}``

        Parameters
        ----------
        id : int
            The ID of the database
        schema_name : str
            The name of the schema
        credential_id : int, optional
            If provided, schemas will be filtered based on the given credential.

        Returns
        -------
        :class:`civis.Response`
            - grantee : str
                Name of the granted user or group
            - grantee_type : str
                User or group
            - privileges : List[str]
                Privileges that the grantee has on this resource
            - grantable_privileges : List[str]
                Privileges that the grantee can grant to others for this resource
        """
        ...

    def list_users(
        self,
        id: int,
        *,
        active: bool | None = ...,
    ) -> List[_ResponseDatabasesListUsers]:
        """Show list of database users

        API URL: ``GET /databases/{id}/users``

        Parameters
        ----------
        id : int
            The ID of the database.
        active : bool, optional
            If true returns active users. If false returns deactivated users. Defaults
            to true.

        Returns
        -------
        :class:`civis.ListResponse`
            - username : str
                Username
            - active : bool
                Whether the user is active or deactivated
        """
        ...

    def list_groups(
        self,
        id: int,
    ) -> List[_ResponseDatabasesListGroups]:
        """List groups in the specified database

        API URL: ``GET /databases/{id}/groups``

        Parameters
        ----------
        id : int
            The ID for the database.

        Returns
        -------
        :class:`civis.ListResponse`
            - group_name : str
                The name of the group.
            - members : List[str]
                The members of the group.
        """
        ...

    def list_whitelist_ips(
        self,
        id: int,
    ) -> List[_ResponseDatabasesListWhitelistIps]:
        """List whitelisted IPs for the specified database

        API URL: ``GET /databases/{id}/whitelist-ips``

        Parameters
        ----------
        id : int
            The ID for the database.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of this whitelisted IP address.
            - remote_host_id : int
                The ID of the database this rule is applied to.
            - security_group_id : str
                The ID of the security group this rule is applied to.
            - subnet_mask : str
                The subnet mask that is allowed by this rule.
            - created_at : str (time)
                The time this rule was created.
            - updated_at : str (time)
                The time this rule was last updated.
        """
        ...

    def get_whitelist_ips(
        self,
        id: int,
        whitelisted_ip_id: int,
    ) -> _ResponseDatabasesGetWhitelistIps:
        """View details about a whitelisted IP

        API URL: ``GET /databases/{id}/whitelist-ips/{whitelisted_ip_id}``

        Parameters
        ----------
        id : int
            The ID of the database this rule is applied to.
        whitelisted_ip_id : int
            The ID of this whitelisted IP address.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this whitelisted IP address.
            - remote_host_id : int
                The ID of the database this rule is applied to.
            - security_group_id : str
                The ID of the security group this rule is applied to.
            - subnet_mask : str
                The subnet mask that is allowed by this rule.
            - authorized_by : str
                The user who authorized this rule.
            - is_active : bool
                True if the rule is applied, false if it has been revoked.
            - created_at : str (time)
                The time this rule was created.
            - updated_at : str (time)
                The time this rule was last updated.
        """
        ...

    def list_advanced_settings(
        self,
        id: int,
    ) -> List[_ResponseDatabasesListAdvancedSettings]:
        """Get the advanced settings for this database

        API URL: ``GET /databases/{id}/advanced-settings``

        Parameters
        ----------
        id : int
            The ID of the database this advanced settings object belongs to.

        Returns
        -------
        :class:`civis.ListResponse`
            - export_caching_enabled : bool
                Whether or not caching is enabled for export jobs run on this database
                server.
        """
        ...

    def patch_advanced_settings(
        self,
        id: int,
        *,
        export_caching_enabled: bool | None = ...,
    ) -> _ResponseDatabasesPatchAdvancedSettings:
        """Update the advanced settings for this database

        API URL: ``PATCH /databases/{id}/advanced-settings``

        Parameters
        ----------
        id : int
            The ID of the database this advanced settings object belongs to.
        export_caching_enabled : bool, optional
            Whether or not caching is enabled for export jobs run on this database
            server.

        Returns
        -------
        :class:`civis.Response`
            - export_caching_enabled : bool
                Whether or not caching is enabled for export jobs run on this database
                server.
        """
        ...

    def put_advanced_settings(
        self,
        id: int,
        export_caching_enabled: bool,
    ) -> _ResponseDatabasesPutAdvancedSettings:
        """Edit the advanced settings for this database

        API URL: ``PUT /databases/{id}/advanced-settings``

        Parameters
        ----------
        id : int
            The ID of the database this advanced settings object belongs to.
        export_caching_enabled : bool
            Whether or not caching is enabled for export jobs run on this database
            server.

        Returns
        -------
        :class:`civis.Response`
            - export_caching_enabled : bool
                Whether or not caching is enabled for export jobs run on this database
                server.
        """
        ...

    def get_status_graphs_timeframe(
        self,
        id: int,
        timeframe: str,
    ) -> _ResponseDatabasesGetStatusGraphsTimeframe:
        """Get the status graphs for this database

        API URL: ``GET /databases/{id}/status_graphs/timeframe/{timeframe}``

        Parameters
        ----------
        id : int
            The ID of the database.
        timeframe : str
            The span of time that the graphs cover. Must be one of 1_hour, 4_hours,
            1_day, 2_days, 1_week.

        Returns
        -------
        :class:`civis.Response`
            - cpu_graph_url : str
                URL for the aws redshift cpu utliization graph.
            - disk_graph_url : str
                URL for the aws redshift disk usage graph.
            - queue_length_graph_url : str
                URL for the aws redshift queue length graph.
            - status_graph_url : str
                URL for the aws redshift status graph.
            - maintenance_graph_url : str
                URL for the aws redshift maintenance graph.
            - query_duration_graph_url : str
                URL for the aws redshift table count graph.
        """
        ...

class _Endpoints:
    def list(
        self,
    ) -> List[Response]:
        """List API endpoints

        API URL: ``GET /endpoints``

        Returns
        -------
        None
            Response code 200: success
        """
        ...

class _Enhancements:
    def post_civis_data_match(
        self,
        name: str,
        input_field_mapping: dict,
        input_table: dict,
        match_target_id: int,
        output_table: dict,
        *,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        max_matches: int | None = ...,
        threshold: float | None = ...,
        archived: bool | None = ...,
        parent_id: int | None = ...,
    ) -> _ResponseEnhancementsPostCivisDataMatch:
        """Create a Civis Data Match Enhancement

        API URL: ``POST /enhancements/civis-data-match``

        Parameters
        ----------
        name : str
            The name of the enhancement job.
        input_field_mapping : dict
            The field (i.e., column) mapping for the input table. See
            https://api.civisanalytics.com/enhancements/field-mapping for a list of
            valid field types and descriptions. Each field type should be mapped to a
            string specifying a column name in the input table. For field types that
            support multiple values (e.g., the "phone" field), a list of column names
            can be provided (e.g., {"phone": ["home_phone", "mobile_phone"], ...}).
        input_table : dict
            - database_name : str
                The Redshift database name for the table.
            - schema : str
                The schema name for the table.
            - table : str
                The table name.
        match_target_id : int
            The ID of the Civis Data match target. See /match_targets for IDs.
        output_table : dict
            - database_name : str
                The Redshift database name for the table.
            - schema : str
                The schema name for the table.
            - table : str
                The table name.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        max_matches : int, optional
            The maximum number of matches per record in the input table to return. Must
            be between 0 and 10. 0 returns all matches.
        threshold : float (float), optional
            The score threshold (between 0 and 1). Matches below this threshold will
            not be returned. The default value is 0.5.
        archived : bool, optional
            Whether the Civis Data Match Job has been archived.
        parent_id : int, optional
            Parent ID that triggers this enhancement.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - input_field_mapping : :class:`civis.Response`
                The field (i.e., column) mapping for the input table. See
                https://api.civisanalytics.com/enhancements/field-mapping for a list of
                valid field types and descriptions. Each field type should be mapped to
                a string specifying a column name in the input table. For field types
                that support multiple values (e.g., the "phone" field), a list of
                column names can be provided (e.g., {"phone": ["home_phone",
                "mobile_phone"], ...}).
            - input_table : :class:`civis.Response`
                - database_name : str
                    The Redshift database name for the table.
                - schema : str
                    The schema name for the table.
                - table : str
                    The table name.
            - match_target_id : int
                The ID of the Civis Data match target. See /match_targets for IDs.
            - output_table : :class:`civis.Response`
                - database_name : str
                    The Redshift database name for the table.
                - schema : str
                    The schema name for the table.
                - table : str
                    The table name.
            - max_matches : int
                The maximum number of matches per record in the input table to return.
                Must be between 0 and 10. 0 returns all matches.
            - threshold : float (float)
                The score threshold (between 0 and 1). Matches below this threshold
                will not be returned. The default value is 0.5.
            - archived : bool
                Whether the Civis Data Match Job has been archived.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - parent_id : int
                Parent ID that triggers this enhancement.
        """
        ...

    def get_civis_data_match(
        self,
        id: int,
    ) -> _ResponseEnhancementsGetCivisDataMatch:
        """Get a Civis Data Match Enhancement

        API URL: ``GET /enhancements/civis-data-match/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - input_field_mapping : :class:`civis.Response`
                The field (i.e., column) mapping for the input table. See
                https://api.civisanalytics.com/enhancements/field-mapping for a list of
                valid field types and descriptions. Each field type should be mapped to
                a string specifying a column name in the input table. For field types
                that support multiple values (e.g., the "phone" field), a list of
                column names can be provided (e.g., {"phone": ["home_phone",
                "mobile_phone"], ...}).
            - input_table : :class:`civis.Response`
                - database_name : str
                    The Redshift database name for the table.
                - schema : str
                    The schema name for the table.
                - table : str
                    The table name.
            - match_target_id : int
                The ID of the Civis Data match target. See /match_targets for IDs.
            - output_table : :class:`civis.Response`
                - database_name : str
                    The Redshift database name for the table.
                - schema : str
                    The schema name for the table.
                - table : str
                    The table name.
            - max_matches : int
                The maximum number of matches per record in the input table to return.
                Must be between 0 and 10. 0 returns all matches.
            - threshold : float (float)
                The score threshold (between 0 and 1). Matches below this threshold
                will not be returned. The default value is 0.5.
            - archived : bool
                Whether the Civis Data Match Job has been archived.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - parent_id : int
                Parent ID that triggers this enhancement.
        """
        ...

    def put_civis_data_match(
        self,
        id: int,
        name: str,
        input_field_mapping: dict,
        input_table: dict,
        match_target_id: int,
        output_table: dict,
        *,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        max_matches: int | None = ...,
        threshold: float | None = ...,
        archived: bool | None = ...,
        parent_id: int | None = ...,
    ) -> _ResponseEnhancementsPutCivisDataMatch:
        """Replace all attributes of this Civis Data Match Enhancement

        API URL: ``PUT /enhancements/civis-data-match/{id}``

        Parameters
        ----------
        id : int
            The ID for the enhancement.
        name : str
            The name of the enhancement job.
        input_field_mapping : dict
            The field (i.e., column) mapping for the input table. See
            https://api.civisanalytics.com/enhancements/field-mapping for a list of
            valid field types and descriptions. Each field type should be mapped to a
            string specifying a column name in the input table. For field types that
            support multiple values (e.g., the "phone" field), a list of column names
            can be provided (e.g., {"phone": ["home_phone", "mobile_phone"], ...}).
        input_table : dict
            - database_name : str
                The Redshift database name for the table.
            - schema : str
                The schema name for the table.
            - table : str
                The table name.
        match_target_id : int
            The ID of the Civis Data match target. See /match_targets for IDs.
        output_table : dict
            - database_name : str
                The Redshift database name for the table.
            - schema : str
                The schema name for the table.
            - table : str
                The table name.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        max_matches : int, optional
            The maximum number of matches per record in the input table to return. Must
            be between 0 and 10. 0 returns all matches.
        threshold : float (float), optional
            The score threshold (between 0 and 1). Matches below this threshold will
            not be returned. The default value is 0.5.
        archived : bool, optional
            Whether the Civis Data Match Job has been archived.
        parent_id : int, optional
            Parent ID that triggers this enhancement.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - input_field_mapping : :class:`civis.Response`
                The field (i.e., column) mapping for the input table. See
                https://api.civisanalytics.com/enhancements/field-mapping for a list of
                valid field types and descriptions. Each field type should be mapped to
                a string specifying a column name in the input table. For field types
                that support multiple values (e.g., the "phone" field), a list of
                column names can be provided (e.g., {"phone": ["home_phone",
                "mobile_phone"], ...}).
            - input_table : :class:`civis.Response`
                - database_name : str
                    The Redshift database name for the table.
                - schema : str
                    The schema name for the table.
                - table : str
                    The table name.
            - match_target_id : int
                The ID of the Civis Data match target. See /match_targets for IDs.
            - output_table : :class:`civis.Response`
                - database_name : str
                    The Redshift database name for the table.
                - schema : str
                    The schema name for the table.
                - table : str
                    The table name.
            - max_matches : int
                The maximum number of matches per record in the input table to return.
                Must be between 0 and 10. 0 returns all matches.
            - threshold : float (float)
                The score threshold (between 0 and 1). Matches below this threshold
                will not be returned. The default value is 0.5.
            - archived : bool
                Whether the Civis Data Match Job has been archived.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - parent_id : int
                Parent ID that triggers this enhancement.
        """
        ...

    def patch_civis_data_match(
        self,
        id: int,
        *,
        name: str | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        input_field_mapping: dict | None = ...,
        input_table: dict | None = ...,
        match_target_id: int | None = ...,
        output_table: dict | None = ...,
        max_matches: int | None = ...,
        threshold: float | None = ...,
        archived: bool | None = ...,
        parent_id: int | None = ...,
    ) -> _ResponseEnhancementsPatchCivisDataMatch:
        """Update some attributes of this Civis Data Match Enhancement

        API URL: ``PATCH /enhancements/civis-data-match/{id}``

        Parameters
        ----------
        id : int
            The ID for the enhancement.
        name : str, optional
            The name of the enhancement job.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        input_field_mapping : dict, optional
            The field (i.e., column) mapping for the input table. See
            https://api.civisanalytics.com/enhancements/field-mapping for a list of
            valid field types and descriptions. Each field type should be mapped to a
            string specifying a column name in the input table. For field types that
            support multiple values (e.g., the "phone" field), a list of column names
            can be provided (e.g., {"phone": ["home_phone", "mobile_phone"], ...}).
        input_table : dict, optional
            - database_name : str
                The Redshift database name for the table.
            - schema : str
                The schema name for the table.
            - table : str
                The table name.
        match_target_id : int, optional
            The ID of the Civis Data match target. See /match_targets for IDs.
        output_table : dict, optional
            - database_name : str
                The Redshift database name for the table.
            - schema : str
                The schema name for the table.
            - table : str
                The table name.
        max_matches : int, optional
            The maximum number of matches per record in the input table to return. Must
            be between 0 and 10. 0 returns all matches.
        threshold : float (float), optional
            The score threshold (between 0 and 1). Matches below this threshold will
            not be returned. The default value is 0.5.
        archived : bool, optional
            Whether the Civis Data Match Job has been archived.
        parent_id : int, optional
            Parent ID that triggers this enhancement.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - input_field_mapping : :class:`civis.Response`
                The field (i.e., column) mapping for the input table. See
                https://api.civisanalytics.com/enhancements/field-mapping for a list of
                valid field types and descriptions. Each field type should be mapped to
                a string specifying a column name in the input table. For field types
                that support multiple values (e.g., the "phone" field), a list of
                column names can be provided (e.g., {"phone": ["home_phone",
                "mobile_phone"], ...}).
            - input_table : :class:`civis.Response`
                - database_name : str
                    The Redshift database name for the table.
                - schema : str
                    The schema name for the table.
                - table : str
                    The table name.
            - match_target_id : int
                The ID of the Civis Data match target. See /match_targets for IDs.
            - output_table : :class:`civis.Response`
                - database_name : str
                    The Redshift database name for the table.
                - schema : str
                    The schema name for the table.
                - table : str
                    The table name.
            - max_matches : int
                The maximum number of matches per record in the input table to return.
                Must be between 0 and 10. 0 returns all matches.
            - threshold : float (float)
                The score threshold (between 0 and 1). Matches below this threshold
                will not be returned. The default value is 0.5.
            - archived : bool
                Whether the Civis Data Match Job has been archived.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - parent_id : int
                Parent ID that triggers this enhancement.
        """
        ...

    def post_civis_data_match_clone(
        self,
        id: int,
        *,
        clone_schedule: bool | None = ...,
        clone_triggers: bool | None = ...,
        clone_notifications: bool | None = ...,
    ) -> _ResponseEnhancementsPostCivisDataMatchClone:
        """Clone this Civis Data Match Enhancement

        API URL: ``POST /enhancements/civis-data-match/{id}/clone``

        Parameters
        ----------
        id : int
            The ID for the enhancement.
        clone_schedule : bool, optional
            If true, also copy the schedule to the new enhancement.
        clone_triggers : bool, optional
            If true, also copy the triggers to the new enhancement.
        clone_notifications : bool, optional
            If true, also copy the notifications to the new enhancement.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - input_field_mapping : :class:`civis.Response`
                The field (i.e., column) mapping for the input table. See
                https://api.civisanalytics.com/enhancements/field-mapping for a list of
                valid field types and descriptions. Each field type should be mapped to
                a string specifying a column name in the input table. For field types
                that support multiple values (e.g., the "phone" field), a list of
                column names can be provided (e.g., {"phone": ["home_phone",
                "mobile_phone"], ...}).
            - input_table : :class:`civis.Response`
                - database_name : str
                    The Redshift database name for the table.
                - schema : str
                    The schema name for the table.
                - table : str
                    The table name.
            - match_target_id : int
                The ID of the Civis Data match target. See /match_targets for IDs.
            - output_table : :class:`civis.Response`
                - database_name : str
                    The Redshift database name for the table.
                - schema : str
                    The schema name for the table.
                - table : str
                    The table name.
            - max_matches : int
                The maximum number of matches per record in the input table to return.
                Must be between 0 and 10. 0 returns all matches.
            - threshold : float (float)
                The score threshold (between 0 and 1). Matches below this threshold
                will not be returned. The default value is 0.5.
            - archived : bool
                Whether the Civis Data Match Job has been archived.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - parent_id : int
                Parent ID that triggers this enhancement.
        """
        ...

    def post_civis_data_match_runs(
        self,
        id: int,
    ) -> _ResponseEnhancementsPostCivisDataMatchRuns:
        """Start a run

        API URL: ``POST /enhancements/civis-data-match/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Civis Data Match job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - civis_data_match_id : int
                The ID of the Civis Data Match job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def list_civis_data_match_runs(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseEnhancementsListCivisDataMatchRuns]:
        """List runs for the given Civis Data Match job

        API URL: ``GET /enhancements/civis-data-match/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Civis Data Match job.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the run.
            - civis_data_match_id : int
                The ID of the Civis Data Match job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def get_civis_data_match_runs(
        self,
        id: int,
        run_id: int,
    ) -> _ResponseEnhancementsGetCivisDataMatchRuns:
        """Check status of a run

        API URL: ``GET /enhancements/civis-data-match/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Civis Data Match job.
        run_id : int
            The ID of the run.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - civis_data_match_id : int
                The ID of the Civis Data Match job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def delete_civis_data_match_runs(
        self,
        id: int,
        run_id: int,
    ) -> Response:
        """Cancel a run

        API URL: ``DELETE /enhancements/civis-data-match/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Civis Data Match job.
        run_id : int
            The ID of the run.

        Returns
        -------
        None
            Response code 202: success
        """
        ...

    def list_civis_data_match_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseEnhancementsListCivisDataMatchRunsLogs]:
        """Get the logs for a run

        API URL: ``GET /enhancements/civis-data-match/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the Civis Data Match job.
        run_id : int
            The ID of the run.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def post_civis_data_match_cancel(
        self,
        id: int,
    ) -> _ResponseEnhancementsPostCivisDataMatchCancel:
        """Cancel a run

        API URL: ``POST /enhancements/civis-data-match/{id}/cancel``

        Parameters
        ----------
        id : int
            The ID of the job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - state : str
                The state of the run, one of 'queued', 'running' or 'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
        """
        ...

    def list_civis_data_match_runs_outputs(
        self,
        id: int,
        run_id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseEnhancementsListCivisDataMatchRunsOutputs]:
        """List the outputs for a run

        API URL: ``GET /enhancements/civis-data-match/{id}/runs/{run_id}/outputs``

        Parameters
        ----------
        id : int
            The ID of the job.
        run_id : int
            The ID of the run.
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to created_at. Must be
            one of: created_at, id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - object_type : str
                The type of the output. Valid values are File, Table, Report, Project,
                Credential, or JSONValue
            - object_id : int
                The ID of the output.
            - name : str
                The name of the output.
            - link : str
                The hypermedia link to the output.
            - value : object
        """
        ...

    def list_civis_data_match_shares(
        self,
        id: int,
    ) -> List[_ResponseEnhancementsListCivisDataMatchShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /enhancements/civis-data-match/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_civis_data_match_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseEnhancementsPutCivisDataMatchSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /enhancements/civis-data-match/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_civis_data_match_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /enhancements/civis-data-match/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_civis_data_match_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseEnhancementsPutCivisDataMatchSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /enhancements/civis-data-match/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_civis_data_match_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /enhancements/civis-data-match/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_civis_data_match_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseEnhancementsListCivisDataMatchDependencies]:
        """List dependent objects for this object

        API URL: ``GET /enhancements/civis-data-match/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_civis_data_match_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseEnhancementsPutCivisDataMatchTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /enhancements/civis-data-match/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def put_civis_data_match_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseEnhancementsPutCivisDataMatchArchive:
        """Update the archive status of this object

        API URL: ``PUT /enhancements/civis-data-match/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - input_field_mapping : :class:`civis.Response`
                The field (i.e., column) mapping for the input table. See
                https://api.civisanalytics.com/enhancements/field-mapping for a list of
                valid field types and descriptions. Each field type should be mapped to
                a string specifying a column name in the input table. For field types
                that support multiple values (e.g., the "phone" field), a list of
                column names can be provided (e.g., {"phone": ["home_phone",
                "mobile_phone"], ...}).
            - input_table : :class:`civis.Response`
                - database_name : str
                    The Redshift database name for the table.
                - schema : str
                    The schema name for the table.
                - table : str
                    The table name.
            - match_target_id : int
                The ID of the Civis Data match target. See /match_targets for IDs.
            - output_table : :class:`civis.Response`
                - database_name : str
                    The Redshift database name for the table.
                - schema : str
                    The schema name for the table.
                - table : str
                    The table name.
            - max_matches : int
                The maximum number of matches per record in the input table to return.
                Must be between 0 and 10. 0 returns all matches.
            - threshold : float (float)
                The score threshold (between 0 and 1). Matches below this threshold
                will not be returned. The default value is 0.5.
            - archived : bool
                Whether the Civis Data Match Job has been archived.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - parent_id : int
                Parent ID that triggers this enhancement.
        """
        ...

    def list_civis_data_match_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseEnhancementsListCivisDataMatchProjects]:
        """List the projects a Civis Data Match Enhancement belongs to

        API URL: ``GET /enhancements/civis-data-match/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the Civis Data Match Enhancement.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_civis_data_match_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a Civis Data Match Enhancement to a project

        API URL: ``PUT /enhancements/civis-data-match/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Civis Data Match Enhancement.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_civis_data_match_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a Civis Data Match Enhancement from a project

        API URL: ``DELETE /enhancements/civis-data-match/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Civis Data Match Enhancement.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_identity_resolution(
        self,
        *,
        archived: str | None = ...,
        status: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseEnhancementsListIdentityResolution]:
        """List Identity Resolution Enhancements

        API URL: ``GET /enhancements/identity-resolution``

        Parameters
        ----------
        archived : str, optional
            The archival status of the requested item(s).
        status : str, optional
            If specified, returns items with one of these statuses. It accepts a comma-
            separated list, possible values are 'running', 'failed', 'succeeded',
            'idle', 'scheduled'.
        limit : int, optional
            Number of results to return. Defaults to 50. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to updated_at. Must be
            one of: updated_at, created_at, last_run_updated_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - archived : str
                The archival status of the requested item(s).
            - sources : List[:class:`civis.Response`]
                The source(s) to resolve via a run of this job.

                - name : str
                    A user-specified name for the source.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
                - sample_records_query : str
                    A SQL query to produce a sample of records to inspect.
                - expand_cluster_query : str
                    A customizable query to view PII associated with resolved ids.
                - run_metrics : :class:`civis.Response`
                    - num_records : int
                        The number of input records for this run.
                    - unique_ids : int
                        The number of distinct unique IDs in the input records for this
                        run.
                    - unique_deduplicated_ids : int
                        The number of resolved IDs associated with more than one unique
                        ID in the input.
                    - max_cluster_size : int
                        The number of records in the largest cluster of resolved IDs.
                    - avg_cluster_size : float (float)
                        The average number of records with the same resolved ID.
                    - cluster_size_frequencies : :class:`civis.Response`
                        A mapping from numbers of records with the same resolved ID
                        (i.e., sizes of clusters) to numbers of such clusters. For
                        example, if there were 10 clusters with 2 records each, 2 would
                        be a key in the mapping, and 10 would be its value.
        """
        ...

    def post_identity_resolution(
        self,
        name: str,
        sources: List[dict],
        *,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        threshold: float | None = ...,
        match_target_id: int | None = ...,
        enforced_links: List[dict] | None = ...,
        customer_graph: dict | None = ...,
        golden_table: dict | None = ...,
        link_scores: dict | None = ...,
        legacy_id: int | None = ...,
    ) -> _ResponseEnhancementsPostIdentityResolution:
        """Create an Identity Resolution Enhancement

        API URL: ``POST /enhancements/identity-resolution``

        Parameters
        ----------
        name : str
            The name of the enhancement job.
        sources : List[dict]
            The source(s) to resolve via a run of this job.

            - name : str
                A user-specified name for the source.
            - description : str
                A description of the source.
            - database_name : str
                The name of the source database.
            - schema_name : str
                The name of the source schema.
            - table_name : str
                The name of the source table.
            - field_mapping : dict
                A mapping of PII fields to columns in this table. Valid keys are
                primary_key, first_name, middle_name, last_name, gender, phone, email,
                birth_date, birth_year, birth_month, birth_day, house_number, street,
                unit, full_address, city, state, state_code, zip, lat, lon, and
                name_suffix
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        threshold : float (float), optional
            A value that determines the extent to which similar records get assigned
            the same resolved ID. Must be within 0.5 and 1, inclusive. Defaults to 0.8
            if unspecified.Higher values may result in fewer cases where records about
            different individuals erroneously receive the same resolved ID, but also
            more more cases where records about the same individual receive different
            resolved IDs.
        match_target_id : int, optional
            The ID of the Civis Data (Custom) match target. See /match_targets for IDs.
        enforced_links : List[dict], optional
            A specification of related columns in different sources. The IDR tool will
            ensure that records with the same values in the specified columns receive
            the same Resolved ID.

            - source1 : str
                Name of the first source. Must be defined in Sources list.
            - source1_join_col : str
                Column from the first source to join on.
            - source2 : str
                Name of the second source. Must be defined in Sources list
            - source2_join_col : str
                Column from the second source to join on.
        customer_graph : dict, optional
            - database_name : str
                The name of the destination database.
            - schema_name : str
                The name of the destination schema.
            - table_name : str
                The name of the destination table.
        golden_table : dict, optional
            - database_name : str
                The name of the destination database.
            - schema_name : str
                The name of the destination schema.
            - table_name : str
                The name of the destination table.
            - fields : List[dict]
                - field_name : str
                    The name of the field. Must be one of: first_name, middle_name,
                    last_name, name_suffix, email, phone, birth_month, birth_day,
                    birth_year, gender, address, house_number, street, unit, city,
                    state_code, and zip.
                - rule_type : str
                    One of ["automatic", "preferred_source"]. Determines how the system
                    will choose the value for a record. "automatic" will use the most
                    frequent well-formatted value. "preferred_source" allows the user
                    to prioritize values from particular sources over others.
                - source_preferences : List[dict]
                    Rank order for sources, when rule_type is "preferred_source".

                    - source_name : str
                        The name of the source.
                    - ranking : int
                        How preferred this source is for the given field. Rankings are
                        zero-indexed and lower rank values are preferred to higher
                        ones.
        link_scores : dict, optional
            - database_name : str
                The name of the destination database.
            - schema_name : str
                The name of the destination schema.
            - table_name : str
                The name of the destination table.
        legacy_id : int, optional
            ID of this pipeline in the legacy IDR service application.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - threshold : float (float)
                A value that determines the extent to which similar records get
                assigned the same resolved ID. Must be within 0.5 and 1, inclusive.
                Defaults to 0.8 if unspecified.Higher values may result in fewer cases
                where records about different individuals erroneously receive the same
                resolved ID, but also more more cases where records about the same
                individual receive different resolved IDs.
            - sources : List[:class:`civis.Response`]
                The source(s) to resolve via a run of this job.

                - name : str
                    A user-specified name for the source.
                - description : str
                    A description of the source.
                - database_name : str
                    The name of the source database.
                - schema_name : str
                    The name of the source schema.
                - table_name : str
                    The name of the source table.
                - field_mapping : :class:`civis.Response`
                    A mapping of PII fields to columns in this table. Valid keys are
                    primary_key, first_name, middle_name, last_name, gender, phone,
                    email, birth_date, birth_year, birth_month, birth_day,
                    house_number, street, unit, full_address, city, state, state_code,
                    zip, lat, lon, and name_suffix
            - match_target_id : int
                The ID of the Civis Data (Custom) match target. See /match_targets for
                IDs.
            - enforced_links : List[:class:`civis.Response`]
                A specification of related columns in different sources. The IDR tool
                will ensure that records with the same values in the specified columns
                receive the same Resolved ID.

                - source1 : str
                    Name of the first source. Must be defined in Sources list.
                - source1_join_col : str
                    Column from the first source to join on.
                - source2 : str
                    Name of the second source. Must be defined in Sources list
                - source2_join_col : str
                    Column from the second source to join on.
            - customer_graph : :class:`civis.Response`
                - database_name : str
                    The name of the destination database.
                - schema_name : str
                    The name of the destination schema.
                - table_name : str
                    The name of the destination table.
            - golden_table : :class:`civis.Response`
                - database_name : str
                    The name of the destination database.
                - schema_name : str
                    The name of the destination schema.
                - table_name : str
                    The name of the destination table.
                - fields : List[:class:`civis.Response`]
                    - field_name : str
                        The name of the field. Must be one of: first_name, middle_name,
                        last_name, name_suffix, email, phone, birth_month, birth_day,
                        birth_year, gender, address, house_number, street, unit, city,
                        state_code, and zip.
                    - rule_type : str
                        One of ["automatic", "preferred_source"]. Determines how the
                        system will choose the value for a record. "automatic" will use
                        the most frequent well-formatted value. "preferred_source"
                        allows the user to prioritize values from particular sources
                        over others.
                    - source_preferences : List[:class:`civis.Response`]
                        Rank order for sources, when rule_type is "preferred_source".

                        - source_name : str
                            The name of the source.
                        - ranking : int
                            How preferred this source is for the given field. Rankings
                            are zero-indexed and lower rank values are preferred to
                            higher ones.
            - link_scores : :class:`civis.Response`
                - database_name : str
                    The name of the destination database.
                - schema_name : str
                    The name of the destination schema.
                - table_name : str
                    The name of the destination table.
            - legacy_id : int
                ID of this pipeline in the legacy IDR service application.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
                - config : str
                    How the Identity Resolution job was configured for this run.
                - sample_records_query : str
                    A SQL query to produce a sample of records to inspect.
                - expand_cluster_query : str
                    A customizable query to view PII associated with resolved ids.
                - run_metrics : :class:`civis.Response`
                    - num_records : int
                        The number of input records for this run.
                    - unique_ids : int
                        The number of distinct unique IDs in the input records for this
                        run.
                    - unique_deduplicated_ids : int
                        The number of resolved IDs associated with more than one unique
                        ID in the input.
                    - max_cluster_size : int
                        The number of records in the largest cluster of resolved IDs.
                    - avg_cluster_size : float (float)
                        The average number of records with the same resolved ID.
                    - cluster_size_frequencies : :class:`civis.Response`
                        A mapping from numbers of records with the same resolved ID
                        (i.e., sizes of clusters) to numbers of such clusters. For
                        example, if there were 10 clusters with 2 records each, 2 would
                        be a key in the mapping, and 10 would be its value.
                - error_section : str
                    If there was a failure, this will denote which section of the
                    Identity Resolution job failed. One of: data_preparation,
                    compute_setup or data_processing.
        """
        ...

    def put_identity_resolution(
        self,
        id: int,
        name: str,
        sources: List[dict],
        *,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        threshold: float | None = ...,
        match_target_id: int | None = ...,
        enforced_links: List[dict] | None = ...,
        customer_graph: dict | None = ...,
        golden_table: dict | None = ...,
        link_scores: dict | None = ...,
    ) -> _ResponseEnhancementsPutIdentityResolution:
        """Replace all attributes of this Identity Resolution Enhancement

        API URL: ``PUT /enhancements/identity-resolution/{id}``

        Parameters
        ----------
        id : int
            The ID for the enhancement.
        name : str
            The name of the enhancement job.
        sources : List[dict]
            The source(s) to resolve via a run of this job.

            - name : str
                A user-specified name for the source.
            - description : str
                A description of the source.
            - database_name : str
                The name of the source database.
            - schema_name : str
                The name of the source schema.
            - table_name : str
                The name of the source table.
            - field_mapping : dict
                A mapping of PII fields to columns in this table. Valid keys are
                primary_key, first_name, middle_name, last_name, gender, phone, email,
                birth_date, birth_year, birth_month, birth_day, house_number, street,
                unit, full_address, city, state, state_code, zip, lat, lon, and
                name_suffix
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        threshold : float (float), optional
            A value that determines the extent to which similar records get assigned
            the same resolved ID. Must be within 0.5 and 1, inclusive. Defaults to 0.8
            if unspecified.Higher values may result in fewer cases where records about
            different individuals erroneously receive the same resolved ID, but also
            more more cases where records about the same individual receive different
            resolved IDs.
        match_target_id : int, optional
            The ID of the Civis Data (Custom) match target. See /match_targets for IDs.
        enforced_links : List[dict], optional
            A specification of related columns in different sources. The IDR tool will
            ensure that records with the same values in the specified columns receive
            the same Resolved ID.

            - source1 : str
                Name of the first source. Must be defined in Sources list.
            - source1_join_col : str
                Column from the first source to join on.
            - source2 : str
                Name of the second source. Must be defined in Sources list
            - source2_join_col : str
                Column from the second source to join on.
        customer_graph : dict, optional
            - database_name : str
                The name of the destination database.
            - schema_name : str
                The name of the destination schema.
            - table_name : str
                The name of the destination table.
        golden_table : dict, optional
            - database_name : str
                The name of the destination database.
            - schema_name : str
                The name of the destination schema.
            - table_name : str
                The name of the destination table.
            - fields : List[dict]
                - field_name : str
                    The name of the field. Must be one of: first_name, middle_name,
                    last_name, name_suffix, email, phone, birth_month, birth_day,
                    birth_year, gender, address, house_number, street, unit, city,
                    state_code, and zip.
                - rule_type : str
                    One of ["automatic", "preferred_source"]. Determines how the system
                    will choose the value for a record. "automatic" will use the most
                    frequent well-formatted value. "preferred_source" allows the user
                    to prioritize values from particular sources over others.
                - source_preferences : List[dict]
                    Rank order for sources, when rule_type is "preferred_source".

                    - source_name : str
                        The name of the source.
                    - ranking : int
                        How preferred this source is for the given field. Rankings are
                        zero-indexed and lower rank values are preferred to higher
                        ones.
        link_scores : dict, optional
            - database_name : str
                The name of the destination database.
            - schema_name : str
                The name of the destination schema.
            - table_name : str
                The name of the destination table.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - threshold : float (float)
                A value that determines the extent to which similar records get
                assigned the same resolved ID. Must be within 0.5 and 1, inclusive.
                Defaults to 0.8 if unspecified.Higher values may result in fewer cases
                where records about different individuals erroneously receive the same
                resolved ID, but also more more cases where records about the same
                individual receive different resolved IDs.
            - sources : List[:class:`civis.Response`]
                The source(s) to resolve via a run of this job.

                - name : str
                    A user-specified name for the source.
                - description : str
                    A description of the source.
                - database_name : str
                    The name of the source database.
                - schema_name : str
                    The name of the source schema.
                - table_name : str
                    The name of the source table.
                - field_mapping : :class:`civis.Response`
                    A mapping of PII fields to columns in this table. Valid keys are
                    primary_key, first_name, middle_name, last_name, gender, phone,
                    email, birth_date, birth_year, birth_month, birth_day,
                    house_number, street, unit, full_address, city, state, state_code,
                    zip, lat, lon, and name_suffix
            - match_target_id : int
                The ID of the Civis Data (Custom) match target. See /match_targets for
                IDs.
            - enforced_links : List[:class:`civis.Response`]
                A specification of related columns in different sources. The IDR tool
                will ensure that records with the same values in the specified columns
                receive the same Resolved ID.

                - source1 : str
                    Name of the first source. Must be defined in Sources list.
                - source1_join_col : str
                    Column from the first source to join on.
                - source2 : str
                    Name of the second source. Must be defined in Sources list
                - source2_join_col : str
                    Column from the second source to join on.
            - customer_graph : :class:`civis.Response`
                - database_name : str
                    The name of the destination database.
                - schema_name : str
                    The name of the destination schema.
                - table_name : str
                    The name of the destination table.
            - golden_table : :class:`civis.Response`
                - database_name : str
                    The name of the destination database.
                - schema_name : str
                    The name of the destination schema.
                - table_name : str
                    The name of the destination table.
                - fields : List[:class:`civis.Response`]
                    - field_name : str
                        The name of the field. Must be one of: first_name, middle_name,
                        last_name, name_suffix, email, phone, birth_month, birth_day,
                        birth_year, gender, address, house_number, street, unit, city,
                        state_code, and zip.
                    - rule_type : str
                        One of ["automatic", "preferred_source"]. Determines how the
                        system will choose the value for a record. "automatic" will use
                        the most frequent well-formatted value. "preferred_source"
                        allows the user to prioritize values from particular sources
                        over others.
                    - source_preferences : List[:class:`civis.Response`]
                        Rank order for sources, when rule_type is "preferred_source".

                        - source_name : str
                            The name of the source.
                        - ranking : int
                            How preferred this source is for the given field. Rankings
                            are zero-indexed and lower rank values are preferred to
                            higher ones.
            - link_scores : :class:`civis.Response`
                - database_name : str
                    The name of the destination database.
                - schema_name : str
                    The name of the destination schema.
                - table_name : str
                    The name of the destination table.
            - legacy_id : int
                ID of this pipeline in the legacy IDR service application.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
                - config : str
                    How the Identity Resolution job was configured for this run.
                - sample_records_query : str
                    A SQL query to produce a sample of records to inspect.
                - expand_cluster_query : str
                    A customizable query to view PII associated with resolved ids.
                - run_metrics : :class:`civis.Response`
                    - num_records : int
                        The number of input records for this run.
                    - unique_ids : int
                        The number of distinct unique IDs in the input records for this
                        run.
                    - unique_deduplicated_ids : int
                        The number of resolved IDs associated with more than one unique
                        ID in the input.
                    - max_cluster_size : int
                        The number of records in the largest cluster of resolved IDs.
                    - avg_cluster_size : float (float)
                        The average number of records with the same resolved ID.
                    - cluster_size_frequencies : :class:`civis.Response`
                        A mapping from numbers of records with the same resolved ID
                        (i.e., sizes of clusters) to numbers of such clusters. For
                        example, if there were 10 clusters with 2 records each, 2 would
                        be a key in the mapping, and 10 would be its value.
                - error_section : str
                    If there was a failure, this will denote which section of the
                    Identity Resolution job failed. One of: data_preparation,
                    compute_setup or data_processing.
        """
        ...

    def patch_identity_resolution(
        self,
        id: int,
        *,
        name: str | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        threshold: float | None = ...,
        sources: List[dict] | None = ...,
        match_target_id: int | None = ...,
        enforced_links: List[dict] | None = ...,
        customer_graph: dict | None = ...,
        golden_table: dict | None = ...,
        link_scores: dict | None = ...,
    ) -> _ResponseEnhancementsPatchIdentityResolution:
        """Update some attributes of this Identity Resolution Enhancement

        API URL: ``PATCH /enhancements/identity-resolution/{id}``

        Parameters
        ----------
        id : int
            The ID for the enhancement.
        name : str, optional
            The name of the enhancement job.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        threshold : float (float), optional
            A value that determines the extent to which similar records get assigned
            the same resolved ID. Must be within 0.5 and 1, inclusive. Defaults to 0.8
            if unspecified.Higher values may result in fewer cases where records about
            different individuals erroneously receive the same resolved ID, but also
            more more cases where records about the same individual receive different
            resolved IDs.
        sources : List[dict], optional
            The source(s) to resolve via a run of this job.

            - name : str
                A user-specified name for the source.
            - description : str
                A description of the source.
            - database_name : str
                The name of the source database.
            - schema_name : str
                The name of the source schema.
            - table_name : str
                The name of the source table.
            - field_mapping : dict
                A mapping of PII fields to columns in this table. Valid keys are
                primary_key, first_name, middle_name, last_name, gender, phone, email,
                birth_date, birth_year, birth_month, birth_day, house_number, street,
                unit, full_address, city, state, state_code, zip, lat, lon, and
                name_suffix
        match_target_id : int, optional
            The ID of the Civis Data (Custom) match target. See /match_targets for IDs.
        enforced_links : List[dict], optional
            A specification of related columns in different sources. The IDR tool will
            ensure that records with the same values in the specified columns receive
            the same Resolved ID.

            - source1 : str
                Name of the first source. Must be defined in Sources list.
            - source1_join_col : str
                Column from the first source to join on.
            - source2 : str
                Name of the second source. Must be defined in Sources list
            - source2_join_col : str
                Column from the second source to join on.
        customer_graph : dict, optional
            - database_name : str
                The name of the destination database.
            - schema_name : str
                The name of the destination schema.
            - table_name : str
                The name of the destination table.
        golden_table : dict, optional
            - database_name : str
                The name of the destination database.
            - schema_name : str
                The name of the destination schema.
            - table_name : str
                The name of the destination table.
            - fields : List[dict]
                - field_name : str
                    The name of the field. Must be one of: first_name, middle_name,
                    last_name, name_suffix, email, phone, birth_month, birth_day,
                    birth_year, gender, address, house_number, street, unit, city,
                    state_code, and zip.
                - rule_type : str
                    One of ["automatic", "preferred_source"]. Determines how the system
                    will choose the value for a record. "automatic" will use the most
                    frequent well-formatted value. "preferred_source" allows the user
                    to prioritize values from particular sources over others.
                - source_preferences : List[dict]
                    Rank order for sources, when rule_type is "preferred_source".

                    - source_name : str
                        The name of the source.
                    - ranking : int
                        How preferred this source is for the given field. Rankings are
                        zero-indexed and lower rank values are preferred to higher
                        ones.
        link_scores : dict, optional
            - database_name : str
                The name of the destination database.
            - schema_name : str
                The name of the destination schema.
            - table_name : str
                The name of the destination table.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - threshold : float (float)
                A value that determines the extent to which similar records get
                assigned the same resolved ID. Must be within 0.5 and 1, inclusive.
                Defaults to 0.8 if unspecified.Higher values may result in fewer cases
                where records about different individuals erroneously receive the same
                resolved ID, but also more more cases where records about the same
                individual receive different resolved IDs.
            - sources : List[:class:`civis.Response`]
                The source(s) to resolve via a run of this job.

                - name : str
                    A user-specified name for the source.
                - description : str
                    A description of the source.
                - database_name : str
                    The name of the source database.
                - schema_name : str
                    The name of the source schema.
                - table_name : str
                    The name of the source table.
                - field_mapping : :class:`civis.Response`
                    A mapping of PII fields to columns in this table. Valid keys are
                    primary_key, first_name, middle_name, last_name, gender, phone,
                    email, birth_date, birth_year, birth_month, birth_day,
                    house_number, street, unit, full_address, city, state, state_code,
                    zip, lat, lon, and name_suffix
            - match_target_id : int
                The ID of the Civis Data (Custom) match target. See /match_targets for
                IDs.
            - enforced_links : List[:class:`civis.Response`]
                A specification of related columns in different sources. The IDR tool
                will ensure that records with the same values in the specified columns
                receive the same Resolved ID.

                - source1 : str
                    Name of the first source. Must be defined in Sources list.
                - source1_join_col : str
                    Column from the first source to join on.
                - source2 : str
                    Name of the second source. Must be defined in Sources list
                - source2_join_col : str
                    Column from the second source to join on.
            - customer_graph : :class:`civis.Response`
                - database_name : str
                    The name of the destination database.
                - schema_name : str
                    The name of the destination schema.
                - table_name : str
                    The name of the destination table.
            - golden_table : :class:`civis.Response`
                - database_name : str
                    The name of the destination database.
                - schema_name : str
                    The name of the destination schema.
                - table_name : str
                    The name of the destination table.
                - fields : List[:class:`civis.Response`]
                    - field_name : str
                        The name of the field. Must be one of: first_name, middle_name,
                        last_name, name_suffix, email, phone, birth_month, birth_day,
                        birth_year, gender, address, house_number, street, unit, city,
                        state_code, and zip.
                    - rule_type : str
                        One of ["automatic", "preferred_source"]. Determines how the
                        system will choose the value for a record. "automatic" will use
                        the most frequent well-formatted value. "preferred_source"
                        allows the user to prioritize values from particular sources
                        over others.
                    - source_preferences : List[:class:`civis.Response`]
                        Rank order for sources, when rule_type is "preferred_source".

                        - source_name : str
                            The name of the source.
                        - ranking : int
                            How preferred this source is for the given field. Rankings
                            are zero-indexed and lower rank values are preferred to
                            higher ones.
            - link_scores : :class:`civis.Response`
                - database_name : str
                    The name of the destination database.
                - schema_name : str
                    The name of the destination schema.
                - table_name : str
                    The name of the destination table.
            - legacy_id : int
                ID of this pipeline in the legacy IDR service application.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
                - config : str
                    How the Identity Resolution job was configured for this run.
                - sample_records_query : str
                    A SQL query to produce a sample of records to inspect.
                - expand_cluster_query : str
                    A customizable query to view PII associated with resolved ids.
                - run_metrics : :class:`civis.Response`
                    - num_records : int
                        The number of input records for this run.
                    - unique_ids : int
                        The number of distinct unique IDs in the input records for this
                        run.
                    - unique_deduplicated_ids : int
                        The number of resolved IDs associated with more than one unique
                        ID in the input.
                    - max_cluster_size : int
                        The number of records in the largest cluster of resolved IDs.
                    - avg_cluster_size : float (float)
                        The average number of records with the same resolved ID.
                    - cluster_size_frequencies : :class:`civis.Response`
                        A mapping from numbers of records with the same resolved ID
                        (i.e., sizes of clusters) to numbers of such clusters. For
                        example, if there were 10 clusters with 2 records each, 2 would
                        be a key in the mapping, and 10 would be its value.
                - error_section : str
                    If there was a failure, this will denote which section of the
                    Identity Resolution job failed. One of: data_preparation,
                    compute_setup or data_processing.
        """
        ...

    def get_identity_resolution(
        self,
        id: int,
        *,
        is_legacy_id: bool | None = ...,
    ) -> _ResponseEnhancementsGetIdentityResolution:
        """Get an Identity Resolution Enhancement

        API URL: ``GET /enhancements/identity-resolution/{id}``

        Parameters
        ----------
        id : int
            The ID for the enhancement.
        is_legacy_id : bool, optional
            Whether the given ID is for the Identity Resolution job in the legacy
            service app.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - threshold : float (float)
                A value that determines the extent to which similar records get
                assigned the same resolved ID. Must be within 0.5 and 1, inclusive.
                Defaults to 0.8 if unspecified.Higher values may result in fewer cases
                where records about different individuals erroneously receive the same
                resolved ID, but also more more cases where records about the same
                individual receive different resolved IDs.
            - sources : List[:class:`civis.Response`]
                The source(s) to resolve via a run of this job.

                - name : str
                    A user-specified name for the source.
                - description : str
                    A description of the source.
                - database_name : str
                    The name of the source database.
                - schema_name : str
                    The name of the source schema.
                - table_name : str
                    The name of the source table.
                - field_mapping : :class:`civis.Response`
                    A mapping of PII fields to columns in this table. Valid keys are
                    primary_key, first_name, middle_name, last_name, gender, phone,
                    email, birth_date, birth_year, birth_month, birth_day,
                    house_number, street, unit, full_address, city, state, state_code,
                    zip, lat, lon, and name_suffix
            - match_target_id : int
                The ID of the Civis Data (Custom) match target. See /match_targets for
                IDs.
            - enforced_links : List[:class:`civis.Response`]
                A specification of related columns in different sources. The IDR tool
                will ensure that records with the same values in the specified columns
                receive the same Resolved ID.

                - source1 : str
                    Name of the first source. Must be defined in Sources list.
                - source1_join_col : str
                    Column from the first source to join on.
                - source2 : str
                    Name of the second source. Must be defined in Sources list
                - source2_join_col : str
                    Column from the second source to join on.
            - customer_graph : :class:`civis.Response`
                - database_name : str
                    The name of the destination database.
                - schema_name : str
                    The name of the destination schema.
                - table_name : str
                    The name of the destination table.
            - golden_table : :class:`civis.Response`
                - database_name : str
                    The name of the destination database.
                - schema_name : str
                    The name of the destination schema.
                - table_name : str
                    The name of the destination table.
                - fields : List[:class:`civis.Response`]
                    - field_name : str
                        The name of the field. Must be one of: first_name, middle_name,
                        last_name, name_suffix, email, phone, birth_month, birth_day,
                        birth_year, gender, address, house_number, street, unit, city,
                        state_code, and zip.
                    - rule_type : str
                        One of ["automatic", "preferred_source"]. Determines how the
                        system will choose the value for a record. "automatic" will use
                        the most frequent well-formatted value. "preferred_source"
                        allows the user to prioritize values from particular sources
                        over others.
                    - source_preferences : List[:class:`civis.Response`]
                        Rank order for sources, when rule_type is "preferred_source".

                        - source_name : str
                            The name of the source.
                        - ranking : int
                            How preferred this source is for the given field. Rankings
                            are zero-indexed and lower rank values are preferred to
                            higher ones.
            - link_scores : :class:`civis.Response`
                - database_name : str
                    The name of the destination database.
                - schema_name : str
                    The name of the destination schema.
                - table_name : str
                    The name of the destination table.
            - legacy_id : int
                ID of this pipeline in the legacy IDR service application.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
                - config : str
                    How the Identity Resolution job was configured for this run.
                - sample_records_query : str
                    A SQL query to produce a sample of records to inspect.
                - expand_cluster_query : str
                    A customizable query to view PII associated with resolved ids.
                - run_metrics : :class:`civis.Response`
                    - num_records : int
                        The number of input records for this run.
                    - unique_ids : int
                        The number of distinct unique IDs in the input records for this
                        run.
                    - unique_deduplicated_ids : int
                        The number of resolved IDs associated with more than one unique
                        ID in the input.
                    - max_cluster_size : int
                        The number of records in the largest cluster of resolved IDs.
                    - avg_cluster_size : float (float)
                        The average number of records with the same resolved ID.
                    - cluster_size_frequencies : :class:`civis.Response`
                        A mapping from numbers of records with the same resolved ID
                        (i.e., sizes of clusters) to numbers of such clusters. For
                        example, if there were 10 clusters with 2 records each, 2 would
                        be a key in the mapping, and 10 would be its value.
                - error_section : str
                    If there was a failure, this will denote which section of the
                    Identity Resolution job failed. One of: data_preparation,
                    compute_setup or data_processing.
        """
        ...

    def post_identity_resolution_clone(
        self,
        id: int,
        *,
        clone_schedule: bool | None = ...,
        clone_triggers: bool | None = ...,
        clone_notifications: bool | None = ...,
    ) -> _ResponseEnhancementsPostIdentityResolutionClone:
        """Clone this Identity Resolution Enhancement

        API URL: ``POST /enhancements/identity-resolution/{id}/clone``

        Parameters
        ----------
        id : int
            The ID for the enhancement.
        clone_schedule : bool, optional
            If true, also copy the schedule to the new enhancement.
        clone_triggers : bool, optional
            If true, also copy the triggers to the new enhancement.
        clone_notifications : bool, optional
            If true, also copy the notifications to the new enhancement.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - threshold : float (float)
                A value that determines the extent to which similar records get
                assigned the same resolved ID. Must be within 0.5 and 1, inclusive.
                Defaults to 0.8 if unspecified.Higher values may result in fewer cases
                where records about different individuals erroneously receive the same
                resolved ID, but also more more cases where records about the same
                individual receive different resolved IDs.
            - sources : List[:class:`civis.Response`]
                The source(s) to resolve via a run of this job.

                - name : str
                    A user-specified name for the source.
                - description : str
                    A description of the source.
                - database_name : str
                    The name of the source database.
                - schema_name : str
                    The name of the source schema.
                - table_name : str
                    The name of the source table.
                - field_mapping : :class:`civis.Response`
                    A mapping of PII fields to columns in this table. Valid keys are
                    primary_key, first_name, middle_name, last_name, gender, phone,
                    email, birth_date, birth_year, birth_month, birth_day,
                    house_number, street, unit, full_address, city, state, state_code,
                    zip, lat, lon, and name_suffix
            - match_target_id : int
                The ID of the Civis Data (Custom) match target. See /match_targets for
                IDs.
            - enforced_links : List[:class:`civis.Response`]
                A specification of related columns in different sources. The IDR tool
                will ensure that records with the same values in the specified columns
                receive the same Resolved ID.

                - source1 : str
                    Name of the first source. Must be defined in Sources list.
                - source1_join_col : str
                    Column from the first source to join on.
                - source2 : str
                    Name of the second source. Must be defined in Sources list
                - source2_join_col : str
                    Column from the second source to join on.
            - customer_graph : :class:`civis.Response`
                - database_name : str
                    The name of the destination database.
                - schema_name : str
                    The name of the destination schema.
                - table_name : str
                    The name of the destination table.
            - golden_table : :class:`civis.Response`
                - database_name : str
                    The name of the destination database.
                - schema_name : str
                    The name of the destination schema.
                - table_name : str
                    The name of the destination table.
                - fields : List[:class:`civis.Response`]
                    - field_name : str
                        The name of the field. Must be one of: first_name, middle_name,
                        last_name, name_suffix, email, phone, birth_month, birth_day,
                        birth_year, gender, address, house_number, street, unit, city,
                        state_code, and zip.
                    - rule_type : str
                        One of ["automatic", "preferred_source"]. Determines how the
                        system will choose the value for a record. "automatic" will use
                        the most frequent well-formatted value. "preferred_source"
                        allows the user to prioritize values from particular sources
                        over others.
                    - source_preferences : List[:class:`civis.Response`]
                        Rank order for sources, when rule_type is "preferred_source".

                        - source_name : str
                            The name of the source.
                        - ranking : int
                            How preferred this source is for the given field. Rankings
                            are zero-indexed and lower rank values are preferred to
                            higher ones.
            - link_scores : :class:`civis.Response`
                - database_name : str
                    The name of the destination database.
                - schema_name : str
                    The name of the destination schema.
                - table_name : str
                    The name of the destination table.
            - legacy_id : int
                ID of this pipeline in the legacy IDR service application.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
                - config : str
                    How the Identity Resolution job was configured for this run.
                - sample_records_query : str
                    A SQL query to produce a sample of records to inspect.
                - expand_cluster_query : str
                    A customizable query to view PII associated with resolved ids.
                - run_metrics : :class:`civis.Response`
                    - num_records : int
                        The number of input records for this run.
                    - unique_ids : int
                        The number of distinct unique IDs in the input records for this
                        run.
                    - unique_deduplicated_ids : int
                        The number of resolved IDs associated with more than one unique
                        ID in the input.
                    - max_cluster_size : int
                        The number of records in the largest cluster of resolved IDs.
                    - avg_cluster_size : float (float)
                        The average number of records with the same resolved ID.
                    - cluster_size_frequencies : :class:`civis.Response`
                        A mapping from numbers of records with the same resolved ID
                        (i.e., sizes of clusters) to numbers of such clusters. For
                        example, if there were 10 clusters with 2 records each, 2 would
                        be a key in the mapping, and 10 would be its value.
                - error_section : str
                    If there was a failure, this will denote which section of the
                    Identity Resolution job failed. One of: data_preparation,
                    compute_setup or data_processing.
        """
        ...

    def post_identity_resolution_runs(
        self,
        id: int,
    ) -> _ResponseEnhancementsPostIdentityResolutionRuns:
        """Start a run

        API URL: ``POST /enhancements/identity-resolution/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Identity Resolution job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - identity_resolution_id : int
                The ID of the Identity Resolution job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - config : str
                How the Identity Resolution job was configured for this run.
            - sample_records_query : str
                A SQL query to produce a sample of records to inspect.
            - expand_cluster_query : str
                A customizable query to view PII associated with resolved ids.
            - run_metrics : :class:`civis.Response`
                - num_records : int
                    The number of input records for this run.
                - unique_ids : int
                    The number of distinct unique IDs in the input records for this
                    run.
                - unique_deduplicated_ids : int
                    The number of resolved IDs associated with more than one unique ID
                    in the input.
                - max_cluster_size : int
                    The number of records in the largest cluster of resolved IDs.
                - avg_cluster_size : float (float)
                    The average number of records with the same resolved ID.
                - cluster_size_frequencies : :class:`civis.Response`
                    A mapping from numbers of records with the same resolved ID (i.e.,
                    sizes of clusters) to numbers of such clusters. For example, if
                    there were 10 clusters with 2 records each, 2 would be a key in the
                    mapping, and 10 would be its value.
            - error_section : str
                If there was a failure, this will denote which section of the Identity
                Resolution job failed. One of: data_preparation, compute_setup or
                data_processing.
        """
        ...

    def list_identity_resolution_runs(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseEnhancementsListIdentityResolutionRuns]:
        """List runs for the given Identity Resolution job

        API URL: ``GET /enhancements/identity-resolution/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Identity Resolution job.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the run.
            - identity_resolution_id : int
                The ID of the Identity Resolution job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - sample_records_query : str
                A SQL query to produce a sample of records to inspect.
            - expand_cluster_query : str
                A customizable query to view PII associated with resolved ids.
            - run_metrics : :class:`civis.Response`
                - num_records : int
                    The number of input records for this run.
                - unique_ids : int
                    The number of distinct unique IDs in the input records for this
                    run.
                - unique_deduplicated_ids : int
                    The number of resolved IDs associated with more than one unique ID
                    in the input.
                - max_cluster_size : int
                    The number of records in the largest cluster of resolved IDs.
                - avg_cluster_size : float (float)
                    The average number of records with the same resolved ID.
                - cluster_size_frequencies : :class:`civis.Response`
                    A mapping from numbers of records with the same resolved ID (i.e.,
                    sizes of clusters) to numbers of such clusters. For example, if
                    there were 10 clusters with 2 records each, 2 would be a key in the
                    mapping, and 10 would be its value.
        """
        ...

    def get_identity_resolution_runs(
        self,
        id: int,
        run_id: int,
    ) -> _ResponseEnhancementsGetIdentityResolutionRuns:
        """Check status of a run

        API URL: ``GET /enhancements/identity-resolution/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Identity Resolution job.
        run_id : int
            The ID of the run.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - identity_resolution_id : int
                The ID of the Identity Resolution job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - config : str
                How the Identity Resolution job was configured for this run.
            - sample_records_query : str
                A SQL query to produce a sample of records to inspect.
            - expand_cluster_query : str
                A customizable query to view PII associated with resolved ids.
            - run_metrics : :class:`civis.Response`
                - num_records : int
                    The number of input records for this run.
                - unique_ids : int
                    The number of distinct unique IDs in the input records for this
                    run.
                - unique_deduplicated_ids : int
                    The number of resolved IDs associated with more than one unique ID
                    in the input.
                - max_cluster_size : int
                    The number of records in the largest cluster of resolved IDs.
                - avg_cluster_size : float (float)
                    The average number of records with the same resolved ID.
                - cluster_size_frequencies : :class:`civis.Response`
                    A mapping from numbers of records with the same resolved ID (i.e.,
                    sizes of clusters) to numbers of such clusters. For example, if
                    there were 10 clusters with 2 records each, 2 would be a key in the
                    mapping, and 10 would be its value.
            - error_section : str
                If there was a failure, this will denote which section of the Identity
                Resolution job failed. One of: data_preparation, compute_setup or
                data_processing.
        """
        ...

    def delete_identity_resolution_runs(
        self,
        id: int,
        run_id: int,
    ) -> Response:
        """Cancel a run

        API URL: ``DELETE /enhancements/identity-resolution/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Identity Resolution job.
        run_id : int
            The ID of the run.

        Returns
        -------
        None
            Response code 202: success
        """
        ...

    def list_identity_resolution_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseEnhancementsListIdentityResolutionRunsLogs]:
        """Get the logs for a run

        API URL: ``GET /enhancements/identity-resolution/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the Identity Resolution job.
        run_id : int
            The ID of the run.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def post_identity_resolution_cancel(
        self,
        id: int,
    ) -> _ResponseEnhancementsPostIdentityResolutionCancel:
        """Cancel a run

        API URL: ``POST /enhancements/identity-resolution/{id}/cancel``

        Parameters
        ----------
        id : int
            The ID of the job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - state : str
                The state of the run, one of 'queued', 'running' or 'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
        """
        ...

    def list_types(
        self,
    ) -> List[_ResponseEnhancementsListTypes]:
        """List available enhancement types

        API URL: ``GET /enhancements/types``

        Returns
        -------
        :class:`civis.ListResponse`
            - name : str
                The name of the type.
        """
        ...

    def list_field_mapping(
        self,
    ) -> List[_ResponseEnhancementsListFieldMapping]:
        """List the fields in a field mapping for Civis Data Match, Data Unification, and
        Table Deduplication jobs

        API URL: ``GET /enhancements/field-mapping``

        Returns
        -------
        :class:`civis.ListResponse`
            - field : str
                The name of the field.
            - description : str
                The description of the field.
        """
        ...

    def list(
        self,
        *,
        type: str | None = ...,
        author: str | None = ...,
        status: str | None = ...,
        archived: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseEnhancementsList]:
        """List Enhancements

        API URL: ``GET /enhancements``

        Parameters
        ----------
        type : str, optional
            If specified, return items of these types.
        author : str, optional
            If specified, return items from any of these authors. It accepts a comma-
            separated list of user IDs.
        status : str, optional
            If specified, returns items with one of these statuses. It accepts a comma-
            separated list, possible values are 'running', 'failed', 'succeeded',
            'idle', 'scheduled'.
        archived : str, optional
            The archival status of the requested item(s).
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to updated_at. Must be
            one of: updated_at, name, created_at, last_run.updated_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def post_cass_ncoa(
        self,
        name: str,
        source: dict,
        *,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        destination: dict | None = ...,
        column_mapping: dict | None = ...,
        use_default_column_mapping: bool | None = ...,
        perform_ncoa: bool | None = ...,
        ncoa_credential_id: int | None = ...,
        output_level: str | None = ...,
        limiting_sql: str | None = ...,
        batch_size: int | None = ...,
        parent_id: int | None = ...,
    ) -> _ResponseEnhancementsPostCassNcoa:
        """Create a CASS/NCOA Enhancement

        API URL: ``POST /enhancements/cass-ncoa``

        Parameters
        ----------
        name : str
            The name of the enhancement job.
        source : dict
            - database_table : dict
                - schema : str
                    The schema name of the source table.
                - table : str
                    The name of the source table.
                - remote_host_id : int
                    The ID of the database host for the table.
                - credential_id : int
                    The id of the credentials to be used when performing the
                    enhancement.
                - multipart_key : List[str]
                    The source table primary key.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        destination : dict, optional
            - database_table : dict
                - schema : str
                    The schema name for the output data.
                - table : str
                    The table name for the output data.
        column_mapping : dict, optional
            - address1 : str
                The first address line.
            - address2 : str
                The second address line.
            - city : str
                The city of an address.
            - state : str
                The state of an address.
            - zip : str
                The zip code of an address.
            - name : str
                The full name of the resident at this address. If needed, separate
                multiple columns with `+`, e.g. `first_name+last_name`
            - company : str
                The name of the company located at this address.
        use_default_column_mapping : bool, optional
            Defaults to true, where the existing column mapping on the input table will
            be used. If false, a custom column mapping must be provided.
        perform_ncoa : bool, optional
            Whether to update addresses for records matching the National Change of
            Address (NCOA) database.
        ncoa_credential_id : int, optional
            Credential to use when performing NCOA updates. Required if 'performNcoa'
            is true.
        output_level : str, optional
            The set of fields persisted by a CASS or NCOA enhancement.For CASS
            enhancements, one of 'cass' or 'all.'For NCOA enhancements, one of 'cass',
            'ncoa' , 'coalesced' or 'all'.By default, all fields will be returned.
        limiting_sql : str, optional
            The limiting SQL for the source table. "WHERE" should be omitted (e.g.
            state='IL').
        batch_size : int, optional
            The maximum number of records processed at a time. Note that this parameter
            is not available to all users.
        parent_id : int, optional
            Parent ID that triggers this enhancement.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - source : :class:`civis.Response`
                - database_table : :class:`civis.Response`
                    - schema : str
                        The schema name of the source table.
                    - table : str
                        The name of the source table.
                    - remote_host_id : int
                        The ID of the database host for the table.
                    - credential_id : int
                        The id of the credentials to be used when performing the
                        enhancement.
                    - multipart_key : List[str]
                        The source table primary key.
            - destination : :class:`civis.Response`
                - database_table : :class:`civis.Response`
                    - schema : str
                        The schema name for the output data.
                    - table : str
                        The table name for the output data.
            - column_mapping : :class:`civis.Response`
                - address1 : str
                    The first address line.
                - address2 : str
                    The second address line.
                - city : str
                    The city of an address.
                - state : str
                    The state of an address.
                - zip : str
                    The zip code of an address.
                - name : str
                    The full name of the resident at this address. If needed, separate
                    multiple columns with `+`, e.g. `first_name+last_name`
                - company : str
                    The name of the company located at this address.
            - use_default_column_mapping : bool
                Defaults to true, where the existing column mapping on the input table
                will be used. If false, a custom column mapping must be provided.
            - perform_ncoa : bool
                Whether to update addresses for records matching the National Change of
                Address (NCOA) database.
            - ncoa_credential_id : int
                Credential to use when performing NCOA updates. Required if
                'performNcoa' is true.
            - output_level : str
                The set of fields persisted by a CASS or NCOA enhancement.For CASS
                enhancements, one of 'cass' or 'all.'For NCOA enhancements, one of
                'cass', 'ncoa' , 'coalesced' or 'all'.By default, all fields will be
                returned.
            - limiting_sql : str
                The limiting SQL for the source table. "WHERE" should be omitted (e.g.
                state='IL').
            - batch_size : int
                The maximum number of records processed at a time. Note that this
                parameter is not available to all users.
            - archived : str
                The archival status of the requested item(s).
            - parent_id : int
                Parent ID that triggers this enhancement.
        """
        ...

    def get_cass_ncoa(
        self,
        id: int,
    ) -> _ResponseEnhancementsGetCassNcoa:
        """Get a CASS/NCOA Enhancement

        API URL: ``GET /enhancements/cass-ncoa/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - source : :class:`civis.Response`
                - database_table : :class:`civis.Response`
                    - schema : str
                        The schema name of the source table.
                    - table : str
                        The name of the source table.
                    - remote_host_id : int
                        The ID of the database host for the table.
                    - credential_id : int
                        The id of the credentials to be used when performing the
                        enhancement.
                    - multipart_key : List[str]
                        The source table primary key.
            - destination : :class:`civis.Response`
                - database_table : :class:`civis.Response`
                    - schema : str
                        The schema name for the output data.
                    - table : str
                        The table name for the output data.
            - column_mapping : :class:`civis.Response`
                - address1 : str
                    The first address line.
                - address2 : str
                    The second address line.
                - city : str
                    The city of an address.
                - state : str
                    The state of an address.
                - zip : str
                    The zip code of an address.
                - name : str
                    The full name of the resident at this address. If needed, separate
                    multiple columns with `+`, e.g. `first_name+last_name`
                - company : str
                    The name of the company located at this address.
            - use_default_column_mapping : bool
                Defaults to true, where the existing column mapping on the input table
                will be used. If false, a custom column mapping must be provided.
            - perform_ncoa : bool
                Whether to update addresses for records matching the National Change of
                Address (NCOA) database.
            - ncoa_credential_id : int
                Credential to use when performing NCOA updates. Required if
                'performNcoa' is true.
            - output_level : str
                The set of fields persisted by a CASS or NCOA enhancement.For CASS
                enhancements, one of 'cass' or 'all.'For NCOA enhancements, one of
                'cass', 'ncoa' , 'coalesced' or 'all'.By default, all fields will be
                returned.
            - limiting_sql : str
                The limiting SQL for the source table. "WHERE" should be omitted (e.g.
                state='IL').
            - batch_size : int
                The maximum number of records processed at a time. Note that this
                parameter is not available to all users.
            - archived : str
                The archival status of the requested item(s).
            - parent_id : int
                Parent ID that triggers this enhancement.
        """
        ...

    def put_cass_ncoa(
        self,
        id: int,
        name: str,
        source: dict,
        *,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        destination: dict | None = ...,
        column_mapping: dict | None = ...,
        use_default_column_mapping: bool | None = ...,
        perform_ncoa: bool | None = ...,
        ncoa_credential_id: int | None = ...,
        output_level: str | None = ...,
        limiting_sql: str | None = ...,
        batch_size: int | None = ...,
        parent_id: int | None = ...,
    ) -> _ResponseEnhancementsPutCassNcoa:
        """Replace all attributes of this CASS/NCOA Enhancement

        API URL: ``PUT /enhancements/cass-ncoa/{id}``

        Parameters
        ----------
        id : int
            The ID for the enhancement.
        name : str
            The name of the enhancement job.
        source : dict
            - database_table : dict
                - schema : str
                    The schema name of the source table.
                - table : str
                    The name of the source table.
                - remote_host_id : int
                    The ID of the database host for the table.
                - credential_id : int
                    The id of the credentials to be used when performing the
                    enhancement.
                - multipart_key : List[str]
                    The source table primary key.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        destination : dict, optional
            - database_table : dict
                - schema : str
                    The schema name for the output data.
                - table : str
                    The table name for the output data.
        column_mapping : dict, optional
            - address1 : str
                The first address line.
            - address2 : str
                The second address line.
            - city : str
                The city of an address.
            - state : str
                The state of an address.
            - zip : str
                The zip code of an address.
            - name : str
                The full name of the resident at this address. If needed, separate
                multiple columns with `+`, e.g. `first_name+last_name`
            - company : str
                The name of the company located at this address.
        use_default_column_mapping : bool, optional
            Defaults to true, where the existing column mapping on the input table will
            be used. If false, a custom column mapping must be provided.
        perform_ncoa : bool, optional
            Whether to update addresses for records matching the National Change of
            Address (NCOA) database.
        ncoa_credential_id : int, optional
            Credential to use when performing NCOA updates. Required if 'performNcoa'
            is true.
        output_level : str, optional
            The set of fields persisted by a CASS or NCOA enhancement.For CASS
            enhancements, one of 'cass' or 'all.'For NCOA enhancements, one of 'cass',
            'ncoa' , 'coalesced' or 'all'.By default, all fields will be returned.
        limiting_sql : str, optional
            The limiting SQL for the source table. "WHERE" should be omitted (e.g.
            state='IL').
        batch_size : int, optional
            The maximum number of records processed at a time. Note that this parameter
            is not available to all users.
        parent_id : int, optional
            Parent ID that triggers this enhancement.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - source : :class:`civis.Response`
                - database_table : :class:`civis.Response`
                    - schema : str
                        The schema name of the source table.
                    - table : str
                        The name of the source table.
                    - remote_host_id : int
                        The ID of the database host for the table.
                    - credential_id : int
                        The id of the credentials to be used when performing the
                        enhancement.
                    - multipart_key : List[str]
                        The source table primary key.
            - destination : :class:`civis.Response`
                - database_table : :class:`civis.Response`
                    - schema : str
                        The schema name for the output data.
                    - table : str
                        The table name for the output data.
            - column_mapping : :class:`civis.Response`
                - address1 : str
                    The first address line.
                - address2 : str
                    The second address line.
                - city : str
                    The city of an address.
                - state : str
                    The state of an address.
                - zip : str
                    The zip code of an address.
                - name : str
                    The full name of the resident at this address. If needed, separate
                    multiple columns with `+`, e.g. `first_name+last_name`
                - company : str
                    The name of the company located at this address.
            - use_default_column_mapping : bool
                Defaults to true, where the existing column mapping on the input table
                will be used. If false, a custom column mapping must be provided.
            - perform_ncoa : bool
                Whether to update addresses for records matching the National Change of
                Address (NCOA) database.
            - ncoa_credential_id : int
                Credential to use when performing NCOA updates. Required if
                'performNcoa' is true.
            - output_level : str
                The set of fields persisted by a CASS or NCOA enhancement.For CASS
                enhancements, one of 'cass' or 'all.'For NCOA enhancements, one of
                'cass', 'ncoa' , 'coalesced' or 'all'.By default, all fields will be
                returned.
            - limiting_sql : str
                The limiting SQL for the source table. "WHERE" should be omitted (e.g.
                state='IL').
            - batch_size : int
                The maximum number of records processed at a time. Note that this
                parameter is not available to all users.
            - archived : str
                The archival status of the requested item(s).
            - parent_id : int
                Parent ID that triggers this enhancement.
        """
        ...

    def patch_cass_ncoa(
        self,
        id: int,
        *,
        name: str | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        source: dict | None = ...,
        destination: dict | None = ...,
        column_mapping: dict | None = ...,
        use_default_column_mapping: bool | None = ...,
        perform_ncoa: bool | None = ...,
        ncoa_credential_id: int | None = ...,
        output_level: str | None = ...,
        limiting_sql: str | None = ...,
        batch_size: int | None = ...,
        parent_id: int | None = ...,
    ) -> _ResponseEnhancementsPatchCassNcoa:
        """Update some attributes of this CASS/NCOA Enhancement

        API URL: ``PATCH /enhancements/cass-ncoa/{id}``

        Parameters
        ----------
        id : int
            The ID for the enhancement.
        name : str, optional
            The name of the enhancement job.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        source : dict, optional
            - database_table : dict
                - schema : str
                    The schema name of the source table.
                - table : str
                    The name of the source table.
                - remote_host_id : int
                    The ID of the database host for the table.
                - credential_id : int
                    The id of the credentials to be used when performing the
                    enhancement.
                - multipart_key : List[str]
                    The source table primary key.
        destination : dict, optional
            - database_table : dict
                - schema : str
                    The schema name for the output data.
                - table : str
                    The table name for the output data.
        column_mapping : dict, optional
            - address1 : str
                The first address line.
            - address2 : str
                The second address line.
            - city : str
                The city of an address.
            - state : str
                The state of an address.
            - zip : str
                The zip code of an address.
            - name : str
                The full name of the resident at this address. If needed, separate
                multiple columns with `+`, e.g. `first_name+last_name`
            - company : str
                The name of the company located at this address.
        use_default_column_mapping : bool, optional
            Defaults to true, where the existing column mapping on the input table will
            be used. If false, a custom column mapping must be provided.
        perform_ncoa : bool, optional
            Whether to update addresses for records matching the National Change of
            Address (NCOA) database.
        ncoa_credential_id : int, optional
            Credential to use when performing NCOA updates. Required if 'performNcoa'
            is true.
        output_level : str, optional
            The set of fields persisted by a CASS or NCOA enhancement.For CASS
            enhancements, one of 'cass' or 'all.'For NCOA enhancements, one of 'cass',
            'ncoa' , 'coalesced' or 'all'.By default, all fields will be returned.
        limiting_sql : str, optional
            The limiting SQL for the source table. "WHERE" should be omitted (e.g.
            state='IL').
        batch_size : int, optional
            The maximum number of records processed at a time. Note that this parameter
            is not available to all users.
        parent_id : int, optional
            Parent ID that triggers this enhancement.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - source : :class:`civis.Response`
                - database_table : :class:`civis.Response`
                    - schema : str
                        The schema name of the source table.
                    - table : str
                        The name of the source table.
                    - remote_host_id : int
                        The ID of the database host for the table.
                    - credential_id : int
                        The id of the credentials to be used when performing the
                        enhancement.
                    - multipart_key : List[str]
                        The source table primary key.
            - destination : :class:`civis.Response`
                - database_table : :class:`civis.Response`
                    - schema : str
                        The schema name for the output data.
                    - table : str
                        The table name for the output data.
            - column_mapping : :class:`civis.Response`
                - address1 : str
                    The first address line.
                - address2 : str
                    The second address line.
                - city : str
                    The city of an address.
                - state : str
                    The state of an address.
                - zip : str
                    The zip code of an address.
                - name : str
                    The full name of the resident at this address. If needed, separate
                    multiple columns with `+`, e.g. `first_name+last_name`
                - company : str
                    The name of the company located at this address.
            - use_default_column_mapping : bool
                Defaults to true, where the existing column mapping on the input table
                will be used. If false, a custom column mapping must be provided.
            - perform_ncoa : bool
                Whether to update addresses for records matching the National Change of
                Address (NCOA) database.
            - ncoa_credential_id : int
                Credential to use when performing NCOA updates. Required if
                'performNcoa' is true.
            - output_level : str
                The set of fields persisted by a CASS or NCOA enhancement.For CASS
                enhancements, one of 'cass' or 'all.'For NCOA enhancements, one of
                'cass', 'ncoa' , 'coalesced' or 'all'.By default, all fields will be
                returned.
            - limiting_sql : str
                The limiting SQL for the source table. "WHERE" should be omitted (e.g.
                state='IL').
            - batch_size : int
                The maximum number of records processed at a time. Note that this
                parameter is not available to all users.
            - archived : str
                The archival status of the requested item(s).
            - parent_id : int
                Parent ID that triggers this enhancement.
        """
        ...

    def post_cass_ncoa_runs(
        self,
        id: int,
    ) -> _ResponseEnhancementsPostCassNcoaRuns:
        """Start a run

        API URL: ``POST /enhancements/cass-ncoa/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the CASS NCOA job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - cass_ncoa_id : int
                The ID of the CASS NCOA job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def list_cass_ncoa_runs(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseEnhancementsListCassNcoaRuns]:
        """List runs for the given CASS NCOA job

        API URL: ``GET /enhancements/cass-ncoa/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the CASS NCOA job.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the run.
            - cass_ncoa_id : int
                The ID of the CASS NCOA job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def get_cass_ncoa_runs(
        self,
        id: int,
        run_id: int,
    ) -> _ResponseEnhancementsGetCassNcoaRuns:
        """Check status of a run

        API URL: ``GET /enhancements/cass-ncoa/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the CASS NCOA job.
        run_id : int
            The ID of the run.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - cass_ncoa_id : int
                The ID of the CASS NCOA job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def delete_cass_ncoa_runs(
        self,
        id: int,
        run_id: int,
    ) -> Response:
        """Cancel a run

        API URL: ``DELETE /enhancements/cass-ncoa/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the CASS NCOA job.
        run_id : int
            The ID of the run.

        Returns
        -------
        None
            Response code 202: success
        """
        ...

    def list_cass_ncoa_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseEnhancementsListCassNcoaRunsLogs]:
        """Get the logs for a run

        API URL: ``GET /enhancements/cass-ncoa/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the CASS NCOA job.
        run_id : int
            The ID of the run.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def post_cass_ncoa_cancel(
        self,
        id: int,
    ) -> _ResponseEnhancementsPostCassNcoaCancel:
        """Cancel a run

        API URL: ``POST /enhancements/cass-ncoa/{id}/cancel``

        Parameters
        ----------
        id : int
            The ID of the job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - state : str
                The state of the run, one of 'queued', 'running' or 'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
        """
        ...

    def list_cass_ncoa_runs_outputs(
        self,
        id: int,
        run_id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseEnhancementsListCassNcoaRunsOutputs]:
        """List the outputs for a run

        API URL: ``GET /enhancements/cass-ncoa/{id}/runs/{run_id}/outputs``

        Parameters
        ----------
        id : int
            The ID of the job.
        run_id : int
            The ID of the run.
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to created_at. Must be
            one of: created_at, id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - object_type : str
                The type of the output. Valid values are File, Table, Report, Project,
                Credential, or JSONValue
            - object_id : int
                The ID of the output.
            - name : str
                The name of the output.
            - link : str
                The hypermedia link to the output.
            - value : object
        """
        ...

    def post_geocode(
        self,
        name: str,
        remote_host_id: int,
        credential_id: int,
        source_schema_and_table: str,
        *,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        multipart_key: List[str] | None = ...,
        limiting_sql: str | None = ...,
        target_schema: str | None = ...,
        target_table: str | None = ...,
        country: str | None = ...,
        provider: str | None = ...,
        output_address: bool | None = ...,
        parent_id: int | None = ...,
    ) -> _ResponseEnhancementsPostGeocode:
        """Create a Geocode Enhancement

        API URL: ``POST /enhancements/geocode``

        Parameters
        ----------
        name : str
            The name of the enhancement job.
        remote_host_id : int
            The ID of the remote host.
        credential_id : int
            The ID of the remote host credential.
        source_schema_and_table : str
            The source database schema and table.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        multipart_key : List[str], optional
            The source table primary key.
        limiting_sql : str, optional
            The limiting SQL for the source table. "WHERE" should be omitted (e.g.
            state='IL').
        target_schema : str, optional
            The output table schema.
        target_table : str, optional
            The output table name.
        country : str, optional
            The country of the addresses to be geocoded; either 'us' or 'ca'.
        provider : str, optional
            The geocoding provider; one of postgis and geocoder_ca.
        output_address : bool, optional
            Whether to output the parsed address. Only guaranteed for the 'postgis'
            provider.
        parent_id : int, optional
            Parent ID that triggers this enhancement.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - remote_host_id : int
                The ID of the remote host.
            - credential_id : int
                The ID of the remote host credential.
            - source_schema_and_table : str
                The source database schema and table.
            - multipart_key : List[str]
                The source table primary key.
            - limiting_sql : str
                The limiting SQL for the source table. "WHERE" should be omitted (e.g.
                state='IL').
            - target_schema : str
                The output table schema.
            - target_table : str
                The output table name.
            - country : str
                The country of the addresses to be geocoded; either 'us' or 'ca'.
            - provider : str
                The geocoding provider; one of postgis and geocoder_ca.
            - output_address : bool
                Whether to output the parsed address. Only guaranteed for the 'postgis'
                provider.
            - archived : str
                The archival status of the requested item(s).
            - parent_id : int
                Parent ID that triggers this enhancement.
        """
        ...

    def get_geocode(
        self,
        id: int,
    ) -> _ResponseEnhancementsGetGeocode:
        """Get a Geocode Enhancement

        API URL: ``GET /enhancements/geocode/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - remote_host_id : int
                The ID of the remote host.
            - credential_id : int
                The ID of the remote host credential.
            - source_schema_and_table : str
                The source database schema and table.
            - multipart_key : List[str]
                The source table primary key.
            - limiting_sql : str
                The limiting SQL for the source table. "WHERE" should be omitted (e.g.
                state='IL').
            - target_schema : str
                The output table schema.
            - target_table : str
                The output table name.
            - country : str
                The country of the addresses to be geocoded; either 'us' or 'ca'.
            - provider : str
                The geocoding provider; one of postgis and geocoder_ca.
            - output_address : bool
                Whether to output the parsed address. Only guaranteed for the 'postgis'
                provider.
            - archived : str
                The archival status of the requested item(s).
            - parent_id : int
                Parent ID that triggers this enhancement.
        """
        ...

    def put_geocode(
        self,
        id: int,
        name: str,
        remote_host_id: int,
        credential_id: int,
        source_schema_and_table: str,
        *,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        multipart_key: List[str] | None = ...,
        limiting_sql: str | None = ...,
        target_schema: str | None = ...,
        target_table: str | None = ...,
        country: str | None = ...,
        provider: str | None = ...,
        output_address: bool | None = ...,
        parent_id: int | None = ...,
    ) -> _ResponseEnhancementsPutGeocode:
        """Replace all attributes of this Geocode Enhancement

        API URL: ``PUT /enhancements/geocode/{id}``

        Parameters
        ----------
        id : int
            The ID for the enhancement.
        name : str
            The name of the enhancement job.
        remote_host_id : int
            The ID of the remote host.
        credential_id : int
            The ID of the remote host credential.
        source_schema_and_table : str
            The source database schema and table.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        multipart_key : List[str], optional
            The source table primary key.
        limiting_sql : str, optional
            The limiting SQL for the source table. "WHERE" should be omitted (e.g.
            state='IL').
        target_schema : str, optional
            The output table schema.
        target_table : str, optional
            The output table name.
        country : str, optional
            The country of the addresses to be geocoded; either 'us' or 'ca'.
        provider : str, optional
            The geocoding provider; one of postgis and geocoder_ca.
        output_address : bool, optional
            Whether to output the parsed address. Only guaranteed for the 'postgis'
            provider.
        parent_id : int, optional
            Parent ID that triggers this enhancement.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - remote_host_id : int
                The ID of the remote host.
            - credential_id : int
                The ID of the remote host credential.
            - source_schema_and_table : str
                The source database schema and table.
            - multipart_key : List[str]
                The source table primary key.
            - limiting_sql : str
                The limiting SQL for the source table. "WHERE" should be omitted (e.g.
                state='IL').
            - target_schema : str
                The output table schema.
            - target_table : str
                The output table name.
            - country : str
                The country of the addresses to be geocoded; either 'us' or 'ca'.
            - provider : str
                The geocoding provider; one of postgis and geocoder_ca.
            - output_address : bool
                Whether to output the parsed address. Only guaranteed for the 'postgis'
                provider.
            - archived : str
                The archival status of the requested item(s).
            - parent_id : int
                Parent ID that triggers this enhancement.
        """
        ...

    def patch_geocode(
        self,
        id: int,
        *,
        name: str | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        remote_host_id: int | None = ...,
        credential_id: int | None = ...,
        source_schema_and_table: str | None = ...,
        multipart_key: List[str] | None = ...,
        limiting_sql: str | None = ...,
        target_schema: str | None = ...,
        target_table: str | None = ...,
        country: str | None = ...,
        provider: str | None = ...,
        output_address: bool | None = ...,
        parent_id: int | None = ...,
    ) -> _ResponseEnhancementsPatchGeocode:
        """Update some attributes of this Geocode Enhancement

        API URL: ``PATCH /enhancements/geocode/{id}``

        Parameters
        ----------
        id : int
            The ID for the enhancement.
        name : str, optional
            The name of the enhancement job.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        remote_host_id : int, optional
            The ID of the remote host.
        credential_id : int, optional
            The ID of the remote host credential.
        source_schema_and_table : str, optional
            The source database schema and table.
        multipart_key : List[str], optional
            The source table primary key.
        limiting_sql : str, optional
            The limiting SQL for the source table. "WHERE" should be omitted (e.g.
            state='IL').
        target_schema : str, optional
            The output table schema.
        target_table : str, optional
            The output table name.
        country : str, optional
            The country of the addresses to be geocoded; either 'us' or 'ca'.
        provider : str, optional
            The geocoding provider; one of postgis and geocoder_ca.
        output_address : bool, optional
            Whether to output the parsed address. Only guaranteed for the 'postgis'
            provider.
        parent_id : int, optional
            Parent ID that triggers this enhancement.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - remote_host_id : int
                The ID of the remote host.
            - credential_id : int
                The ID of the remote host credential.
            - source_schema_and_table : str
                The source database schema and table.
            - multipart_key : List[str]
                The source table primary key.
            - limiting_sql : str
                The limiting SQL for the source table. "WHERE" should be omitted (e.g.
                state='IL').
            - target_schema : str
                The output table schema.
            - target_table : str
                The output table name.
            - country : str
                The country of the addresses to be geocoded; either 'us' or 'ca'.
            - provider : str
                The geocoding provider; one of postgis and geocoder_ca.
            - output_address : bool
                Whether to output the parsed address. Only guaranteed for the 'postgis'
                provider.
            - archived : str
                The archival status of the requested item(s).
            - parent_id : int
                Parent ID that triggers this enhancement.
        """
        ...

    def post_geocode_runs(
        self,
        id: int,
    ) -> _ResponseEnhancementsPostGeocodeRuns:
        """Start a run

        API URL: ``POST /enhancements/geocode/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Geocode job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - geocode_id : int
                The ID of the Geocode job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def list_geocode_runs(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseEnhancementsListGeocodeRuns]:
        """List runs for the given Geocode job

        API URL: ``GET /enhancements/geocode/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Geocode job.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the run.
            - geocode_id : int
                The ID of the Geocode job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def get_geocode_runs(
        self,
        id: int,
        run_id: int,
    ) -> _ResponseEnhancementsGetGeocodeRuns:
        """Check status of a run

        API URL: ``GET /enhancements/geocode/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Geocode job.
        run_id : int
            The ID of the run.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - geocode_id : int
                The ID of the Geocode job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def delete_geocode_runs(
        self,
        id: int,
        run_id: int,
    ) -> Response:
        """Cancel a run

        API URL: ``DELETE /enhancements/geocode/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Geocode job.
        run_id : int
            The ID of the run.

        Returns
        -------
        None
            Response code 202: success
        """
        ...

    def list_geocode_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseEnhancementsListGeocodeRunsLogs]:
        """Get the logs for a run

        API URL: ``GET /enhancements/geocode/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the Geocode job.
        run_id : int
            The ID of the run.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def post_geocode_cancel(
        self,
        id: int,
    ) -> _ResponseEnhancementsPostGeocodeCancel:
        """Cancel a run

        API URL: ``POST /enhancements/geocode/{id}/cancel``

        Parameters
        ----------
        id : int
            The ID of the job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - state : str
                The state of the run, one of 'queued', 'running' or 'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
        """
        ...

    def list_geocode_runs_outputs(
        self,
        id: int,
        run_id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseEnhancementsListGeocodeRunsOutputs]:
        """List the outputs for a run

        API URL: ``GET /enhancements/geocode/{id}/runs/{run_id}/outputs``

        Parameters
        ----------
        id : int
            The ID of the job.
        run_id : int
            The ID of the run.
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to created_at. Must be
            one of: created_at, id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - object_type : str
                The type of the output. Valid values are File, Table, Report, Project,
                Credential, or JSONValue
            - object_id : int
                The ID of the output.
            - name : str
                The name of the output.
            - link : str
                The hypermedia link to the output.
            - value : object
        """
        ...

    def list_cass_ncoa_shares(
        self,
        id: int,
    ) -> List[_ResponseEnhancementsListCassNcoaShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /enhancements/cass-ncoa/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_cass_ncoa_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseEnhancementsPutCassNcoaSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /enhancements/cass-ncoa/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_cass_ncoa_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /enhancements/cass-ncoa/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_cass_ncoa_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseEnhancementsPutCassNcoaSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /enhancements/cass-ncoa/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_cass_ncoa_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /enhancements/cass-ncoa/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_cass_ncoa_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseEnhancementsListCassNcoaDependencies]:
        """List dependent objects for this object

        API URL: ``GET /enhancements/cass-ncoa/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_cass_ncoa_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseEnhancementsPutCassNcoaTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /enhancements/cass-ncoa/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list_cass_ncoa_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseEnhancementsListCassNcoaProjects]:
        """List the projects a CASS/NCOA Enhancement belongs to

        API URL: ``GET /enhancements/cass-ncoa/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the CASS/NCOA Enhancement.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_cass_ncoa_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a CASS/NCOA Enhancement to a project

        API URL: ``PUT /enhancements/cass-ncoa/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the CASS/NCOA Enhancement.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_cass_ncoa_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a CASS/NCOA Enhancement from a project

        API URL: ``DELETE /enhancements/cass-ncoa/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the CASS/NCOA Enhancement.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_cass_ncoa_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseEnhancementsPutCassNcoaArchive:
        """Update the archive status of this object

        API URL: ``PUT /enhancements/cass-ncoa/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - source : :class:`civis.Response`
                - database_table : :class:`civis.Response`
                    - schema : str
                        The schema name of the source table.
                    - table : str
                        The name of the source table.
                    - remote_host_id : int
                        The ID of the database host for the table.
                    - credential_id : int
                        The id of the credentials to be used when performing the
                        enhancement.
                    - multipart_key : List[str]
                        The source table primary key.
            - destination : :class:`civis.Response`
                - database_table : :class:`civis.Response`
                    - schema : str
                        The schema name for the output data.
                    - table : str
                        The table name for the output data.
            - column_mapping : :class:`civis.Response`
                - address1 : str
                    The first address line.
                - address2 : str
                    The second address line.
                - city : str
                    The city of an address.
                - state : str
                    The state of an address.
                - zip : str
                    The zip code of an address.
                - name : str
                    The full name of the resident at this address. If needed, separate
                    multiple columns with `+`, e.g. `first_name+last_name`
                - company : str
                    The name of the company located at this address.
            - use_default_column_mapping : bool
                Defaults to true, where the existing column mapping on the input table
                will be used. If false, a custom column mapping must be provided.
            - perform_ncoa : bool
                Whether to update addresses for records matching the National Change of
                Address (NCOA) database.
            - ncoa_credential_id : int
                Credential to use when performing NCOA updates. Required if
                'performNcoa' is true.
            - output_level : str
                The set of fields persisted by a CASS or NCOA enhancement.For CASS
                enhancements, one of 'cass' or 'all.'For NCOA enhancements, one of
                'cass', 'ncoa' , 'coalesced' or 'all'.By default, all fields will be
                returned.
            - limiting_sql : str
                The limiting SQL for the source table. "WHERE" should be omitted (e.g.
                state='IL').
            - batch_size : int
                The maximum number of records processed at a time. Note that this
                parameter is not available to all users.
            - archived : str
                The archival status of the requested item(s).
            - parent_id : int
                Parent ID that triggers this enhancement.
        """
        ...

    def list_geocode_shares(
        self,
        id: int,
    ) -> List[_ResponseEnhancementsListGeocodeShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /enhancements/geocode/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_geocode_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseEnhancementsPutGeocodeSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /enhancements/geocode/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_geocode_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /enhancements/geocode/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_geocode_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseEnhancementsPutGeocodeSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /enhancements/geocode/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_geocode_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /enhancements/geocode/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_geocode_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseEnhancementsListGeocodeDependencies]:
        """List dependent objects for this object

        API URL: ``GET /enhancements/geocode/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_geocode_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseEnhancementsPutGeocodeTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /enhancements/geocode/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list_geocode_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseEnhancementsListGeocodeProjects]:
        """List the projects a Geocode Enhancement belongs to

        API URL: ``GET /enhancements/geocode/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the Geocode Enhancement.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_geocode_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a Geocode Enhancement to a project

        API URL: ``PUT /enhancements/geocode/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Geocode Enhancement.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_geocode_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a Geocode Enhancement from a project

        API URL: ``DELETE /enhancements/geocode/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Geocode Enhancement.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_geocode_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseEnhancementsPutGeocodeArchive:
        """Update the archive status of this object

        API URL: ``PUT /enhancements/geocode/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - remote_host_id : int
                The ID of the remote host.
            - credential_id : int
                The ID of the remote host credential.
            - source_schema_and_table : str
                The source database schema and table.
            - multipart_key : List[str]
                The source table primary key.
            - limiting_sql : str
                The limiting SQL for the source table. "WHERE" should be omitted (e.g.
                state='IL').
            - target_schema : str
                The output table schema.
            - target_table : str
                The output table name.
            - country : str
                The country of the addresses to be geocoded; either 'us' or 'ca'.
            - provider : str
                The geocoding provider; one of postgis and geocoder_ca.
            - output_address : bool
                Whether to output the parsed address. Only guaranteed for the 'postgis'
                provider.
            - archived : str
                The archival status of the requested item(s).
            - parent_id : int
                Parent ID that triggers this enhancement.
        """
        ...

    def list_identity_resolution_shares(
        self,
        id: int,
    ) -> List[_ResponseEnhancementsListIdentityResolutionShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /enhancements/identity-resolution/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_identity_resolution_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseEnhancementsPutIdentityResolutionSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /enhancements/identity-resolution/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_identity_resolution_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /enhancements/identity-resolution/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_identity_resolution_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseEnhancementsPutIdentityResolutionSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /enhancements/identity-resolution/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_identity_resolution_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /enhancements/identity-resolution/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_identity_resolution_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseEnhancementsListIdentityResolutionDependencies]:
        """List dependent objects for this object

        API URL: ``GET /enhancements/identity-resolution/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_identity_resolution_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseEnhancementsPutIdentityResolutionTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /enhancements/identity-resolution/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list_identity_resolution_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseEnhancementsListIdentityResolutionProjects]:
        """List the projects an Identity Resolution Enhancement belongs to

        API URL: ``GET /enhancements/identity-resolution/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the Identity Resolution Enhancement.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_identity_resolution_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add an Identity Resolution Enhancement to a project

        API URL: ``PUT /enhancements/identity-resolution/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Identity Resolution Enhancement.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_identity_resolution_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove an Identity Resolution Enhancement from a project

        API URL: ``DELETE /enhancements/identity-resolution/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Identity Resolution Enhancement.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_identity_resolution_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseEnhancementsPutIdentityResolutionArchive:
        """Update the archive status of this object

        API URL: ``PUT /enhancements/identity-resolution/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the enhancement.
            - name : str
                The name of the enhancement job.
            - type : str
                The type of the enhancement (e.g CASS-NCOA)
            - created_at : str (time)
                The time this enhancement was created.
            - updated_at : str (time)
                The time the enhancement was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the enhancement's last run
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - threshold : float (float)
                A value that determines the extent to which similar records get
                assigned the same resolved ID. Must be within 0.5 and 1, inclusive.
                Defaults to 0.8 if unspecified.Higher values may result in fewer cases
                where records about different individuals erroneously receive the same
                resolved ID, but also more more cases where records about the same
                individual receive different resolved IDs.
            - sources : List[:class:`civis.Response`]
                The source(s) to resolve via a run of this job.

                - name : str
                    A user-specified name for the source.
                - description : str
                    A description of the source.
                - database_name : str
                    The name of the source database.
                - schema_name : str
                    The name of the source schema.
                - table_name : str
                    The name of the source table.
                - field_mapping : :class:`civis.Response`
                    A mapping of PII fields to columns in this table. Valid keys are
                    primary_key, first_name, middle_name, last_name, gender, phone,
                    email, birth_date, birth_year, birth_month, birth_day,
                    house_number, street, unit, full_address, city, state, state_code,
                    zip, lat, lon, and name_suffix
            - match_target_id : int
                The ID of the Civis Data (Custom) match target. See /match_targets for
                IDs.
            - enforced_links : List[:class:`civis.Response`]
                A specification of related columns in different sources. The IDR tool
                will ensure that records with the same values in the specified columns
                receive the same Resolved ID.

                - source1 : str
                    Name of the first source. Must be defined in Sources list.
                - source1_join_col : str
                    Column from the first source to join on.
                - source2 : str
                    Name of the second source. Must be defined in Sources list
                - source2_join_col : str
                    Column from the second source to join on.
            - customer_graph : :class:`civis.Response`
                - database_name : str
                    The name of the destination database.
                - schema_name : str
                    The name of the destination schema.
                - table_name : str
                    The name of the destination table.
            - golden_table : :class:`civis.Response`
                - database_name : str
                    The name of the destination database.
                - schema_name : str
                    The name of the destination schema.
                - table_name : str
                    The name of the destination table.
                - fields : List[:class:`civis.Response`]
                    - field_name : str
                        The name of the field. Must be one of: first_name, middle_name,
                        last_name, name_suffix, email, phone, birth_month, birth_day,
                        birth_year, gender, address, house_number, street, unit, city,
                        state_code, and zip.
                    - rule_type : str
                        One of ["automatic", "preferred_source"]. Determines how the
                        system will choose the value for a record. "automatic" will use
                        the most frequent well-formatted value. "preferred_source"
                        allows the user to prioritize values from particular sources
                        over others.
                    - source_preferences : List[:class:`civis.Response`]
                        Rank order for sources, when rule_type is "preferred_source".

                        - source_name : str
                            The name of the source.
                        - ranking : int
                            How preferred this source is for the given field. Rankings
                            are zero-indexed and lower rank values are preferred to
                            higher ones.
            - link_scores : :class:`civis.Response`
                - database_name : str
                    The name of the destination database.
                - schema_name : str
                    The name of the destination schema.
                - table_name : str
                    The name of the destination table.
            - legacy_id : int
                ID of this pipeline in the legacy IDR service application.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
                - config : str
                    How the Identity Resolution job was configured for this run.
                - sample_records_query : str
                    A SQL query to produce a sample of records to inspect.
                - expand_cluster_query : str
                    A customizable query to view PII associated with resolved ids.
                - run_metrics : :class:`civis.Response`
                    - num_records : int
                        The number of input records for this run.
                    - unique_ids : int
                        The number of distinct unique IDs in the input records for this
                        run.
                    - unique_deduplicated_ids : int
                        The number of resolved IDs associated with more than one unique
                        ID in the input.
                    - max_cluster_size : int
                        The number of records in the largest cluster of resolved IDs.
                    - avg_cluster_size : float (float)
                        The average number of records with the same resolved ID.
                    - cluster_size_frequencies : :class:`civis.Response`
                        A mapping from numbers of records with the same resolved ID
                        (i.e., sizes of clusters) to numbers of such clusters. For
                        example, if there were 10 clusters with 2 records each, 2 would
                        be a key in the mapping, and 10 would be its value.
                - error_section : str
                    If there was a failure, this will denote which section of the
                    Identity Resolution job failed. One of: data_preparation,
                    compute_setup or data_processing.
        """
        ...

class _Exports:
    def list(
        self,
        *,
        type: str | None = ...,
        status: str | None = ...,
        author: str | None = ...,
        hidden: bool | None = ...,
        archived: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseExportsList]:
        """List

        API URL: ``GET /exports``

        Parameters
        ----------
        type : str, optional
            If specified, return exports of these types. It accepts a comma-separated
            list, possible values are 'database' and 'gdoc'.
        status : str, optional
            If specified, returns export with one of these statuses. It accepts a
            comma-separated list, possible values are 'running', 'failed', 'succeeded',
            'idle', 'scheduled'.
        author : str, optional
            If specified, return items from any of these authors. It accepts a comma-
            separated list of user IDs.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.
        archived : str, optional
            The archival status of the requested item(s).
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to updated_at. Must be
            one of: updated_at, name, created_at, last_run.updated_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID for this export.
            - name : str
                The name of this export.
            - type : str
                The type of export.
            - created_at : str (time)
                The creation time for this export.
            - updated_at : str (time)
                The last modification time for this export.
            - state : str
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
        """
        ...

    def post_files_csv_runs(
        self,
        id: int,
    ) -> _ResponseExportsPostFilesCsvRuns:
        """Start a run

        API URL: ``POST /exports/files/csv/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the CSV Export job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
            - state : str
            - created_at : str (time)
                The time that the run was queued.
            - started_at : str (time)
                The time that the run started.
            - finished_at : str (time)
                The time that the run completed.
            - error : str
                The error message for this run, if present.
            - output_cached_on : str (time)
                The time that the output was originally exported, if a cache entry was
                used by the run.
        """
        ...

    def list_files_csv_runs(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseExportsListFilesCsvRuns]:
        """List runs for the given CSV Export job

        API URL: ``GET /exports/files/csv/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the CSV Export job.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
            - state : str
            - created_at : str (time)
                The time that the run was queued.
            - started_at : str (time)
                The time that the run started.
            - finished_at : str (time)
                The time that the run completed.
            - error : str
                The error message for this run, if present.
        """
        ...

    def get_files_csv_runs(
        self,
        id: int,
        run_id: int,
    ) -> _ResponseExportsGetFilesCsvRuns:
        """Check status of a run

        API URL: ``GET /exports/files/csv/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the CSV Export job.
        run_id : int
            The ID of the run.

        Returns
        -------
        :class:`civis.Response`
            - id : int
            - state : str
            - created_at : str (time)
                The time that the run was queued.
            - started_at : str (time)
                The time that the run started.
            - finished_at : str (time)
                The time that the run completed.
            - error : str
                The error message for this run, if present.
            - output_cached_on : str (time)
                The time that the output was originally exported, if a cache entry was
                used by the run.
        """
        ...

    def delete_files_csv_runs(
        self,
        id: int,
        run_id: int,
    ) -> Response:
        """Cancel a run

        API URL: ``DELETE /exports/files/csv/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the CSV Export job.
        run_id : int
            The ID of the run.

        Returns
        -------
        None
            Response code 202: success
        """
        ...

    def list_files_csv_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseExportsListFilesCsvRunsLogs]:
        """Get the logs for a run

        API URL: ``GET /exports/files/csv/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the CSV Export job.
        run_id : int
            The ID of the run.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def list_files_csv_runs_outputs(
        self,
        id: int,
        run_id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseExportsListFilesCsvRunsOutputs]:
        """List the outputs for a run

        API URL: ``GET /exports/files/csv/{id}/runs/{run_id}/outputs``

        Parameters
        ----------
        id : int
            The ID of the csv_export.
        run_id : int
            The ID of the run.
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to created_at. Must be
            one of: created_at, id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - object_type : str
                The type of the output. Valid values are File, Table, Report, Project,
                Credential, or JSONValue
            - object_id : int
                The ID of the output.
            - name : str
                The name of the output.
            - link : str
                The hypermedia link to the output.
            - value : object
        """
        ...

    def post_files_csv(
        self,
        source: dict,
        destination: dict,
        *,
        name: str | None = ...,
        include_header: bool | None = ...,
        compression: str | None = ...,
        column_delimiter: str | None = ...,
        hidden: bool | None = ...,
        force_multifile: bool | None = ...,
        max_file_size: int | None = ...,
    ) -> _ResponseExportsPostFilesCsv:
        """Create a CSV Export

        API URL: ``POST /exports/files/csv``

        Parameters
        ----------
        source : dict
            - sql : str
                The SQL query for this Csv Export job
            - remote_host_id : int
                The ID of the destination database host.
            - credential_id : int
                The ID of the credentials for the destination database.
        destination : dict
            - filename_prefix : str
                The prefix of the name of the file returned to the user.
            - storage_path : dict
                - file_path : str
                    The path within the bucket where the exported file will be saved.
                    E.g. the file_path for "s3://mybucket/files/all/" would be
                    "/files/all/"
                - storage_host_id : int
                    The ID of the destination storage host.
                - credential_id : int
                    The ID of the credentials for the destination storage host.
                - existing_files : str
                    Notifies the job of what to do in the case that the exported file
                    already exists at the provided path.One of: fail, append,
                    overwrite. Default: fail. If "append" is specified,the new file
                    will always be added to the provided path. If "overwrite" is
                    specifiedall existing files at the provided path will be deleted
                    and the new file will be added.By default, or if "fail" is
                    specified, the export will fail if a file exists at the provided
                    path.
        name : str, optional
            The name of this Csv Export job.
        include_header : bool, optional
            A boolean value indicating whether or not the header should be included.
            Defaults to true.
        compression : str, optional
            The compression of the output file. Valid arguments are "gzip" and "none".
            Defaults to "gzip".
        column_delimiter : str, optional
            The column delimiter for the output file. Valid arguments are "comma",
            "tab", and "pipe". Defaults to "comma".
        hidden : bool, optional
            A boolean value indicating whether or not this request should be hidden.
            Defaults to false.
        force_multifile : bool, optional
            Whether or not the csv should be split into multiple files. Default: false
        max_file_size : int, optional
            The max file size, in MB, created files will be. Only available when
            force_multifile is true.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this Csv Export job.
            - name : str
                The name of this Csv Export job.
            - source : :class:`civis.Response`
                - sql : str
                    The SQL query for this Csv Export job
                - remote_host_id : int
                    The ID of the destination database host.
                - credential_id : int
                    The ID of the credentials for the destination database.
            - destination : :class:`civis.Response`
                - filename_prefix : str
                    The prefix of the name of the file returned to the user.
                - storage_path : :class:`civis.Response`
                    - file_path : str
                        The path within the bucket where the exported file will be
                        saved. E.g. the file_path for "s3://mybucket/files/all/" would
                        be "/files/all/"
                    - storage_host_id : int
                        The ID of the destination storage host.
                    - credential_id : int
                        The ID of the credentials for the destination storage host.
                    - existing_files : str
                        Notifies the job of what to do in the case that the exported
                        file already exists at the provided path.One of: fail, append,
                        overwrite. Default: fail. If "append" is specified,the new file
                        will always be added to the provided path. If "overwrite" is
                        specifiedall existing files at the provided path will be
                        deleted and the new file will be added.By default, or if "fail"
                        is specified, the export will fail if a file exists at the
                        provided path.
            - include_header : bool
                A boolean value indicating whether or not the header should be
                included. Defaults to true.
            - compression : str
                The compression of the output file. Valid arguments are "gzip" and
                "none". Defaults to "gzip".
            - column_delimiter : str
                The column delimiter for the output file. Valid arguments are "comma",
                "tab", and "pipe". Defaults to "comma".
            - hidden : bool
                A boolean value indicating whether or not this request should be
                hidden. Defaults to false.
            - force_multifile : bool
                Whether or not the csv should be split into multiple files. Default:
                false
            - max_file_size : int
                The max file size, in MB, created files will be. Only available when
                force_multifile is true.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def get_files_csv(
        self,
        id: int,
    ) -> _ResponseExportsGetFilesCsv:
        """Get a CSV Export

        API URL: ``GET /exports/files/csv/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this Csv Export job.
            - name : str
                The name of this Csv Export job.
            - source : :class:`civis.Response`
                - sql : str
                    The SQL query for this Csv Export job
                - remote_host_id : int
                    The ID of the destination database host.
                - credential_id : int
                    The ID of the credentials for the destination database.
            - destination : :class:`civis.Response`
                - filename_prefix : str
                    The prefix of the name of the file returned to the user.
                - storage_path : :class:`civis.Response`
                    - file_path : str
                        The path within the bucket where the exported file will be
                        saved. E.g. the file_path for "s3://mybucket/files/all/" would
                        be "/files/all/"
                    - storage_host_id : int
                        The ID of the destination storage host.
                    - credential_id : int
                        The ID of the credentials for the destination storage host.
                    - existing_files : str
                        Notifies the job of what to do in the case that the exported
                        file already exists at the provided path.One of: fail, append,
                        overwrite. Default: fail. If "append" is specified,the new file
                        will always be added to the provided path. If "overwrite" is
                        specifiedall existing files at the provided path will be
                        deleted and the new file will be added.By default, or if "fail"
                        is specified, the export will fail if a file exists at the
                        provided path.
            - include_header : bool
                A boolean value indicating whether or not the header should be
                included. Defaults to true.
            - compression : str
                The compression of the output file. Valid arguments are "gzip" and
                "none". Defaults to "gzip".
            - column_delimiter : str
                The column delimiter for the output file. Valid arguments are "comma",
                "tab", and "pipe". Defaults to "comma".
            - hidden : bool
                A boolean value indicating whether or not this request should be
                hidden. Defaults to false.
            - force_multifile : bool
                Whether or not the csv should be split into multiple files. Default:
                false
            - max_file_size : int
                The max file size, in MB, created files will be. Only available when
                force_multifile is true.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def put_files_csv(
        self,
        id: int,
        source: dict,
        destination: dict,
        *,
        name: str | None = ...,
        include_header: bool | None = ...,
        compression: str | None = ...,
        column_delimiter: str | None = ...,
        hidden: bool | None = ...,
        force_multifile: bool | None = ...,
        max_file_size: int | None = ...,
    ) -> _ResponseExportsPutFilesCsv:
        """Replace all attributes of this CSV Export

        API URL: ``PUT /exports/files/csv/{id}``

        Parameters
        ----------
        id : int
            The ID of this Csv Export job.
        source : dict
            - sql : str
                The SQL query for this Csv Export job
            - remote_host_id : int
                The ID of the destination database host.
            - credential_id : int
                The ID of the credentials for the destination database.
        destination : dict
            - filename_prefix : str
                The prefix of the name of the file returned to the user.
            - storage_path : dict
                - file_path : str
                    The path within the bucket where the exported file will be saved.
                    E.g. the file_path for "s3://mybucket/files/all/" would be
                    "/files/all/"
                - storage_host_id : int
                    The ID of the destination storage host.
                - credential_id : int
                    The ID of the credentials for the destination storage host.
                - existing_files : str
                    Notifies the job of what to do in the case that the exported file
                    already exists at the provided path.One of: fail, append,
                    overwrite. Default: fail. If "append" is specified,the new file
                    will always be added to the provided path. If "overwrite" is
                    specifiedall existing files at the provided path will be deleted
                    and the new file will be added.By default, or if "fail" is
                    specified, the export will fail if a file exists at the provided
                    path.
        name : str, optional
            The name of this Csv Export job.
        include_header : bool, optional
            A boolean value indicating whether or not the header should be included.
            Defaults to true.
        compression : str, optional
            The compression of the output file. Valid arguments are "gzip" and "none".
            Defaults to "gzip".
        column_delimiter : str, optional
            The column delimiter for the output file. Valid arguments are "comma",
            "tab", and "pipe". Defaults to "comma".
        hidden : bool, optional
            A boolean value indicating whether or not this request should be hidden.
            Defaults to false.
        force_multifile : bool, optional
            Whether or not the csv should be split into multiple files. Default: false
        max_file_size : int, optional
            The max file size, in MB, created files will be. Only available when
            force_multifile is true.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this Csv Export job.
            - name : str
                The name of this Csv Export job.
            - source : :class:`civis.Response`
                - sql : str
                    The SQL query for this Csv Export job
                - remote_host_id : int
                    The ID of the destination database host.
                - credential_id : int
                    The ID of the credentials for the destination database.
            - destination : :class:`civis.Response`
                - filename_prefix : str
                    The prefix of the name of the file returned to the user.
                - storage_path : :class:`civis.Response`
                    - file_path : str
                        The path within the bucket where the exported file will be
                        saved. E.g. the file_path for "s3://mybucket/files/all/" would
                        be "/files/all/"
                    - storage_host_id : int
                        The ID of the destination storage host.
                    - credential_id : int
                        The ID of the credentials for the destination storage host.
                    - existing_files : str
                        Notifies the job of what to do in the case that the exported
                        file already exists at the provided path.One of: fail, append,
                        overwrite. Default: fail. If "append" is specified,the new file
                        will always be added to the provided path. If "overwrite" is
                        specifiedall existing files at the provided path will be
                        deleted and the new file will be added.By default, or if "fail"
                        is specified, the export will fail if a file exists at the
                        provided path.
            - include_header : bool
                A boolean value indicating whether or not the header should be
                included. Defaults to true.
            - compression : str
                The compression of the output file. Valid arguments are "gzip" and
                "none". Defaults to "gzip".
            - column_delimiter : str
                The column delimiter for the output file. Valid arguments are "comma",
                "tab", and "pipe". Defaults to "comma".
            - hidden : bool
                A boolean value indicating whether or not this request should be
                hidden. Defaults to false.
            - force_multifile : bool
                Whether or not the csv should be split into multiple files. Default:
                false
            - max_file_size : int
                The max file size, in MB, created files will be. Only available when
                force_multifile is true.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def patch_files_csv(
        self,
        id: int,
        *,
        name: str | None = ...,
        source: dict | None = ...,
        destination: dict | None = ...,
        include_header: bool | None = ...,
        compression: str | None = ...,
        column_delimiter: str | None = ...,
        hidden: bool | None = ...,
        force_multifile: bool | None = ...,
        max_file_size: int | None = ...,
    ) -> _ResponseExportsPatchFilesCsv:
        """Update some attributes of this CSV Export

        API URL: ``PATCH /exports/files/csv/{id}``

        Parameters
        ----------
        id : int
            The ID of this Csv Export job.
        name : str, optional
            The name of this Csv Export job.
        source : dict, optional
            - sql : str
                The SQL query for this Csv Export job
            - remote_host_id : int
                The ID of the destination database host.
            - credential_id : int
                The ID of the credentials for the destination database.
        destination : dict, optional
            - filename_prefix : str
                The prefix of the name of the file returned to the user.
            - storage_path : dict
                - file_path : str
                    The path within the bucket where the exported file will be saved.
                    E.g. the file_path for "s3://mybucket/files/all/" would be
                    "/files/all/"
                - storage_host_id : int
                    The ID of the destination storage host.
                - credential_id : int
                    The ID of the credentials for the destination storage host.
                - existing_files : str
                    Notifies the job of what to do in the case that the exported file
                    already exists at the provided path.One of: fail, append,
                    overwrite. Default: fail. If "append" is specified,the new file
                    will always be added to the provided path. If "overwrite" is
                    specifiedall existing files at the provided path will be deleted
                    and the new file will be added.By default, or if "fail" is
                    specified, the export will fail if a file exists at the provided
                    path.
        include_header : bool, optional
            A boolean value indicating whether or not the header should be included.
            Defaults to true.
        compression : str, optional
            The compression of the output file. Valid arguments are "gzip" and "none".
            Defaults to "gzip".
        column_delimiter : str, optional
            The column delimiter for the output file. Valid arguments are "comma",
            "tab", and "pipe". Defaults to "comma".
        hidden : bool, optional
            A boolean value indicating whether or not this request should be hidden.
            Defaults to false.
        force_multifile : bool, optional
            Whether or not the csv should be split into multiple files. Default: false
        max_file_size : int, optional
            The max file size, in MB, created files will be. Only available when
            force_multifile is true.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this Csv Export job.
            - name : str
                The name of this Csv Export job.
            - source : :class:`civis.Response`
                - sql : str
                    The SQL query for this Csv Export job
                - remote_host_id : int
                    The ID of the destination database host.
                - credential_id : int
                    The ID of the credentials for the destination database.
            - destination : :class:`civis.Response`
                - filename_prefix : str
                    The prefix of the name of the file returned to the user.
                - storage_path : :class:`civis.Response`
                    - file_path : str
                        The path within the bucket where the exported file will be
                        saved. E.g. the file_path for "s3://mybucket/files/all/" would
                        be "/files/all/"
                    - storage_host_id : int
                        The ID of the destination storage host.
                    - credential_id : int
                        The ID of the credentials for the destination storage host.
                    - existing_files : str
                        Notifies the job of what to do in the case that the exported
                        file already exists at the provided path.One of: fail, append,
                        overwrite. Default: fail. If "append" is specified,the new file
                        will always be added to the provided path. If "overwrite" is
                        specifiedall existing files at the provided path will be
                        deleted and the new file will be added.By default, or if "fail"
                        is specified, the export will fail if a file exists at the
                        provided path.
            - include_header : bool
                A boolean value indicating whether or not the header should be
                included. Defaults to true.
            - compression : str
                The compression of the output file. Valid arguments are "gzip" and
                "none". Defaults to "gzip".
            - column_delimiter : str
                The column delimiter for the output file. Valid arguments are "comma",
                "tab", and "pipe". Defaults to "comma".
            - hidden : bool
                A boolean value indicating whether or not this request should be
                hidden. Defaults to false.
            - force_multifile : bool
                Whether or not the csv should be split into multiple files. Default:
                false
            - max_file_size : int
                The max file size, in MB, created files will be. Only available when
                force_multifile is true.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def put_files_csv_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseExportsPutFilesCsvArchive:
        """Update the archive status of this object

        API URL: ``PUT /exports/files/csv/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this Csv Export job.
            - name : str
                The name of this Csv Export job.
            - source : :class:`civis.Response`
                - sql : str
                    The SQL query for this Csv Export job
                - remote_host_id : int
                    The ID of the destination database host.
                - credential_id : int
                    The ID of the credentials for the destination database.
            - destination : :class:`civis.Response`
                - filename_prefix : str
                    The prefix of the name of the file returned to the user.
                - storage_path : :class:`civis.Response`
                    - file_path : str
                        The path within the bucket where the exported file will be
                        saved. E.g. the file_path for "s3://mybucket/files/all/" would
                        be "/files/all/"
                    - storage_host_id : int
                        The ID of the destination storage host.
                    - credential_id : int
                        The ID of the credentials for the destination storage host.
                    - existing_files : str
                        Notifies the job of what to do in the case that the exported
                        file already exists at the provided path.One of: fail, append,
                        overwrite. Default: fail. If "append" is specified,the new file
                        will always be added to the provided path. If "overwrite" is
                        specifiedall existing files at the provided path will be
                        deleted and the new file will be added.By default, or if "fail"
                        is specified, the export will fail if a file exists at the
                        provided path.
            - include_header : bool
                A boolean value indicating whether or not the header should be
                included. Defaults to true.
            - compression : str
                The compression of the output file. Valid arguments are "gzip" and
                "none". Defaults to "gzip".
            - column_delimiter : str
                The column delimiter for the output file. Valid arguments are "comma",
                "tab", and "pipe". Defaults to "comma".
            - hidden : bool
                A boolean value indicating whether or not this request should be
                hidden. Defaults to false.
            - force_multifile : bool
                Whether or not the csv should be split into multiple files. Default:
                false
            - max_file_size : int
                The max file size, in MB, created files will be. Only available when
                force_multifile is true.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

class _Files:
    def list_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseFilesListProjects]:
        """List the projects a File belongs to

        API URL: ``GET /files/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the File.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a File to a project

        API URL: ``PUT /files/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the File.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a File from a project

        API URL: ``DELETE /files/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the File.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_shares(
        self,
        id: int,
    ) -> List[_ResponseFilesListShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /files/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseFilesPutSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /files/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /files/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseFilesPutSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /files/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /files/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseFilesListDependencies]:
        """List dependent objects for this object

        API URL: ``GET /files/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseFilesPutTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /files/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def post(
        self,
        name: str,
        *,
        expires_at: str | None = ...,
        description: str | None = ...,
    ) -> _ResponseFilesPost:
        """Initiate an upload of a file into the platform

        API URL: ``POST /files``

        Parameters
        ----------
        name : str
            The file name.
        expires_at : str (date-time), optional
            The date and time the file will expire. If not specified, the file will
            expire in 30 days. To keep a file indefinitely, specify null.
        description : str, optional
            The user-defined description of the file.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the file.
            - name : str
                The file name.
            - created_at : str (date-time)
                The date and time the file was created.
            - file_size : int
                The file size.
            - expires_at : str (date-time)
                The date and time the file will expire. If not specified, the file will
                expire in 30 days. To keep a file indefinitely, specify null.
            - description : str
                The user-defined description of the file.
            - upload_url : str
                The URL that may be used to upload a file. To use the upload URL,
                initiate a POST request to the given URL with the file you wish to
                import as the "file" form field.
            - upload_fields : :class:`civis.Response`
                A hash containing the form fields to be included with the POST request.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def post_multipart(
        self,
        name: str,
        num_parts: int,
        *,
        expires_at: str | None = ...,
        description: str | None = ...,
    ) -> _ResponseFilesPostMultipart:
        """Initiate a multipart upload

        API URL: ``POST /files/multipart``

        Parameters
        ----------
        name : str
            The file name.
        num_parts : int
            The number of parts in which the file will be uploaded. This parameter
            determines the number of presigned URLs that are returned.
        expires_at : str (date-time), optional
            The date and time the file will expire. If not specified, the file will
            expire in 30 days. To keep a file indefinitely, specify null.
        description : str, optional
            The user-defined description of the file.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the file.
            - name : str
                The file name.
            - created_at : str (date-time)
                The date and time the file was created.
            - file_size : int
                The file size.
            - expires_at : str (date-time)
                The date and time the file will expire. If not specified, the file will
                expire in 30 days. To keep a file indefinitely, specify null.
            - description : str
                The user-defined description of the file.
            - upload_urls : List[str]
                An array of URLs that may be used to upload file parts. Use separate
                PUT requests to complete the part uploads. Links expire after 12 hours.
        """
        ...

    def post_multipart_complete(
        self,
        id: int,
    ) -> Response:
        """Complete a multipart upload

        API URL: ``POST /files/multipart/{id}/complete``

        Parameters
        ----------
        id : int
            The ID of the file.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def get(
        self,
        id: int,
        *,
        link_expires_at: str | None = ...,
        inline: bool | None = ...,
    ) -> _ResponseFilesGet:
        """Get details about a file

        API URL: ``GET /files/{id}``

        Parameters
        ----------
        id : int
            The ID of the file.
        link_expires_at : str, optional
            The date and time the download link will expire. Must be a time between now
            and 36 hours from now. Defaults to 30 minutes from now.
        inline : bool, optional
            If true, will return a url that can be displayed inline in HTML

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the file.
            - name : str
                The file name.
            - created_at : str (date-time)
                The date and time the file was created.
            - file_size : int
                The file size.
            - expires_at : str (date-time)
                The date and time the file will expire. If not specified, the file will
                expire in 30 days. To keep a file indefinitely, specify null.
            - description : str
                The user-defined description of the file.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - download_url : str
                A JSON string containing information about the URL of the file.
            - file_url : str
                The URL that may be used to download the file.
            - detected_info : :class:`civis.Response`
                - include_header : bool
                    A boolean value indicating whether or not the first row of the file
                    is a header row.
                - column_delimiter : str
                    The column delimiter for the file. One of "comma", "tab", or
                    "pipe".
                - compression : str
                    The type of compression of the file. One of "gzip", or "none".
                - table_columns : List[:class:`civis.Response`]
                    An array of hashes corresponding to the columns in the file. Each
                    hash should have keys for column "name" and "sql_type"

                    - name : str
                        The column name.
                    - sql_type : str
                        The SQL type of the column.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def put(
        self,
        id: int,
        name: str,
        expires_at: str,
        *,
        description: str | None = ...,
    ) -> _ResponseFilesPut:
        """Update details about a file

        API URL: ``PUT /files/{id}``

        Parameters
        ----------
        id : int
            The ID of the file.
        name : str
            The file name. The extension must match the previous extension.
        expires_at : str (date-time)
            The date and time the file will expire.
        description : str, optional
            The user-defined description of the file.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the file.
            - name : str
                The file name.
            - created_at : str (date-time)
                The date and time the file was created.
            - file_size : int
                The file size.
            - expires_at : str (date-time)
                The date and time the file will expire. If not specified, the file will
                expire in 30 days. To keep a file indefinitely, specify null.
            - description : str
                The user-defined description of the file.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - download_url : str
                A JSON string containing information about the URL of the file.
            - file_url : str
                The URL that may be used to download the file.
            - detected_info : :class:`civis.Response`
                - include_header : bool
                    A boolean value indicating whether or not the first row of the file
                    is a header row.
                - column_delimiter : str
                    The column delimiter for the file. One of "comma", "tab", or
                    "pipe".
                - compression : str
                    The type of compression of the file. One of "gzip", or "none".
                - table_columns : List[:class:`civis.Response`]
                    An array of hashes corresponding to the columns in the file. Each
                    hash should have keys for column "name" and "sql_type"

                    - name : str
                        The column name.
                    - sql_type : str
                        The SQL type of the column.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def patch(
        self,
        id: int,
        *,
        name: str | None = ...,
        expires_at: str | None = ...,
        description: str | None = ...,
    ) -> _ResponseFilesPatch:
        """Update details about a file

        API URL: ``PATCH /files/{id}``

        Parameters
        ----------
        id : int
            The ID of the file.
        name : str, optional
            The file name. The extension must match the previous extension.
        expires_at : str (date-time), optional
            The date and time the file will expire.
        description : str, optional
            The user-defined description of the file.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the file.
            - name : str
                The file name.
            - created_at : str (date-time)
                The date and time the file was created.
            - file_size : int
                The file size.
            - expires_at : str (date-time)
                The date and time the file will expire. If not specified, the file will
                expire in 30 days. To keep a file indefinitely, specify null.
            - description : str
                The user-defined description of the file.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - download_url : str
                A JSON string containing information about the URL of the file.
            - file_url : str
                The URL that may be used to download the file.
            - detected_info : :class:`civis.Response`
                - include_header : bool
                    A boolean value indicating whether or not the first row of the file
                    is a header row.
                - column_delimiter : str
                    The column delimiter for the file. One of "comma", "tab", or
                    "pipe".
                - compression : str
                    The type of compression of the file. One of "gzip", or "none".
                - table_columns : List[:class:`civis.Response`]
                    An array of hashes corresponding to the columns in the file. Each
                    hash should have keys for column "name" and "sql_type"

                    - name : str
                        The column name.
                    - sql_type : str
                        The SQL type of the column.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def post_preprocess_csv(
        self,
        file_id: int,
        *,
        in_place: bool | None = ...,
        detect_table_columns: bool | None = ...,
        force_character_set_conversion: bool | None = ...,
        include_header: bool | None = ...,
        column_delimiter: str | None = ...,
        hidden: bool | None = ...,
    ) -> _ResponseFilesPostPreprocessCsv:
        """Create a Preprocess CSV

        API URL: ``POST /files/preprocess/csv``

        Parameters
        ----------
        file_id : int
            The ID of the file.
        in_place : bool, optional
            If true, the file is cleaned in place. If false, a new file ID is created.
            Defaults to true.
        detect_table_columns : bool, optional
            If true, detect the table columns in the file including the sql types. If
            false, skip table column detection.Defaults to false.
        force_character_set_conversion : bool, optional
            If true, the file will always be converted to UTF-8 and any character that
            cannot be converted will be discarded. If false, the character set
            conversion will only run if the detected character set is not compatible
            with UTF-8 (e.g., UTF-8, ASCII).
        include_header : bool, optional
            A boolean value indicating whether or not the first row of the file is a
            header row. If not provided, will attempt to auto-detect whether a header
            row is present.
        column_delimiter : str, optional
            The column delimiter for the file. One of "comma", "tab", or "pipe". If not
            provided, the column delimiter will be auto-detected.
        hidden : bool, optional
            The hidden status of the item.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the job created.
            - file_id : int
                The ID of the file.
            - in_place : bool
                If true, the file is cleaned in place. If false, a new file ID is
                created. Defaults to true.
            - detect_table_columns : bool
                If true, detect the table columns in the file including the sql types.
                If false, skip table column detection.Defaults to false.
            - force_character_set_conversion : bool
                If true, the file will always be converted to UTF-8 and any character
                that cannot be converted will be discarded. If false, the character set
                conversion will only run if the detected character set is not
                compatible with UTF-8 (e.g., UTF-8, ASCII).
            - include_header : bool
                A boolean value indicating whether or not the first row of the file is
                a header row. If not provided, will attempt to auto-detect whether a
                header row is present.
            - column_delimiter : str
                The column delimiter for the file. One of "comma", "tab", or "pipe". If
                not provided, the column delimiter will be auto-detected.
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def get_preprocess_csv(
        self,
        id: int,
    ) -> _ResponseFilesGetPreprocessCsv:
        """Get a Preprocess CSV

        API URL: ``GET /files/preprocess/csv/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the job created.
            - file_id : int
                The ID of the file.
            - in_place : bool
                If true, the file is cleaned in place. If false, a new file ID is
                created. Defaults to true.
            - detect_table_columns : bool
                If true, detect the table columns in the file including the sql types.
                If false, skip table column detection.Defaults to false.
            - force_character_set_conversion : bool
                If true, the file will always be converted to UTF-8 and any character
                that cannot be converted will be discarded. If false, the character set
                conversion will only run if the detected character set is not
                compatible with UTF-8 (e.g., UTF-8, ASCII).
            - include_header : bool
                A boolean value indicating whether or not the first row of the file is
                a header row. If not provided, will attempt to auto-detect whether a
                header row is present.
            - column_delimiter : str
                The column delimiter for the file. One of "comma", "tab", or "pipe". If
                not provided, the column delimiter will be auto-detected.
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def put_preprocess_csv(
        self,
        id: int,
        file_id: int,
        *,
        in_place: bool | None = ...,
        detect_table_columns: bool | None = ...,
        force_character_set_conversion: bool | None = ...,
        include_header: bool | None = ...,
        column_delimiter: str | None = ...,
    ) -> _ResponseFilesPutPreprocessCsv:
        """Replace all attributes of this Preprocess CSV

        API URL: ``PUT /files/preprocess/csv/{id}``

        Parameters
        ----------
        id : int
            The ID of the job created.
        file_id : int
            The ID of the file.
        in_place : bool, optional
            If true, the file is cleaned in place. If false, a new file ID is created.
            Defaults to true.
        detect_table_columns : bool, optional
            If true, detect the table columns in the file including the sql types. If
            false, skip table column detection.Defaults to false.
        force_character_set_conversion : bool, optional
            If true, the file will always be converted to UTF-8 and any character that
            cannot be converted will be discarded. If false, the character set
            conversion will only run if the detected character set is not compatible
            with UTF-8 (e.g., UTF-8, ASCII).
        include_header : bool, optional
            A boolean value indicating whether or not the first row of the file is a
            header row. If not provided, will attempt to auto-detect whether a header
            row is present.
        column_delimiter : str, optional
            The column delimiter for the file. One of "comma", "tab", or "pipe". If not
            provided, the column delimiter will be auto-detected.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the job created.
            - file_id : int
                The ID of the file.
            - in_place : bool
                If true, the file is cleaned in place. If false, a new file ID is
                created. Defaults to true.
            - detect_table_columns : bool
                If true, detect the table columns in the file including the sql types.
                If false, skip table column detection.Defaults to false.
            - force_character_set_conversion : bool
                If true, the file will always be converted to UTF-8 and any character
                that cannot be converted will be discarded. If false, the character set
                conversion will only run if the detected character set is not
                compatible with UTF-8 (e.g., UTF-8, ASCII).
            - include_header : bool
                A boolean value indicating whether or not the first row of the file is
                a header row. If not provided, will attempt to auto-detect whether a
                header row is present.
            - column_delimiter : str
                The column delimiter for the file. One of "comma", "tab", or "pipe". If
                not provided, the column delimiter will be auto-detected.
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def patch_preprocess_csv(
        self,
        id: int,
        *,
        file_id: int | None = ...,
        in_place: bool | None = ...,
        detect_table_columns: bool | None = ...,
        force_character_set_conversion: bool | None = ...,
        include_header: bool | None = ...,
        column_delimiter: str | None = ...,
    ) -> _ResponseFilesPatchPreprocessCsv:
        """Update some attributes of this Preprocess CSV

        API URL: ``PATCH /files/preprocess/csv/{id}``

        Parameters
        ----------
        id : int
            The ID of the job created.
        file_id : int, optional
            The ID of the file.
        in_place : bool, optional
            If true, the file is cleaned in place. If false, a new file ID is created.
            Defaults to true.
        detect_table_columns : bool, optional
            If true, detect the table columns in the file including the sql types. If
            false, skip table column detection.Defaults to false.
        force_character_set_conversion : bool, optional
            If true, the file will always be converted to UTF-8 and any character that
            cannot be converted will be discarded. If false, the character set
            conversion will only run if the detected character set is not compatible
            with UTF-8 (e.g., UTF-8, ASCII).
        include_header : bool, optional
            A boolean value indicating whether or not the first row of the file is a
            header row. If not provided, will attempt to auto-detect whether a header
            row is present.
        column_delimiter : str, optional
            The column delimiter for the file. One of "comma", "tab", or "pipe". If not
            provided, the column delimiter will be auto-detected.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the job created.
            - file_id : int
                The ID of the file.
            - in_place : bool
                If true, the file is cleaned in place. If false, a new file ID is
                created. Defaults to true.
            - detect_table_columns : bool
                If true, detect the table columns in the file including the sql types.
                If false, skip table column detection.Defaults to false.
            - force_character_set_conversion : bool
                If true, the file will always be converted to UTF-8 and any character
                that cannot be converted will be discarded. If false, the character set
                conversion will only run if the detected character set is not
                compatible with UTF-8 (e.g., UTF-8, ASCII).
            - include_header : bool
                A boolean value indicating whether or not the first row of the file is
                a header row. If not provided, will attempt to auto-detect whether a
                header row is present.
            - column_delimiter : str
                The column delimiter for the file. One of "comma", "tab", or "pipe". If
                not provided, the column delimiter will be auto-detected.
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def put_preprocess_csv_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseFilesPutPreprocessCsvArchive:
        """Update the archive status of this object

        API URL: ``PUT /files/preprocess/csv/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the job created.
            - file_id : int
                The ID of the file.
            - in_place : bool
                If true, the file is cleaned in place. If false, a new file ID is
                created. Defaults to true.
            - detect_table_columns : bool
                If true, detect the table columns in the file including the sql types.
                If false, skip table column detection.Defaults to false.
            - force_character_set_conversion : bool
                If true, the file will always be converted to UTF-8 and any character
                that cannot be converted will be discarded. If false, the character set
                conversion will only run if the detected character set is not
                compatible with UTF-8 (e.g., UTF-8, ASCII).
            - include_header : bool
                A boolean value indicating whether or not the first row of the file is
                a header row. If not provided, will attempt to auto-detect whether a
                header row is present.
            - column_delimiter : str
                The column delimiter for the file. One of "comma", "tab", or "pipe". If
                not provided, the column delimiter will be auto-detected.
            - hidden : bool
                The hidden status of the item.
        """
        ...

class _Git_Repos:
    def list(
        self,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseGitReposList]:
        """List bookmarked git repositories

        API URL: ``GET /git_repos``

        Parameters
        ----------
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to repo_url. Must be
            one of: repo_url, created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to asc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID for this git repository.
            - repo_url : str
                The URL for this git repository.
            - created_at : str (time)
            - updated_at : str (time)
        """
        ...

    def post(
        self,
        repo_url: str,
    ) -> _ResponseGitReposPost:
        """Bookmark a git repository

        API URL: ``POST /git_repos``

        Parameters
        ----------
        repo_url : str
            The URL for this git repository.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this git repository.
            - repo_url : str
                The URL for this git repository.
            - created_at : str (time)
            - updated_at : str (time)
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseGitReposGet:
        """Get a bookmarked git repository

        API URL: ``GET /git_repos/{id}``

        Parameters
        ----------
        id : int
            The ID for this git repository.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this git repository.
            - repo_url : str
                The URL for this git repository.
            - created_at : str (time)
            - updated_at : str (time)
        """
        ...

    def delete(
        self,
        id: int,
    ) -> Response:
        """Remove the bookmark on a git repository

        API URL: ``DELETE /git_repos/{id}``

        Parameters
        ----------
        id : int
            The ID for this git repository.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_refs(
        self,
        id: int,
    ) -> List[_ResponseGitReposListRefs]:
        """Get all branches and tags of a bookmarked git repository

        API URL: ``GET /git_repos/{id}/refs``

        Parameters
        ----------
        id : int
            The ID for this git repository.

        Returns
        -------
        :class:`civis.ListResponse`
            - branches : List[str]
                List of branch names of this git repository.
            - tags : List[str]
                List of tag names of this git repository.
        """
        ...

class _Groups:
    def list(
        self,
        *,
        query: str | None = ...,
        permission: str | None = ...,
        include_members: bool | None = ...,
        organization_id: int | None = ...,
        user_ids: List[int] | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseGroupsList]:
        """List Groups

        API URL: ``GET /groups``

        Parameters
        ----------
        query : str, optional
            If specified, it will filter the groups returned.
        permission : str, optional
            A permissions string, one of "read", "write", or "manage". Lists only
            groups for which the current user has that permission.
        include_members : bool, optional
            Show members of the group.
        organization_id : int, optional
            The organization by which to filter groups.
        user_ids : List[int], optional
            A list of user IDs to filter groups by.Groups will be returned if any of
            the users is a member
        limit : int, optional
            Number of results to return. Defaults to 50. Maximum allowed is 1000.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to name. Must be one
            of: name, created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to asc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of this group.
            - name : str
                This group's name.
            - created_at : str (time)
                The date and time when this group was created.
            - updated_at : str (time)
                The date and time when this group was last updated.
            - description : str
                The description of the group.
            - slug : str
                The slug for this group.
            - organization_id : int
                The ID of the organization this group belongs to.
            - organization_name : str
                The name of the organization this group belongs to.
            - member_count : int
                The number of active members in this group.
            - total_member_count : int
                The total number of members in this group.
            - last_updated_by_id : int
                The ID of the user who last updated this group.
            - created_by_id : int
                The ID of the user who created this group.
            - members : List[:class:`civis.Response`]
                The members of this group.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
        """
        ...

    def post(
        self,
        name: str,
        *,
        description: str | None = ...,
        slug: str | None = ...,
        organization_id: int | None = ...,
        default_otp_required_for_login: bool | None = ...,
        role_ids: List[int] | None = ...,
        default_time_zone: str | None = ...,
        default_jobs_label: str | None = ...,
        default_notebooks_label: str | None = ...,
        default_services_label: str | None = ...,
    ) -> _ResponseGroupsPost:
        """Create a Group

        API URL: ``POST /groups``

        Parameters
        ----------
        name : str
            This group's name.
        description : str, optional
            The description of the group.
        slug : str, optional
            The slug for this group.
        organization_id : int, optional
            The ID of the organization this group belongs to.
        default_otp_required_for_login : bool, optional
            The two factor authentication requirement for this group.
        role_ids : List[int], optional
            An array of ids of all the roles this group has.
        default_time_zone : str, optional
            The default time zone of this group.
        default_jobs_label : str, optional
            The default partition label for jobs of this group.
        default_notebooks_label : str, optional
            The default partition label for notebooks of this group.
        default_services_label : str, optional
            The default partition label for services of this group.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this group.
            - name : str
                This group's name.
            - created_at : str (time)
                The date and time when this group was created.
            - updated_at : str (time)
                The date and time when this group was last updated.
            - description : str
                The description of the group.
            - slug : str
                The slug for this group.
            - organization_id : int
                The ID of the organization this group belongs to.
            - organization_name : str
                The name of the organization this group belongs to.
            - member_count : int
                The number of active members in this group.
            - total_member_count : int
                The total number of members in this group.
            - default_otp_required_for_login : bool
                The two factor authentication requirement for this group.
            - role_ids : List[int]
                An array of ids of all the roles this group has.
            - default_time_zone : str
                The default time zone of this group.
            - default_jobs_label : str
                The default partition label for jobs of this group.
            - default_notebooks_label : str
                The default partition label for notebooks of this group.
            - default_services_label : str
                The default partition label for services of this group.
            - last_updated_by_id : int
                The ID of the user who last updated this group.
            - created_by_id : int
                The ID of the user who created this group.
            - members : List[:class:`civis.Response`]
                The members of this group.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
                - email : str
                    This user's email address.
                - primary_group_id : int
                    The ID of the primary group of this user.
                - active : bool
                    Whether this user account is active or deactivated.
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseGroupsGet:
        """Get a Group

        API URL: ``GET /groups/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this group.
            - name : str
                This group's name.
            - created_at : str (time)
                The date and time when this group was created.
            - updated_at : str (time)
                The date and time when this group was last updated.
            - description : str
                The description of the group.
            - slug : str
                The slug for this group.
            - organization_id : int
                The ID of the organization this group belongs to.
            - organization_name : str
                The name of the organization this group belongs to.
            - member_count : int
                The number of active members in this group.
            - total_member_count : int
                The total number of members in this group.
            - default_otp_required_for_login : bool
                The two factor authentication requirement for this group.
            - role_ids : List[int]
                An array of ids of all the roles this group has.
            - default_time_zone : str
                The default time zone of this group.
            - default_jobs_label : str
                The default partition label for jobs of this group.
            - default_notebooks_label : str
                The default partition label for notebooks of this group.
            - default_services_label : str
                The default partition label for services of this group.
            - last_updated_by_id : int
                The ID of the user who last updated this group.
            - created_by_id : int
                The ID of the user who created this group.
            - members : List[:class:`civis.Response`]
                The members of this group.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
                - email : str
                    This user's email address.
                - primary_group_id : int
                    The ID of the primary group of this user.
                - active : bool
                    Whether this user account is active or deactivated.
        """
        ...

    def put(
        self,
        id: int,
        name: str,
        *,
        description: str | None = ...,
        slug: str | None = ...,
        organization_id: int | None = ...,
        default_otp_required_for_login: bool | None = ...,
        role_ids: List[int] | None = ...,
        default_time_zone: str | None = ...,
        default_jobs_label: str | None = ...,
        default_notebooks_label: str | None = ...,
        default_services_label: str | None = ...,
    ) -> _ResponseGroupsPut:
        """Replace all attributes of this Group

        API URL: ``PUT /groups/{id}``

        Parameters
        ----------
        id : int
            The ID of this group.
        name : str
            This group's name.
        description : str, optional
            The description of the group.
        slug : str, optional
            The slug for this group.
        organization_id : int, optional
            The ID of the organization this group belongs to.
        default_otp_required_for_login : bool, optional
            The two factor authentication requirement for this group.
        role_ids : List[int], optional
            An array of ids of all the roles this group has.
        default_time_zone : str, optional
            The default time zone of this group.
        default_jobs_label : str, optional
            The default partition label for jobs of this group.
        default_notebooks_label : str, optional
            The default partition label for notebooks of this group.
        default_services_label : str, optional
            The default partition label for services of this group.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this group.
            - name : str
                This group's name.
            - created_at : str (time)
                The date and time when this group was created.
            - updated_at : str (time)
                The date and time when this group was last updated.
            - description : str
                The description of the group.
            - slug : str
                The slug for this group.
            - organization_id : int
                The ID of the organization this group belongs to.
            - organization_name : str
                The name of the organization this group belongs to.
            - member_count : int
                The number of active members in this group.
            - total_member_count : int
                The total number of members in this group.
            - default_otp_required_for_login : bool
                The two factor authentication requirement for this group.
            - role_ids : List[int]
                An array of ids of all the roles this group has.
            - default_time_zone : str
                The default time zone of this group.
            - default_jobs_label : str
                The default partition label for jobs of this group.
            - default_notebooks_label : str
                The default partition label for notebooks of this group.
            - default_services_label : str
                The default partition label for services of this group.
            - last_updated_by_id : int
                The ID of the user who last updated this group.
            - created_by_id : int
                The ID of the user who created this group.
            - members : List[:class:`civis.Response`]
                The members of this group.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
                - email : str
                    This user's email address.
                - primary_group_id : int
                    The ID of the primary group of this user.
                - active : bool
                    Whether this user account is active or deactivated.
        """
        ...

    def patch(
        self,
        id: int,
        *,
        name: str | None = ...,
        description: str | None = ...,
        slug: str | None = ...,
        organization_id: int | None = ...,
        default_otp_required_for_login: bool | None = ...,
        role_ids: List[int] | None = ...,
        default_time_zone: str | None = ...,
        default_jobs_label: str | None = ...,
        default_notebooks_label: str | None = ...,
        default_services_label: str | None = ...,
    ) -> _ResponseGroupsPatch:
        """Update some attributes of this Group

        API URL: ``PATCH /groups/{id}``

        Parameters
        ----------
        id : int
            The ID of this group.
        name : str, optional
            This group's name.
        description : str, optional
            The description of the group.
        slug : str, optional
            The slug for this group.
        organization_id : int, optional
            The ID of the organization this group belongs to.
        default_otp_required_for_login : bool, optional
            The two factor authentication requirement for this group.
        role_ids : List[int], optional
            An array of ids of all the roles this group has.
        default_time_zone : str, optional
            The default time zone of this group.
        default_jobs_label : str, optional
            The default partition label for jobs of this group.
        default_notebooks_label : str, optional
            The default partition label for notebooks of this group.
        default_services_label : str, optional
            The default partition label for services of this group.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this group.
            - name : str
                This group's name.
            - created_at : str (time)
                The date and time when this group was created.
            - updated_at : str (time)
                The date and time when this group was last updated.
            - description : str
                The description of the group.
            - slug : str
                The slug for this group.
            - organization_id : int
                The ID of the organization this group belongs to.
            - organization_name : str
                The name of the organization this group belongs to.
            - member_count : int
                The number of active members in this group.
            - total_member_count : int
                The total number of members in this group.
            - default_otp_required_for_login : bool
                The two factor authentication requirement for this group.
            - role_ids : List[int]
                An array of ids of all the roles this group has.
            - default_time_zone : str
                The default time zone of this group.
            - default_jobs_label : str
                The default partition label for jobs of this group.
            - default_notebooks_label : str
                The default partition label for notebooks of this group.
            - default_services_label : str
                The default partition label for services of this group.
            - last_updated_by_id : int
                The ID of the user who last updated this group.
            - created_by_id : int
                The ID of the user who created this group.
            - members : List[:class:`civis.Response`]
                The members of this group.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
                - email : str
                    This user's email address.
                - primary_group_id : int
                    The ID of the primary group of this user.
                - active : bool
                    Whether this user account is active or deactivated.
        """
        ...

    def list_shares(
        self,
        id: int,
    ) -> List[_ResponseGroupsListShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /groups/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseGroupsPutSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /groups/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /groups/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseGroupsPutSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /groups/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /groups/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_members(
        self,
        id: int,
        user_id: int,
    ) -> _ResponseGroupsPutMembers:
        """Add a user to a group

        API URL: ``PUT /groups/{id}/members/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the group.
        user_id : int
            The ID of the user.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this group.
            - name : str
                This group's name.
            - created_at : str (time)
                The date and time when this group was created.
            - updated_at : str (time)
                The date and time when this group was last updated.
            - description : str
                The description of the group.
            - slug : str
                The slug for this group.
            - organization_id : int
                The ID of the organization this group belongs to.
            - organization_name : str
                The name of the organization this group belongs to.
            - member_count : int
                The number of active members in this group.
            - total_member_count : int
                The total number of members in this group.
            - default_otp_required_for_login : bool
                The two factor authentication requirement for this group.
            - role_ids : List[int]
                An array of ids of all the roles this group has.
            - default_time_zone : str
                The default time zone of this group.
            - default_jobs_label : str
                The default partition label for jobs of this group.
            - default_notebooks_label : str
                The default partition label for notebooks of this group.
            - default_services_label : str
                The default partition label for services of this group.
            - last_updated_by_id : int
                The ID of the user who last updated this group.
            - created_by_id : int
                The ID of the user who created this group.
            - members : List[:class:`civis.Response`]
                The members of this group.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
                - email : str
                    This user's email address.
                - primary_group_id : int
                    The ID of the primary group of this user.
                - active : bool
                    Whether this user account is active or deactivated.
        """
        ...

    def delete_members(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Remove a user from a group

        API URL: ``DELETE /groups/{id}/members/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the group.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_child_groups(
        self,
        id: int,
    ) -> List[_ResponseGroupsListChildGroups]:
        """Get child groups of this group

        API URL: ``GET /groups/{id}/child_groups``

        Parameters
        ----------
        id : int
            The ID of this group.

        Returns
        -------
        :class:`civis.ListResponse`
            - manageable : List[:class:`civis.Response`]
                - id : int
                - name : str
            - writeable : List[:class:`civis.Response`]
                - id : int
                - name : str
            - readable : List[:class:`civis.Response`]
                - id : int
                - name : str
        """
        ...

class _Imports:
    def list_shares(
        self,
        id: int,
    ) -> List[_ResponseImportsListShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /imports/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseImportsPutSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /imports/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /imports/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseImportsPutSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /imports/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /imports/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseImportsListDependencies]:
        """List dependent objects for this object

        API URL: ``GET /imports/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseImportsPutTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /imports/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseImportsListProjects]:
        """List the projects an Import belongs to

        API URL: ``GET /imports/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the Import.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add an Import to a project

        API URL: ``PUT /imports/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Import.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove an Import from a project

        API URL: ``DELETE /imports/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Import.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseImportsPutArchive:
        """Update the archive status of this object

        API URL: ``PUT /imports/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - name : str
                The name of the import.
            - sync_type : str
                The type of sync to perform; one of Dbsync, AutoImport, GdocImport, and
                GdocExport.
            - source : :class:`civis.Response`
                - remote_host_id : int
                - credential_id : int
                - additional_credentials : List[int]
                    Array that holds additional credentials used for specific imports.
                    For DB Syncs, the first element is an SSL private key credential
                    id, and the second element is the corresponding public key
                    credential id.
                - name : str
            - destination : :class:`civis.Response`
                - remote_host_id : int
                - credential_id : int
                - additional_credentials : List[int]
                    Array that holds additional credentials used for specific imports.
                    For DB Syncs, the first element is an SSL private key credential
                    id, and the second element is the corresponding public key
                    credential id.
                - name : str
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - parent_id : int
                Parent id to trigger this import from
            - id : int
                The ID for the import.
            - is_outbound : bool
            - job_type : str
                The job type of this import.
            - syncs : List[:class:`civis.Response`]
                List of syncs.

                - id : int
                - source : :class:`civis.Response`
                    - id : int
                        The ID of the table or file, if available.
                    - path : str
                        The path of the dataset to sync from; for a database source,
                        schema.tablename. If you are doing a Google Sheet export, this
                        can be blank. This is a legacy parameter, it is recommended you
                        use one of the following: databaseTable, file, googleWorksheet
                    - database_table : :class:`civis.Response`
                        - schema : str
                            The database schema name.
                        - table : str
                            The database table name.
                        - use_without_schema : bool
                            This attribute is no longer available; defaults to false
                            but cannot be used.
                    - file : :class:`civis.Response`
                        - id : int
                            The file id.
                    - google_worksheet : :class:`civis.Response`
                        - spreadsheet : str
                            The spreadsheet document name.
                        - spreadsheet_id : str
                            The spreadsheet document id.
                        - worksheet : str
                            The worksheet tab name.
                        - worksheet_id : int
                            The worksheet tab id.
                    - salesforce : :class:`civis.Response`
                        - object_name : str
                            This parameter is deprecated
                - destination : :class:`civis.Response`
                    - path : str
                        The schema.tablename to sync to. If you are doing a Google
                        Sheet export, this is the spreadsheet and sheet name separated
                        by a period. i.e. if you have a spreadsheet named
                        "MySpreadsheet" and a sheet called "Sheet1" this field would be
                        "MySpreadsheet.Sheet1". This is a legacy parameter, it is
                        recommended you use one of the following: databaseTable,
                        googleWorksheet
                    - database_table : :class:`civis.Response`
                        - schema : str
                            The database schema name.
                        - table : str
                            The database table name.
                        - use_without_schema : bool
                            This attribute is no longer available; defaults to false
                            but cannot be used.
                    - google_worksheet : :class:`civis.Response`
                        - spreadsheet : str
                            The spreadsheet document name.
                        - spreadsheet_id : str
                            The spreadsheet document id.
                        - worksheet : str
                            The worksheet tab name.
                        - worksheet_id : int
                            The worksheet tab id.
                - advanced_options : :class:`civis.Response`
                    - max_errors : int
                        For Google Doc and Auto Imports. The maximum number of errors
                        that can occur without the job failing.
                    - existing_table_rows : str
                        For Google Doc and Auto Imports. The behavior if a table with
                        the requested name already exists.  One of "fail", "truncate",
                        "append", or "drop". Defaults to "fail".
                    - first_row_is_header : bool
                        For Google Doc and Auto Imports. A boolean value indicating
                        whether or not the first row is a header row.
                    - diststyle : str
                        For Auto Imports. The diststyle to use for a Redshift table.
                    - distkey : str
                        For Auto Imports. The distkey to use for a Redshift table.
                    - sortkey1 : str
                        For Auto Imports. The first sortkey to use for a Redshift
                        table.
                    - sortkey2 : str
                        For Auto Imports. The second sortkey to use for a Redshift
                        table.
                    - column_delimiter : str
                        For Auto Imports. The column delimiter for the file. Valid
                        arguments are "comma", "tab", and "pipe". If column_delimiter
                        is null or omitted, it will be auto-detected.
                    - column_overrides : :class:`civis.Response`
                        For Auto Imports. Hash used for overriding auto-detected names
                        and types, with keys being the index of the column being
                        overridden.
                    - escaped : bool
                        For Auto Imports. If true, escape quotes with a backslash;
                        otherwise, escape quotes by double-quoting. Defaults to false.
                    - identity_column : str
                        For DB Syncs. The column or columns to use as primary key for
                        incremental syncs. Should be a unique identifier. If blank,
                        primary key columns will be auto-detected. If more than one
                        identity column is specified, an identity column must be
                        specified for each table. We recommend the primary key be a
                        sequential data type such as an integer, double, timestamp,
                        date, or float. If using a primary key that is a string data
                        type, we recommend having a last_modified_column to ensure all
                        data is synced to the destination table.
                    - last_modified_column : str
                        For DB Syncs. The column to use to detect recently modified
                        data for incremental syncs. Defaults to "Auto-Detect", which
                        will use the first column it finds containing either "modif" or
                        "update" in the name. When specified, only rows where
                        last_modified_column in the source >= last_modified_column in
                        the destination will be synced.
                    - row_chunk_size : int
                        For DB Syncs. If specified, will split the sync into chunks of
                        this size.
                    - wipe_destination_table : bool
                        For DB Syncs. If true, will perform a full table refresh.
                    - truncate_long_lines : bool
                        For DB Syncs to Redshift. When true, truncates column data to
                        fit the column specification.
                    - invalid_char_replacement : str
                        For DB Syncs to Redshift. If specified, will replace each
                        invalid UTF-8 character with this character. Must be a single
                        ASCII character.
                    - verify_table_row_counts : bool
                        For DB Syncs. When true, an error will be raised if the
                        destination table does not have the same number of rows as the
                        source table after the sync.
                    - partition_column_name : str
                        This parameter is deprecated
                    - partition_schema_name : str
                        This parameter is deprecated
                    - partition_table_name : str
                        This parameter is deprecated
                    - partition_table_partition_column_min_name : str
                        This parameter is deprecated
                    - partition_table_partition_column_max_name : str
                        This parameter is deprecated
                    - mysql_catalog_matches_schema : bool
                        This attribute is no longer available; defaults to true but
                        cannot be used.
                    - chunking_method : str
                        This parameter is deprecated
                    - export_action : str
                        For Google Doc Exports. The kind of export action you want to
                        have the export execute. Set to "newsprsht" if you want a new
                        worksheet inside a new spreadsheet. Set to "newwksht" if you
                        want a new worksheet inside an existing spreadsheet. Set to
                        "updatewksht" if you want to overwrite an existing worksheet
                        inside an existing spreadsheet. Set to "appendwksht" if you
                        want to append to the end of an existing worksheet inside an
                        existing spreadsheet. Default is set to "newsprsht"
                    - sql_query : str
                        For Google Doc Exports. The SQL query for the export.
                    - contact_lists : str
                        This parameter is deprecated
                    - soql_query : str
                        This parameter is deprecated
                    - include_deleted_records : bool
                        This parameter is deprecated
            - state : str
            - created_at : str (date-time)
            - updated_at : str (date-time)
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this import.
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def list(
        self,
        *,
        type: str | None = ...,
        destination: str | None = ...,
        source: str | None = ...,
        status: str | None = ...,
        author: str | None = ...,
        hidden: bool | None = ...,
        archived: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseImportsList]:
        """List Imports

        API URL: ``GET /imports``

        Parameters
        ----------
        type : str, optional
            If specified, return imports of these types. It accepts a comma-separated
            list, possible values are Dbsync, AutoImport, GdocImport, and GdocExport.
        destination : str, optional
            If specified, returns imports with one of these destinations. It accepts a
            comma-separated list of remote host ids.
        source : str, optional
            If specified, returns imports with one of these sources. It accepts a
            comma-separated list of remote host ids. 'Dbsync' must be specified for
            'type'.
        status : str, optional
            If specified, returns imports with one of these statuses. It accepts a
            comma-separated list, possible values are 'running', 'failed', 'succeeded',
            'idle', 'scheduled'.
        author : str, optional
            If specified, return items from any of these authors. It accepts a comma-
            separated list of user IDs.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.
        archived : str, optional
            The archival status of the requested item(s).
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to updated_at. Must be
            one of: updated_at, name, created_at, last_run.updated_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - name : str
                The name of the import.
            - sync_type : str
                The type of sync to perform; one of Dbsync, AutoImport, GdocImport, and
                GdocExport.
            - source : :class:`civis.Response`
                - remote_host_id : int
                - credential_id : int
                - additional_credentials : List[int]
                    Array that holds additional credentials used for specific imports.
                    For DB Syncs, the first element is an SSL private key credential
                    id, and the second element is the corresponding public key
                    credential id.
                - name : str
            - destination : :class:`civis.Response`
                - remote_host_id : int
                - credential_id : int
                - additional_credentials : List[int]
                    Array that holds additional credentials used for specific imports.
                    For DB Syncs, the first element is an SSL private key credential
                    id, and the second element is the corresponding public key
                    credential id.
                - name : str
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - id : int
                The ID for the import.
            - is_outbound : bool
            - job_type : str
                The job type of this import.
            - state : str
            - created_at : str (date-time)
            - updated_at : str (date-time)
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - time_zone : str
                The time zone of this import.
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def post(
        self,
        name: str,
        sync_type: str,
        is_outbound: bool,
        *,
        source: dict | None = ...,
        destination: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        parent_id: int | None = ...,
        next_run_at: str | None = ...,
        time_zone: str | None = ...,
        hidden: bool | None = ...,
    ) -> _ResponseImportsPost:
        """Create a new import configuration

        API URL: ``POST /imports``

        Parameters
        ----------
        name : str
            The name of the import.
        sync_type : str
            The type of sync to perform; one of Dbsync, AutoImport, GdocImport, and
            GdocExport.
        is_outbound : bool
        source : dict, optional
            - remote_host_id : int
            - credential_id : int
            - additional_credentials : List[int]
                Array that holds additional credentials used for specific imports. For
                DB Syncs, the first element is an SSL private key credential id, and
                the second element is the corresponding public key credential id.
        destination : dict, optional
            - remote_host_id : int
            - credential_id : int
            - additional_credentials : List[int]
                Array that holds additional credentials used for specific imports. For
                DB Syncs, the first element is an SSL private key credential id, and
                the second element is the corresponding public key credential id.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        parent_id : int, optional
            Parent id to trigger this import from
        next_run_at : str (time), optional
            The time of the next scheduled run.
        time_zone : str, optional
            The time zone of this import.
        hidden : bool, optional
            The hidden status of the item.

        Returns
        -------
        :class:`civis.Response`
            - name : str
                The name of the import.
            - sync_type : str
                The type of sync to perform; one of Dbsync, AutoImport, GdocImport, and
                GdocExport.
            - source : :class:`civis.Response`
                - remote_host_id : int
                - credential_id : int
                - additional_credentials : List[int]
                    Array that holds additional credentials used for specific imports.
                    For DB Syncs, the first element is an SSL private key credential
                    id, and the second element is the corresponding public key
                    credential id.
                - name : str
            - destination : :class:`civis.Response`
                - remote_host_id : int
                - credential_id : int
                - additional_credentials : List[int]
                    Array that holds additional credentials used for specific imports.
                    For DB Syncs, the first element is an SSL private key credential
                    id, and the second element is the corresponding public key
                    credential id.
                - name : str
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - parent_id : int
                Parent id to trigger this import from
            - id : int
                The ID for the import.
            - is_outbound : bool
            - job_type : str
                The job type of this import.
            - syncs : List[:class:`civis.Response`]
                List of syncs.

                - id : int
                - source : :class:`civis.Response`
                    - id : int
                        The ID of the table or file, if available.
                    - path : str
                        The path of the dataset to sync from; for a database source,
                        schema.tablename. If you are doing a Google Sheet export, this
                        can be blank. This is a legacy parameter, it is recommended you
                        use one of the following: databaseTable, file, googleWorksheet
                    - database_table : :class:`civis.Response`
                        - schema : str
                            The database schema name.
                        - table : str
                            The database table name.
                        - use_without_schema : bool
                            This attribute is no longer available; defaults to false
                            but cannot be used.
                    - file : :class:`civis.Response`
                        - id : int
                            The file id.
                    - google_worksheet : :class:`civis.Response`
                        - spreadsheet : str
                            The spreadsheet document name.
                        - spreadsheet_id : str
                            The spreadsheet document id.
                        - worksheet : str
                            The worksheet tab name.
                        - worksheet_id : int
                            The worksheet tab id.
                    - salesforce : :class:`civis.Response`
                        - object_name : str
                            This parameter is deprecated
                - destination : :class:`civis.Response`
                    - path : str
                        The schema.tablename to sync to. If you are doing a Google
                        Sheet export, this is the spreadsheet and sheet name separated
                        by a period. i.e. if you have a spreadsheet named
                        "MySpreadsheet" and a sheet called "Sheet1" this field would be
                        "MySpreadsheet.Sheet1". This is a legacy parameter, it is
                        recommended you use one of the following: databaseTable,
                        googleWorksheet
                    - database_table : :class:`civis.Response`
                        - schema : str
                            The database schema name.
                        - table : str
                            The database table name.
                        - use_without_schema : bool
                            This attribute is no longer available; defaults to false
                            but cannot be used.
                    - google_worksheet : :class:`civis.Response`
                        - spreadsheet : str
                            The spreadsheet document name.
                        - spreadsheet_id : str
                            The spreadsheet document id.
                        - worksheet : str
                            The worksheet tab name.
                        - worksheet_id : int
                            The worksheet tab id.
                - advanced_options : :class:`civis.Response`
                    - max_errors : int
                        For Google Doc and Auto Imports. The maximum number of errors
                        that can occur without the job failing.
                    - existing_table_rows : str
                        For Google Doc and Auto Imports. The behavior if a table with
                        the requested name already exists.  One of "fail", "truncate",
                        "append", or "drop". Defaults to "fail".
                    - first_row_is_header : bool
                        For Google Doc and Auto Imports. A boolean value indicating
                        whether or not the first row is a header row.
                    - diststyle : str
                        For Auto Imports. The diststyle to use for a Redshift table.
                    - distkey : str
                        For Auto Imports. The distkey to use for a Redshift table.
                    - sortkey1 : str
                        For Auto Imports. The first sortkey to use for a Redshift
                        table.
                    - sortkey2 : str
                        For Auto Imports. The second sortkey to use for a Redshift
                        table.
                    - column_delimiter : str
                        For Auto Imports. The column delimiter for the file. Valid
                        arguments are "comma", "tab", and "pipe". If column_delimiter
                        is null or omitted, it will be auto-detected.
                    - column_overrides : :class:`civis.Response`
                        For Auto Imports. Hash used for overriding auto-detected names
                        and types, with keys being the index of the column being
                        overridden.
                    - escaped : bool
                        For Auto Imports. If true, escape quotes with a backslash;
                        otherwise, escape quotes by double-quoting. Defaults to false.
                    - identity_column : str
                        For DB Syncs. The column or columns to use as primary key for
                        incremental syncs. Should be a unique identifier. If blank,
                        primary key columns will be auto-detected. If more than one
                        identity column is specified, an identity column must be
                        specified for each table. We recommend the primary key be a
                        sequential data type such as an integer, double, timestamp,
                        date, or float. If using a primary key that is a string data
                        type, we recommend having a last_modified_column to ensure all
                        data is synced to the destination table.
                    - last_modified_column : str
                        For DB Syncs. The column to use to detect recently modified
                        data for incremental syncs. Defaults to "Auto-Detect", which
                        will use the first column it finds containing either "modif" or
                        "update" in the name. When specified, only rows where
                        last_modified_column in the source >= last_modified_column in
                        the destination will be synced.
                    - row_chunk_size : int
                        For DB Syncs. If specified, will split the sync into chunks of
                        this size.
                    - wipe_destination_table : bool
                        For DB Syncs. If true, will perform a full table refresh.
                    - truncate_long_lines : bool
                        For DB Syncs to Redshift. When true, truncates column data to
                        fit the column specification.
                    - invalid_char_replacement : str
                        For DB Syncs to Redshift. If specified, will replace each
                        invalid UTF-8 character with this character. Must be a single
                        ASCII character.
                    - verify_table_row_counts : bool
                        For DB Syncs. When true, an error will be raised if the
                        destination table does not have the same number of rows as the
                        source table after the sync.
                    - partition_column_name : str
                        This parameter is deprecated
                    - partition_schema_name : str
                        This parameter is deprecated
                    - partition_table_name : str
                        This parameter is deprecated
                    - partition_table_partition_column_min_name : str
                        This parameter is deprecated
                    - partition_table_partition_column_max_name : str
                        This parameter is deprecated
                    - mysql_catalog_matches_schema : bool
                        This attribute is no longer available; defaults to true but
                        cannot be used.
                    - chunking_method : str
                        This parameter is deprecated
                    - export_action : str
                        For Google Doc Exports. The kind of export action you want to
                        have the export execute. Set to "newsprsht" if you want a new
                        worksheet inside a new spreadsheet. Set to "newwksht" if you
                        want a new worksheet inside an existing spreadsheet. Set to
                        "updatewksht" if you want to overwrite an existing worksheet
                        inside an existing spreadsheet. Set to "appendwksht" if you
                        want to append to the end of an existing worksheet inside an
                        existing spreadsheet. Default is set to "newsprsht"
                    - sql_query : str
                        For Google Doc Exports. The SQL query for the export.
                    - contact_lists : str
                        This parameter is deprecated
                    - soql_query : str
                        This parameter is deprecated
                    - include_deleted_records : bool
                        This parameter is deprecated
            - state : str
            - created_at : str (date-time)
            - updated_at : str (date-time)
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this import.
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def post_files(
        self,
        schema: str,
        name: str,
        remote_host_id: int,
        credential_id: int,
        *,
        max_errors: int | None = ...,
        existing_table_rows: str | None = ...,
        diststyle: str | None = ...,
        distkey: str | None = ...,
        sortkey1: str | None = ...,
        sortkey2: str | None = ...,
        column_delimiter: str | None = ...,
        first_row_is_header: bool | None = ...,
        multipart: bool | None = ...,
        escaped: bool | None = ...,
        hidden: bool | None = ...,
    ) -> _ResponseImportsPostFiles:
        """Initate an import of a tabular file into the platform

        API URL: ``POST /imports/files``

        Parameters
        ----------
        schema : str
            The schema of the destination table.
        name : str
            The name of the destination table.
        remote_host_id : int
            The id of the destination database host.
        credential_id : int
            The id of the credentials to be used when performing the database import.
        max_errors : int, optional
            The maximum number of rows with errors to remove from the import before
            failing.
        existing_table_rows : str, optional
            The behaviour if a table with the requested name already exists.  One of
            "fail", "truncate", "append", or "drop".Defaults to "fail".
        diststyle : str, optional
            The diststyle to use for the table. One of "even", "all", or "key".
        distkey : str, optional
            The column to use as the distkey for the table.
        sortkey1 : str, optional
            The column to use as the sort key for the table.
        sortkey2 : str, optional
            The second column in a compound sortkey for the table.
        column_delimiter : str, optional
            The column delimiter of the file. If column_delimiter is null or omitted,
            it will be auto-detected. Valid arguments are "comma", "tab", and "pipe".
        first_row_is_header : bool, optional
            A boolean value indicating whether or not the first row is a header row. If
            first_row_is_header is null or omitted, it will be auto-detected.
        multipart : bool, optional
            If true, the upload URI will require a `multipart/form-data` POST request.
            Defaults to false.
        escaped : bool, optional
            If true, escape quotes with a backslash; otherwise, escape quotes by
            double-quoting. Defaults to false.
        hidden : bool, optional
            The hidden status of the item.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The id of the import.
            - upload_uri : str
                The URI which may be used to upload a tabular file for import. You must
                use this URI to upload the file you wish imported and then inform the
                Civis API when your upload is complete using the URI given by the
                runUri field of this response.
            - run_uri : str
                The URI to POST to once the file upload is complete. After uploading
                the file using the URI given in the uploadUri attribute of the
                response, POST to this URI to initiate the import of your uploaded file
                into the platform.
            - upload_fields : :class:`civis.Response`
                If multipart was set to true, these fields should be included in the
                multipart upload.
        """
        ...

    def post_files_runs(
        self,
        id: int,
    ) -> _ResponseImportsPostFilesRuns:
        """Start a run

        API URL: ``POST /imports/files/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Import job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - import_id : int
                The ID of the Import job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def list_files_runs(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseImportsListFilesRuns]:
        """List runs for the given Import job

        API URL: ``GET /imports/files/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Import job.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the run.
            - import_id : int
                The ID of the Import job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def get_files_runs(
        self,
        id: int,
        run_id: int,
    ) -> _ResponseImportsGetFilesRuns:
        """Check status of a run

        API URL: ``GET /imports/files/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Import job.
        run_id : int
            The ID of the run.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - import_id : int
                The ID of the Import job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def delete_files_runs(
        self,
        id: int,
        run_id: int,
    ) -> Response:
        """Cancel a run

        API URL: ``DELETE /imports/files/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Import job.
        run_id : int
            The ID of the run.

        Returns
        -------
        None
            Response code 202: success
        """
        ...

    def list_files_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseImportsListFilesRunsLogs]:
        """Get the logs for a run

        API URL: ``GET /imports/files/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the Import job.
        run_id : int
            The ID of the run.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def list_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseImportsListRunsLogs]:
        """Get the logs for a run

        API URL: ``GET /imports/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the import job.
        run_id : int
            The ID of the run.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def post_files_csv(
        self,
        source: dict,
        destination: dict,
        first_row_is_header: bool,
        *,
        name: str | None = ...,
        column_delimiter: str | None = ...,
        escaped: bool | None = ...,
        compression: str | None = ...,
        existing_table_rows: str | None = ...,
        max_errors: int | None = ...,
        table_columns: List[dict] | None = ...,
        loosen_types: bool | None = ...,
        execution: str | None = ...,
        redshift_destination_options: dict | None = ...,
        hidden: bool | None = ...,
    ) -> _ResponseImportsPostFilesCsv:
        """Create a CSV Import

        API URL: ``POST /imports/files/csv``

        Parameters
        ----------
        source : dict
            - file_ids : List[int]
                The file ID(s) to import, if importing Civis file(s).
            - storage_path : dict
                - storage_host_id : int
                    The ID of the source storage host.
                - credential_id : int
                    The ID of the credentials for the source storage host.
                - file_paths : List[str]
                    The file or directory path(s) within the bucket from which to
                    import.  E.g. the file_path for "s3://mybucket/files/all/" would be
                    "/files/all/"If specifying a directory path, the job will import
                    every file found under that path. All files must have the same
                    column layout and file format (e.g., compression, columnDelimiter,
                    etc.).
        destination : dict
            - schema : str
                The destination schema name.
            - table : str
                The destination table name.
            - remote_host_id : int
                The ID of the destination database host.
            - credential_id : int
                The ID of the credentials for the destination database.
            - primary_keys : List[str]
                A list of column(s) which together uniquely identify a row in the
                destination table.These columns must not contain NULL values. If the
                import mode is "upsert", this field is required;see the Civis Helpdesk
                article on "Advanced CSV Imports via the Civis API" for more
                information.
            - last_modified_keys : List[str]
                A list of the columns indicating a record has been updated.If the
                destination table does not exist, and the import mode is "upsert", this
                field is required.
        first_row_is_header : bool
            A boolean value indicating whether or not the first row of the source file
            is a header row.
        name : str, optional
            The name of the import.
        column_delimiter : str, optional
            The column delimiter for the file. Valid arguments are "comma", "tab", and
            "pipe". Defaults to "comma".
        escaped : bool, optional
            A boolean value indicating whether or not the source file has quotes
            escaped with a backslash.Defaults to false.
        compression : str, optional
            The type of compression of the source file. Valid arguments are "gzip" and
            "none". Defaults to "none".
        existing_table_rows : str, optional
            The behavior if a destination table with the requested name already exists.
            One of "fail", "truncate", "append", "drop", or "upsert".Defaults to
            "fail".
        max_errors : int, optional
            The maximum number of rows with errors to ignore before failing. This
            option is not supported for Postgres databases.
        table_columns : List[dict], optional
            An array of hashes corresponding to the columns in the order they appear in
            the source file. Each hash should have keys for database column "name" and
            "sqlType".This parameter is required if the table does not exist, the table
            is being dropped, or the columns in the source file do not appear in the
            same order as in the destination table.The "sqlType" key is not required
            when appending to an existing table.

            - name : str
                The column name.
            - sql_type : str
                The SQL type of the column.
        loosen_types : bool, optional
            If true, SQL types with precisions/lengths will have these values increased
            to accommodate data growth in future loads. Type loosening only occurs on
            table creation. Defaults to false.
        execution : str, optional
            In upsert mode, controls the movement of data in upsert mode. If set to
            "delayed", the data will be moved after a brief delay. If set to
            "immediate", the data will be moved immediately. In non-upsert modes,
            controls the speed at which detailed column stats appear in the data
            catalogue. Defaults to "delayed", to accommodate concurrent upserts to the
            same table and speedier non-upsert imports.
        redshift_destination_options : dict, optional
            - diststyle : str
                The diststyle to use for the table. One of "even", "all", or "key".
            - distkey : str
                Distkey for this table in Redshift
            - sortkeys : List[str]
                Sortkeys for this table in Redshift. Please provide a maximum of two.
        hidden : bool, optional
            The hidden status of the item.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the import.
            - name : str
                The name of the import.
            - source : :class:`civis.Response`
                - file_ids : List[int]
                    The file ID(s) to import, if importing Civis file(s).
                - storage_path : :class:`civis.Response`
                    - storage_host_id : int
                        The ID of the source storage host.
                    - credential_id : int
                        The ID of the credentials for the source storage host.
                    - file_paths : List[str]
                        The file or directory path(s) within the bucket from which to
                        import.  E.g. the file_path for "s3://mybucket/files/all/"
                        would be "/files/all/"If specifying a directory path, the job
                        will import every file found under that path. All files must
                        have the same column layout and file format (e.g., compression,
                        columnDelimiter, etc.).
            - destination : :class:`civis.Response`
                - schema : str
                    The destination schema name.
                - table : str
                    The destination table name.
                - remote_host_id : int
                    The ID of the destination database host.
                - credential_id : int
                    The ID of the credentials for the destination database.
                - primary_keys : List[str]
                    A list of column(s) which together uniquely identify a row in the
                    destination table.These columns must not contain NULL values. If
                    the import mode is "upsert", this field is required;see the Civis
                    Helpdesk article on "Advanced CSV Imports via the Civis API" for
                    more information.
                - last_modified_keys : List[str]
                    A list of the columns indicating a record has been updated.If the
                    destination table does not exist, and the import mode is "upsert",
                    this field is required.
            - first_row_is_header : bool
                A boolean value indicating whether or not the first row of the source
                file is a header row.
            - column_delimiter : str
                The column delimiter for the file. Valid arguments are "comma", "tab",
                and "pipe". Defaults to "comma".
            - escaped : bool
                A boolean value indicating whether or not the source file has quotes
                escaped with a backslash.Defaults to false.
            - compression : str
                The type of compression of the source file. Valid arguments are "gzip"
                and "none". Defaults to "none".
            - existing_table_rows : str
                The behavior if a destination table with the requested name already
                exists.  One of "fail", "truncate", "append", "drop", or
                "upsert".Defaults to "fail".
            - max_errors : int
                The maximum number of rows with errors to ignore before failing. This
                option is not supported for Postgres databases.
            - table_columns : List[:class:`civis.Response`]
                An array of hashes corresponding to the columns in the order they
                appear in the source file. Each hash should have keys for database
                column "name" and "sqlType".This parameter is required if the table
                does not exist, the table is being dropped, or the columns in the
                source file do not appear in the same order as in the destination
                table.The "sqlType" key is not required when appending to an existing
                table.

                - name : str
                    The column name.
                - sql_type : str
                    The SQL type of the column.
            - loosen_types : bool
                If true, SQL types with precisions/lengths will have these values
                increased to accommodate data growth in future loads. Type loosening
                only occurs on table creation. Defaults to false.
            - execution : str
                In upsert mode, controls the movement of data in upsert mode. If set to
                "delayed", the data will be moved after a brief delay. If set to
                "immediate", the data will be moved immediately. In non-upsert modes,
                controls the speed at which detailed column stats appear in the data
                catalogue. Defaults to "delayed", to accommodate concurrent upserts to
                the same table and speedier non-upsert imports.
            - redshift_destination_options : :class:`civis.Response`
                - diststyle : str
                    The diststyle to use for the table. One of "even", "all", or "key".
                - distkey : str
                    Distkey for this table in Redshift
                - sortkeys : List[str]
                    Sortkeys for this table in Redshift. Please provide a maximum of
                    two.
            - hidden : bool
                The hidden status of the item.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def get_files_csv(
        self,
        id: int,
    ) -> _ResponseImportsGetFilesCsv:
        """Get a CSV Import

        API URL: ``GET /imports/files/csv/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the import.
            - name : str
                The name of the import.
            - source : :class:`civis.Response`
                - file_ids : List[int]
                    The file ID(s) to import, if importing Civis file(s).
                - storage_path : :class:`civis.Response`
                    - storage_host_id : int
                        The ID of the source storage host.
                    - credential_id : int
                        The ID of the credentials for the source storage host.
                    - file_paths : List[str]
                        The file or directory path(s) within the bucket from which to
                        import.  E.g. the file_path for "s3://mybucket/files/all/"
                        would be "/files/all/"If specifying a directory path, the job
                        will import every file found under that path. All files must
                        have the same column layout and file format (e.g., compression,
                        columnDelimiter, etc.).
            - destination : :class:`civis.Response`
                - schema : str
                    The destination schema name.
                - table : str
                    The destination table name.
                - remote_host_id : int
                    The ID of the destination database host.
                - credential_id : int
                    The ID of the credentials for the destination database.
                - primary_keys : List[str]
                    A list of column(s) which together uniquely identify a row in the
                    destination table.These columns must not contain NULL values. If
                    the import mode is "upsert", this field is required;see the Civis
                    Helpdesk article on "Advanced CSV Imports via the Civis API" for
                    more information.
                - last_modified_keys : List[str]
                    A list of the columns indicating a record has been updated.If the
                    destination table does not exist, and the import mode is "upsert",
                    this field is required.
            - first_row_is_header : bool
                A boolean value indicating whether or not the first row of the source
                file is a header row.
            - column_delimiter : str
                The column delimiter for the file. Valid arguments are "comma", "tab",
                and "pipe". Defaults to "comma".
            - escaped : bool
                A boolean value indicating whether or not the source file has quotes
                escaped with a backslash.Defaults to false.
            - compression : str
                The type of compression of the source file. Valid arguments are "gzip"
                and "none". Defaults to "none".
            - existing_table_rows : str
                The behavior if a destination table with the requested name already
                exists.  One of "fail", "truncate", "append", "drop", or
                "upsert".Defaults to "fail".
            - max_errors : int
                The maximum number of rows with errors to ignore before failing. This
                option is not supported for Postgres databases.
            - table_columns : List[:class:`civis.Response`]
                An array of hashes corresponding to the columns in the order they
                appear in the source file. Each hash should have keys for database
                column "name" and "sqlType".This parameter is required if the table
                does not exist, the table is being dropped, or the columns in the
                source file do not appear in the same order as in the destination
                table.The "sqlType" key is not required when appending to an existing
                table.

                - name : str
                    The column name.
                - sql_type : str
                    The SQL type of the column.
            - loosen_types : bool
                If true, SQL types with precisions/lengths will have these values
                increased to accommodate data growth in future loads. Type loosening
                only occurs on table creation. Defaults to false.
            - execution : str
                In upsert mode, controls the movement of data in upsert mode. If set to
                "delayed", the data will be moved after a brief delay. If set to
                "immediate", the data will be moved immediately. In non-upsert modes,
                controls the speed at which detailed column stats appear in the data
                catalogue. Defaults to "delayed", to accommodate concurrent upserts to
                the same table and speedier non-upsert imports.
            - redshift_destination_options : :class:`civis.Response`
                - diststyle : str
                    The diststyle to use for the table. One of "even", "all", or "key".
                - distkey : str
                    Distkey for this table in Redshift
                - sortkeys : List[str]
                    Sortkeys for this table in Redshift. Please provide a maximum of
                    two.
            - hidden : bool
                The hidden status of the item.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def put_files_csv(
        self,
        id: int,
        source: dict,
        destination: dict,
        first_row_is_header: bool,
        *,
        name: str | None = ...,
        column_delimiter: str | None = ...,
        escaped: bool | None = ...,
        compression: str | None = ...,
        existing_table_rows: str | None = ...,
        max_errors: int | None = ...,
        table_columns: List[dict] | None = ...,
        loosen_types: bool | None = ...,
        execution: str | None = ...,
        redshift_destination_options: dict | None = ...,
    ) -> _ResponseImportsPutFilesCsv:
        """Replace all attributes of this CSV Import

        API URL: ``PUT /imports/files/csv/{id}``

        Parameters
        ----------
        id : int
            The ID for the import.
        source : dict
            - file_ids : List[int]
                The file ID(s) to import, if importing Civis file(s).
            - storage_path : dict
                - storage_host_id : int
                    The ID of the source storage host.
                - credential_id : int
                    The ID of the credentials for the source storage host.
                - file_paths : List[str]
                    The file or directory path(s) within the bucket from which to
                    import.  E.g. the file_path for "s3://mybucket/files/all/" would be
                    "/files/all/"If specifying a directory path, the job will import
                    every file found under that path. All files must have the same
                    column layout and file format (e.g., compression, columnDelimiter,
                    etc.).
        destination : dict
            - schema : str
                The destination schema name.
            - table : str
                The destination table name.
            - remote_host_id : int
                The ID of the destination database host.
            - credential_id : int
                The ID of the credentials for the destination database.
            - primary_keys : List[str]
                A list of column(s) which together uniquely identify a row in the
                destination table.These columns must not contain NULL values. If the
                import mode is "upsert", this field is required;see the Civis Helpdesk
                article on "Advanced CSV Imports via the Civis API" for more
                information.
            - last_modified_keys : List[str]
                A list of the columns indicating a record has been updated.If the
                destination table does not exist, and the import mode is "upsert", this
                field is required.
        first_row_is_header : bool
            A boolean value indicating whether or not the first row of the source file
            is a header row.
        name : str, optional
            The name of the import.
        column_delimiter : str, optional
            The column delimiter for the file. Valid arguments are "comma", "tab", and
            "pipe". Defaults to "comma".
        escaped : bool, optional
            A boolean value indicating whether or not the source file has quotes
            escaped with a backslash.Defaults to false.
        compression : str, optional
            The type of compression of the source file. Valid arguments are "gzip" and
            "none". Defaults to "none".
        existing_table_rows : str, optional
            The behavior if a destination table with the requested name already exists.
            One of "fail", "truncate", "append", "drop", or "upsert".Defaults to
            "fail".
        max_errors : int, optional
            The maximum number of rows with errors to ignore before failing. This
            option is not supported for Postgres databases.
        table_columns : List[dict], optional
            An array of hashes corresponding to the columns in the order they appear in
            the source file. Each hash should have keys for database column "name" and
            "sqlType".This parameter is required if the table does not exist, the table
            is being dropped, or the columns in the source file do not appear in the
            same order as in the destination table.The "sqlType" key is not required
            when appending to an existing table.

            - name : str
                The column name.
            - sql_type : str
                The SQL type of the column.
        loosen_types : bool, optional
            If true, SQL types with precisions/lengths will have these values increased
            to accommodate data growth in future loads. Type loosening only occurs on
            table creation. Defaults to false.
        execution : str, optional
            In upsert mode, controls the movement of data in upsert mode. If set to
            "delayed", the data will be moved after a brief delay. If set to
            "immediate", the data will be moved immediately. In non-upsert modes,
            controls the speed at which detailed column stats appear in the data
            catalogue. Defaults to "delayed", to accommodate concurrent upserts to the
            same table and speedier non-upsert imports.
        redshift_destination_options : dict, optional
            - diststyle : str
                The diststyle to use for the table. One of "even", "all", or "key".
            - distkey : str
                Distkey for this table in Redshift
            - sortkeys : List[str]
                Sortkeys for this table in Redshift. Please provide a maximum of two.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the import.
            - name : str
                The name of the import.
            - source : :class:`civis.Response`
                - file_ids : List[int]
                    The file ID(s) to import, if importing Civis file(s).
                - storage_path : :class:`civis.Response`
                    - storage_host_id : int
                        The ID of the source storage host.
                    - credential_id : int
                        The ID of the credentials for the source storage host.
                    - file_paths : List[str]
                        The file or directory path(s) within the bucket from which to
                        import.  E.g. the file_path for "s3://mybucket/files/all/"
                        would be "/files/all/"If specifying a directory path, the job
                        will import every file found under that path. All files must
                        have the same column layout and file format (e.g., compression,
                        columnDelimiter, etc.).
            - destination : :class:`civis.Response`
                - schema : str
                    The destination schema name.
                - table : str
                    The destination table name.
                - remote_host_id : int
                    The ID of the destination database host.
                - credential_id : int
                    The ID of the credentials for the destination database.
                - primary_keys : List[str]
                    A list of column(s) which together uniquely identify a row in the
                    destination table.These columns must not contain NULL values. If
                    the import mode is "upsert", this field is required;see the Civis
                    Helpdesk article on "Advanced CSV Imports via the Civis API" for
                    more information.
                - last_modified_keys : List[str]
                    A list of the columns indicating a record has been updated.If the
                    destination table does not exist, and the import mode is "upsert",
                    this field is required.
            - first_row_is_header : bool
                A boolean value indicating whether or not the first row of the source
                file is a header row.
            - column_delimiter : str
                The column delimiter for the file. Valid arguments are "comma", "tab",
                and "pipe". Defaults to "comma".
            - escaped : bool
                A boolean value indicating whether or not the source file has quotes
                escaped with a backslash.Defaults to false.
            - compression : str
                The type of compression of the source file. Valid arguments are "gzip"
                and "none". Defaults to "none".
            - existing_table_rows : str
                The behavior if a destination table with the requested name already
                exists.  One of "fail", "truncate", "append", "drop", or
                "upsert".Defaults to "fail".
            - max_errors : int
                The maximum number of rows with errors to ignore before failing. This
                option is not supported for Postgres databases.
            - table_columns : List[:class:`civis.Response`]
                An array of hashes corresponding to the columns in the order they
                appear in the source file. Each hash should have keys for database
                column "name" and "sqlType".This parameter is required if the table
                does not exist, the table is being dropped, or the columns in the
                source file do not appear in the same order as in the destination
                table.The "sqlType" key is not required when appending to an existing
                table.

                - name : str
                    The column name.
                - sql_type : str
                    The SQL type of the column.
            - loosen_types : bool
                If true, SQL types with precisions/lengths will have these values
                increased to accommodate data growth in future loads. Type loosening
                only occurs on table creation. Defaults to false.
            - execution : str
                In upsert mode, controls the movement of data in upsert mode. If set to
                "delayed", the data will be moved after a brief delay. If set to
                "immediate", the data will be moved immediately. In non-upsert modes,
                controls the speed at which detailed column stats appear in the data
                catalogue. Defaults to "delayed", to accommodate concurrent upserts to
                the same table and speedier non-upsert imports.
            - redshift_destination_options : :class:`civis.Response`
                - diststyle : str
                    The diststyle to use for the table. One of "even", "all", or "key".
                - distkey : str
                    Distkey for this table in Redshift
                - sortkeys : List[str]
                    Sortkeys for this table in Redshift. Please provide a maximum of
                    two.
            - hidden : bool
                The hidden status of the item.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def patch_files_csv(
        self,
        id: int,
        *,
        name: str | None = ...,
        source: dict | None = ...,
        destination: dict | None = ...,
        first_row_is_header: bool | None = ...,
        column_delimiter: str | None = ...,
        escaped: bool | None = ...,
        compression: str | None = ...,
        existing_table_rows: str | None = ...,
        max_errors: int | None = ...,
        table_columns: List[dict] | None = ...,
        loosen_types: bool | None = ...,
        execution: str | None = ...,
        redshift_destination_options: dict | None = ...,
    ) -> _ResponseImportsPatchFilesCsv:
        """Update some attributes of this CSV Import

        API URL: ``PATCH /imports/files/csv/{id}``

        Parameters
        ----------
        id : int
            The ID for the import.
        name : str, optional
            The name of the import.
        source : dict, optional
            - file_ids : List[int]
                The file ID(s) to import, if importing Civis file(s).
            - storage_path : dict
                - storage_host_id : int
                    The ID of the source storage host.
                - credential_id : int
                    The ID of the credentials for the source storage host.
                - file_paths : List[str]
                    The file or directory path(s) within the bucket from which to
                    import.  E.g. the file_path for "s3://mybucket/files/all/" would be
                    "/files/all/"If specifying a directory path, the job will import
                    every file found under that path. All files must have the same
                    column layout and file format (e.g., compression, columnDelimiter,
                    etc.).
        destination : dict, optional
            - schema : str
                The destination schema name.
            - table : str
                The destination table name.
            - remote_host_id : int
                The ID of the destination database host.
            - credential_id : int
                The ID of the credentials for the destination database.
            - primary_keys : List[str]
                A list of column(s) which together uniquely identify a row in the
                destination table.These columns must not contain NULL values. If the
                import mode is "upsert", this field is required;see the Civis Helpdesk
                article on "Advanced CSV Imports via the Civis API" for more
                information.
            - last_modified_keys : List[str]
                A list of the columns indicating a record has been updated.If the
                destination table does not exist, and the import mode is "upsert", this
                field is required.
        first_row_is_header : bool, optional
            A boolean value indicating whether or not the first row of the source file
            is a header row.
        column_delimiter : str, optional
            The column delimiter for the file. Valid arguments are "comma", "tab", and
            "pipe". Defaults to "comma".
        escaped : bool, optional
            A boolean value indicating whether or not the source file has quotes
            escaped with a backslash.Defaults to false.
        compression : str, optional
            The type of compression of the source file. Valid arguments are "gzip" and
            "none". Defaults to "none".
        existing_table_rows : str, optional
            The behavior if a destination table with the requested name already exists.
            One of "fail", "truncate", "append", "drop", or "upsert".Defaults to
            "fail".
        max_errors : int, optional
            The maximum number of rows with errors to ignore before failing. This
            option is not supported for Postgres databases.
        table_columns : List[dict], optional
            An array of hashes corresponding to the columns in the order they appear in
            the source file. Each hash should have keys for database column "name" and
            "sqlType".This parameter is required if the table does not exist, the table
            is being dropped, or the columns in the source file do not appear in the
            same order as in the destination table.The "sqlType" key is not required
            when appending to an existing table.

            - name : str
                The column name.
            - sql_type : str
                The SQL type of the column.
        loosen_types : bool, optional
            If true, SQL types with precisions/lengths will have these values increased
            to accommodate data growth in future loads. Type loosening only occurs on
            table creation. Defaults to false.
        execution : str, optional
            In upsert mode, controls the movement of data in upsert mode. If set to
            "delayed", the data will be moved after a brief delay. If set to
            "immediate", the data will be moved immediately. In non-upsert modes,
            controls the speed at which detailed column stats appear in the data
            catalogue. Defaults to "delayed", to accommodate concurrent upserts to the
            same table and speedier non-upsert imports.
        redshift_destination_options : dict, optional
            - diststyle : str
                The diststyle to use for the table. One of "even", "all", or "key".
            - distkey : str
                Distkey for this table in Redshift
            - sortkeys : List[str]
                Sortkeys for this table in Redshift. Please provide a maximum of two.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the import.
            - name : str
                The name of the import.
            - source : :class:`civis.Response`
                - file_ids : List[int]
                    The file ID(s) to import, if importing Civis file(s).
                - storage_path : :class:`civis.Response`
                    - storage_host_id : int
                        The ID of the source storage host.
                    - credential_id : int
                        The ID of the credentials for the source storage host.
                    - file_paths : List[str]
                        The file or directory path(s) within the bucket from which to
                        import.  E.g. the file_path for "s3://mybucket/files/all/"
                        would be "/files/all/"If specifying a directory path, the job
                        will import every file found under that path. All files must
                        have the same column layout and file format (e.g., compression,
                        columnDelimiter, etc.).
            - destination : :class:`civis.Response`
                - schema : str
                    The destination schema name.
                - table : str
                    The destination table name.
                - remote_host_id : int
                    The ID of the destination database host.
                - credential_id : int
                    The ID of the credentials for the destination database.
                - primary_keys : List[str]
                    A list of column(s) which together uniquely identify a row in the
                    destination table.These columns must not contain NULL values. If
                    the import mode is "upsert", this field is required;see the Civis
                    Helpdesk article on "Advanced CSV Imports via the Civis API" for
                    more information.
                - last_modified_keys : List[str]
                    A list of the columns indicating a record has been updated.If the
                    destination table does not exist, and the import mode is "upsert",
                    this field is required.
            - first_row_is_header : bool
                A boolean value indicating whether or not the first row of the source
                file is a header row.
            - column_delimiter : str
                The column delimiter for the file. Valid arguments are "comma", "tab",
                and "pipe". Defaults to "comma".
            - escaped : bool
                A boolean value indicating whether or not the source file has quotes
                escaped with a backslash.Defaults to false.
            - compression : str
                The type of compression of the source file. Valid arguments are "gzip"
                and "none". Defaults to "none".
            - existing_table_rows : str
                The behavior if a destination table with the requested name already
                exists.  One of "fail", "truncate", "append", "drop", or
                "upsert".Defaults to "fail".
            - max_errors : int
                The maximum number of rows with errors to ignore before failing. This
                option is not supported for Postgres databases.
            - table_columns : List[:class:`civis.Response`]
                An array of hashes corresponding to the columns in the order they
                appear in the source file. Each hash should have keys for database
                column "name" and "sqlType".This parameter is required if the table
                does not exist, the table is being dropped, or the columns in the
                source file do not appear in the same order as in the destination
                table.The "sqlType" key is not required when appending to an existing
                table.

                - name : str
                    The column name.
                - sql_type : str
                    The SQL type of the column.
            - loosen_types : bool
                If true, SQL types with precisions/lengths will have these values
                increased to accommodate data growth in future loads. Type loosening
                only occurs on table creation. Defaults to false.
            - execution : str
                In upsert mode, controls the movement of data in upsert mode. If set to
                "delayed", the data will be moved after a brief delay. If set to
                "immediate", the data will be moved immediately. In non-upsert modes,
                controls the speed at which detailed column stats appear in the data
                catalogue. Defaults to "delayed", to accommodate concurrent upserts to
                the same table and speedier non-upsert imports.
            - redshift_destination_options : :class:`civis.Response`
                - diststyle : str
                    The diststyle to use for the table. One of "even", "all", or "key".
                - distkey : str
                    Distkey for this table in Redshift
                - sortkeys : List[str]
                    Sortkeys for this table in Redshift. Please provide a maximum of
                    two.
            - hidden : bool
                The hidden status of the item.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def put_files_csv_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseImportsPutFilesCsvArchive:
        """Update the archive status of this object

        API URL: ``PUT /imports/files/csv/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the import.
            - name : str
                The name of the import.
            - source : :class:`civis.Response`
                - file_ids : List[int]
                    The file ID(s) to import, if importing Civis file(s).
                - storage_path : :class:`civis.Response`
                    - storage_host_id : int
                        The ID of the source storage host.
                    - credential_id : int
                        The ID of the credentials for the source storage host.
                    - file_paths : List[str]
                        The file or directory path(s) within the bucket from which to
                        import.  E.g. the file_path for "s3://mybucket/files/all/"
                        would be "/files/all/"If specifying a directory path, the job
                        will import every file found under that path. All files must
                        have the same column layout and file format (e.g., compression,
                        columnDelimiter, etc.).
            - destination : :class:`civis.Response`
                - schema : str
                    The destination schema name.
                - table : str
                    The destination table name.
                - remote_host_id : int
                    The ID of the destination database host.
                - credential_id : int
                    The ID of the credentials for the destination database.
                - primary_keys : List[str]
                    A list of column(s) which together uniquely identify a row in the
                    destination table.These columns must not contain NULL values. If
                    the import mode is "upsert", this field is required;see the Civis
                    Helpdesk article on "Advanced CSV Imports via the Civis API" for
                    more information.
                - last_modified_keys : List[str]
                    A list of the columns indicating a record has been updated.If the
                    destination table does not exist, and the import mode is "upsert",
                    this field is required.
            - first_row_is_header : bool
                A boolean value indicating whether or not the first row of the source
                file is a header row.
            - column_delimiter : str
                The column delimiter for the file. Valid arguments are "comma", "tab",
                and "pipe". Defaults to "comma".
            - escaped : bool
                A boolean value indicating whether or not the source file has quotes
                escaped with a backslash.Defaults to false.
            - compression : str
                The type of compression of the source file. Valid arguments are "gzip"
                and "none". Defaults to "none".
            - existing_table_rows : str
                The behavior if a destination table with the requested name already
                exists.  One of "fail", "truncate", "append", "drop", or
                "upsert".Defaults to "fail".
            - max_errors : int
                The maximum number of rows with errors to ignore before failing. This
                option is not supported for Postgres databases.
            - table_columns : List[:class:`civis.Response`]
                An array of hashes corresponding to the columns in the order they
                appear in the source file. Each hash should have keys for database
                column "name" and "sqlType".This parameter is required if the table
                does not exist, the table is being dropped, or the columns in the
                source file do not appear in the same order as in the destination
                table.The "sqlType" key is not required when appending to an existing
                table.

                - name : str
                    The column name.
                - sql_type : str
                    The SQL type of the column.
            - loosen_types : bool
                If true, SQL types with precisions/lengths will have these values
                increased to accommodate data growth in future loads. Type loosening
                only occurs on table creation. Defaults to false.
            - execution : str
                In upsert mode, controls the movement of data in upsert mode. If set to
                "delayed", the data will be moved after a brief delay. If set to
                "immediate", the data will be moved immediately. In non-upsert modes,
                controls the speed at which detailed column stats appear in the data
                catalogue. Defaults to "delayed", to accommodate concurrent upserts to
                the same table and speedier non-upsert imports.
            - redshift_destination_options : :class:`civis.Response`
                - diststyle : str
                    The diststyle to use for the table. One of "even", "all", or "key".
                - distkey : str
                    Distkey for this table in Redshift
                - sortkeys : List[str]
                    Sortkeys for this table in Redshift. Please provide a maximum of
                    two.
            - hidden : bool
                The hidden status of the item.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def post_files_csv_runs(
        self,
        id: int,
    ) -> _ResponseImportsPostFilesCsvRuns:
        """Start a run

        API URL: ``POST /imports/files/csv/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the CSV Import job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - csv_import_id : int
                The ID of the CSV Import job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def list_files_csv_runs(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseImportsListFilesCsvRuns]:
        """List runs for the given CSV Import job

        API URL: ``GET /imports/files/csv/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the CSV Import job.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the run.
            - csv_import_id : int
                The ID of the CSV Import job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def get_files_csv_runs(
        self,
        id: int,
        run_id: int,
    ) -> _ResponseImportsGetFilesCsvRuns:
        """Check status of a run

        API URL: ``GET /imports/files/csv/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the CSV Import job.
        run_id : int
            The ID of the run.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - csv_import_id : int
                The ID of the CSV Import job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def delete_files_csv_runs(
        self,
        id: int,
        run_id: int,
    ) -> Response:
        """Cancel a run

        API URL: ``DELETE /imports/files/csv/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the CSV Import job.
        run_id : int
            The ID of the run.

        Returns
        -------
        None
            Response code 202: success
        """
        ...

    def list_files_csv_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseImportsListFilesCsvRunsLogs]:
        """Get the logs for a run

        API URL: ``GET /imports/files/csv/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the CSV Import job.
        run_id : int
            The ID of the run.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def list_batches(
        self,
        *,
        hidden: bool | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseImportsListBatches]:
        """List batch imports

        API URL: ``GET /imports/batches``

        Parameters
        ----------
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to updated_at. Must be
            one of: updated_at, created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID for the import.
            - schema : str
                The destination schema name. This schema must already exist in
                Redshift.
            - table : str
                The destination table name, without the schema prefix. This table must
                already exist in Redshift.
            - remote_host_id : int
                The ID of the destination database host.
            - state : str
                The state of the run; one of "queued", "running", "succeeded",
                "failed", or "cancelled".
            - started_at : str (time)
                The time the last run started at.
            - finished_at : str (time)
                The time the last run completed.
            - error : str
                The error returned by the run, if any.
        """
        ...

    def post_batches(
        self,
        file_ids: List[int],
        schema: str,
        table: str,
        remote_host_id: int,
        credential_id: int,
        *,
        column_delimiter: str | None = ...,
        first_row_is_header: bool | None = ...,
        compression: str | None = ...,
        hidden: bool | None = ...,
    ) -> _ResponseImportsPostBatches:
        """Upload multiple files to Civis

        API URL: ``POST /imports/batches``

        Parameters
        ----------
        file_ids : List[int]
            The file IDs for the import.
        schema : str
            The destination schema name. This schema must already exist in Redshift.
        table : str
            The destination table name, without the schema prefix. This table must
            already exist in Redshift.
        remote_host_id : int
            The ID of the destination database host.
        credential_id : int
            The ID of the credentials to be used when performing the database import.
        column_delimiter : str, optional
            The column delimiter for the file. Valid arguments are "comma", "tab", and
            "pipe". If unspecified, defaults to "comma".
        first_row_is_header : bool, optional
            A boolean value indicating whether or not the first row is a header row. If
            unspecified, defaults to false.
        compression : str, optional
            The type of compression. Valid arguments are "gzip", "zip", and "none". If
            unspecified, defaults to "gzip".
        hidden : bool, optional
            The hidden status of the item.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the import.
            - schema : str
                The destination schema name. This schema must already exist in
                Redshift.
            - table : str
                The destination table name, without the schema prefix. This table must
                already exist in Redshift.
            - remote_host_id : int
                The ID of the destination database host.
            - state : str
                The state of the run; one of "queued", "running", "succeeded",
                "failed", or "cancelled".
            - started_at : str (time)
                The time the last run started at.
            - finished_at : str (time)
                The time the last run completed.
            - error : str
                The error returned by the run, if any.
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def get_batches(
        self,
        id: int,
    ) -> _ResponseImportsGetBatches:
        """Get details about a batch import

        API URL: ``GET /imports/batches/{id}``

        Parameters
        ----------
        id : int
            The ID for the import.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the import.
            - schema : str
                The destination schema name. This schema must already exist in
                Redshift.
            - table : str
                The destination table name, without the schema prefix. This table must
                already exist in Redshift.
            - remote_host_id : int
                The ID of the destination database host.
            - state : str
                The state of the run; one of "queued", "running", "succeeded",
                "failed", or "cancelled".
            - started_at : str (time)
                The time the last run started at.
            - finished_at : str (time)
                The time the last run completed.
            - error : str
                The error returned by the run, if any.
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseImportsGet:
        """Get details about an import

        API URL: ``GET /imports/{id}``

        Parameters
        ----------
        id : int
            The ID for the import.

        Returns
        -------
        :class:`civis.Response`
            - name : str
                The name of the import.
            - sync_type : str
                The type of sync to perform; one of Dbsync, AutoImport, GdocImport, and
                GdocExport.
            - source : :class:`civis.Response`
                - remote_host_id : int
                - credential_id : int
                - additional_credentials : List[int]
                    Array that holds additional credentials used for specific imports.
                    For DB Syncs, the first element is an SSL private key credential
                    id, and the second element is the corresponding public key
                    credential id.
                - name : str
            - destination : :class:`civis.Response`
                - remote_host_id : int
                - credential_id : int
                - additional_credentials : List[int]
                    Array that holds additional credentials used for specific imports.
                    For DB Syncs, the first element is an SSL private key credential
                    id, and the second element is the corresponding public key
                    credential id.
                - name : str
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - parent_id : int
                Parent id to trigger this import from
            - id : int
                The ID for the import.
            - is_outbound : bool
            - job_type : str
                The job type of this import.
            - syncs : List[:class:`civis.Response`]
                List of syncs.

                - id : int
                - source : :class:`civis.Response`
                    - id : int
                        The ID of the table or file, if available.
                    - path : str
                        The path of the dataset to sync from; for a database source,
                        schema.tablename. If you are doing a Google Sheet export, this
                        can be blank. This is a legacy parameter, it is recommended you
                        use one of the following: databaseTable, file, googleWorksheet
                    - database_table : :class:`civis.Response`
                        - schema : str
                            The database schema name.
                        - table : str
                            The database table name.
                        - use_without_schema : bool
                            This attribute is no longer available; defaults to false
                            but cannot be used.
                    - file : :class:`civis.Response`
                        - id : int
                            The file id.
                    - google_worksheet : :class:`civis.Response`
                        - spreadsheet : str
                            The spreadsheet document name.
                        - spreadsheet_id : str
                            The spreadsheet document id.
                        - worksheet : str
                            The worksheet tab name.
                        - worksheet_id : int
                            The worksheet tab id.
                    - salesforce : :class:`civis.Response`
                        - object_name : str
                            This parameter is deprecated
                - destination : :class:`civis.Response`
                    - path : str
                        The schema.tablename to sync to. If you are doing a Google
                        Sheet export, this is the spreadsheet and sheet name separated
                        by a period. i.e. if you have a spreadsheet named
                        "MySpreadsheet" and a sheet called "Sheet1" this field would be
                        "MySpreadsheet.Sheet1". This is a legacy parameter, it is
                        recommended you use one of the following: databaseTable,
                        googleWorksheet
                    - database_table : :class:`civis.Response`
                        - schema : str
                            The database schema name.
                        - table : str
                            The database table name.
                        - use_without_schema : bool
                            This attribute is no longer available; defaults to false
                            but cannot be used.
                    - google_worksheet : :class:`civis.Response`
                        - spreadsheet : str
                            The spreadsheet document name.
                        - spreadsheet_id : str
                            The spreadsheet document id.
                        - worksheet : str
                            The worksheet tab name.
                        - worksheet_id : int
                            The worksheet tab id.
                - advanced_options : :class:`civis.Response`
                    - max_errors : int
                        For Google Doc and Auto Imports. The maximum number of errors
                        that can occur without the job failing.
                    - existing_table_rows : str
                        For Google Doc and Auto Imports. The behavior if a table with
                        the requested name already exists.  One of "fail", "truncate",
                        "append", or "drop". Defaults to "fail".
                    - first_row_is_header : bool
                        For Google Doc and Auto Imports. A boolean value indicating
                        whether or not the first row is a header row.
                    - diststyle : str
                        For Auto Imports. The diststyle to use for a Redshift table.
                    - distkey : str
                        For Auto Imports. The distkey to use for a Redshift table.
                    - sortkey1 : str
                        For Auto Imports. The first sortkey to use for a Redshift
                        table.
                    - sortkey2 : str
                        For Auto Imports. The second sortkey to use for a Redshift
                        table.
                    - column_delimiter : str
                        For Auto Imports. The column delimiter for the file. Valid
                        arguments are "comma", "tab", and "pipe". If column_delimiter
                        is null or omitted, it will be auto-detected.
                    - column_overrides : :class:`civis.Response`
                        For Auto Imports. Hash used for overriding auto-detected names
                        and types, with keys being the index of the column being
                        overridden.
                    - escaped : bool
                        For Auto Imports. If true, escape quotes with a backslash;
                        otherwise, escape quotes by double-quoting. Defaults to false.
                    - identity_column : str
                        For DB Syncs. The column or columns to use as primary key for
                        incremental syncs. Should be a unique identifier. If blank,
                        primary key columns will be auto-detected. If more than one
                        identity column is specified, an identity column must be
                        specified for each table. We recommend the primary key be a
                        sequential data type such as an integer, double, timestamp,
                        date, or float. If using a primary key that is a string data
                        type, we recommend having a last_modified_column to ensure all
                        data is synced to the destination table.
                    - last_modified_column : str
                        For DB Syncs. The column to use to detect recently modified
                        data for incremental syncs. Defaults to "Auto-Detect", which
                        will use the first column it finds containing either "modif" or
                        "update" in the name. When specified, only rows where
                        last_modified_column in the source >= last_modified_column in
                        the destination will be synced.
                    - row_chunk_size : int
                        For DB Syncs. If specified, will split the sync into chunks of
                        this size.
                    - wipe_destination_table : bool
                        For DB Syncs. If true, will perform a full table refresh.
                    - truncate_long_lines : bool
                        For DB Syncs to Redshift. When true, truncates column data to
                        fit the column specification.
                    - invalid_char_replacement : str
                        For DB Syncs to Redshift. If specified, will replace each
                        invalid UTF-8 character with this character. Must be a single
                        ASCII character.
                    - verify_table_row_counts : bool
                        For DB Syncs. When true, an error will be raised if the
                        destination table does not have the same number of rows as the
                        source table after the sync.
                    - partition_column_name : str
                        This parameter is deprecated
                    - partition_schema_name : str
                        This parameter is deprecated
                    - partition_table_name : str
                        This parameter is deprecated
                    - partition_table_partition_column_min_name : str
                        This parameter is deprecated
                    - partition_table_partition_column_max_name : str
                        This parameter is deprecated
                    - mysql_catalog_matches_schema : bool
                        This attribute is no longer available; defaults to true but
                        cannot be used.
                    - chunking_method : str
                        This parameter is deprecated
                    - export_action : str
                        For Google Doc Exports. The kind of export action you want to
                        have the export execute. Set to "newsprsht" if you want a new
                        worksheet inside a new spreadsheet. Set to "newwksht" if you
                        want a new worksheet inside an existing spreadsheet. Set to
                        "updatewksht" if you want to overwrite an existing worksheet
                        inside an existing spreadsheet. Set to "appendwksht" if you
                        want to append to the end of an existing worksheet inside an
                        existing spreadsheet. Default is set to "newsprsht"
                    - sql_query : str
                        For Google Doc Exports. The SQL query for the export.
                    - contact_lists : str
                        This parameter is deprecated
                    - soql_query : str
                        This parameter is deprecated
                    - include_deleted_records : bool
                        This parameter is deprecated
            - state : str
            - created_at : str (date-time)
            - updated_at : str (date-time)
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this import.
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def put(
        self,
        id: int,
        name: str,
        sync_type: str,
        is_outbound: bool,
        *,
        source: dict | None = ...,
        destination: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        parent_id: int | None = ...,
        next_run_at: str | None = ...,
        time_zone: str | None = ...,
    ) -> _ResponseImportsPut:
        """Update an import

        API URL: ``PUT /imports/{id}``

        Parameters
        ----------
        id : int
            The ID for the import.
        name : str
            The name of the import.
        sync_type : str
            The type of sync to perform; one of Dbsync, AutoImport, GdocImport, and
            GdocExport.
        is_outbound : bool
        source : dict, optional
            - remote_host_id : int
            - credential_id : int
            - additional_credentials : List[int]
                Array that holds additional credentials used for specific imports. For
                DB Syncs, the first element is an SSL private key credential id, and
                the second element is the corresponding public key credential id.
        destination : dict, optional
            - remote_host_id : int
            - credential_id : int
            - additional_credentials : List[int]
                Array that holds additional credentials used for specific imports. For
                DB Syncs, the first element is an SSL private key credential id, and
                the second element is the corresponding public key credential id.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        parent_id : int, optional
            Parent id to trigger this import from
        next_run_at : str (time), optional
            The time of the next scheduled run.
        time_zone : str, optional
            The time zone of this import.

        Returns
        -------
        :class:`civis.Response`
            - name : str
                The name of the import.
            - sync_type : str
                The type of sync to perform; one of Dbsync, AutoImport, GdocImport, and
                GdocExport.
            - source : :class:`civis.Response`
                - remote_host_id : int
                - credential_id : int
                - additional_credentials : List[int]
                    Array that holds additional credentials used for specific imports.
                    For DB Syncs, the first element is an SSL private key credential
                    id, and the second element is the corresponding public key
                    credential id.
                - name : str
            - destination : :class:`civis.Response`
                - remote_host_id : int
                - credential_id : int
                - additional_credentials : List[int]
                    Array that holds additional credentials used for specific imports.
                    For DB Syncs, the first element is an SSL private key credential
                    id, and the second element is the corresponding public key
                    credential id.
                - name : str
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - parent_id : int
                Parent id to trigger this import from
            - id : int
                The ID for the import.
            - is_outbound : bool
            - job_type : str
                The job type of this import.
            - syncs : List[:class:`civis.Response`]
                List of syncs.

                - id : int
                - source : :class:`civis.Response`
                    - id : int
                        The ID of the table or file, if available.
                    - path : str
                        The path of the dataset to sync from; for a database source,
                        schema.tablename. If you are doing a Google Sheet export, this
                        can be blank. This is a legacy parameter, it is recommended you
                        use one of the following: databaseTable, file, googleWorksheet
                    - database_table : :class:`civis.Response`
                        - schema : str
                            The database schema name.
                        - table : str
                            The database table name.
                        - use_without_schema : bool
                            This attribute is no longer available; defaults to false
                            but cannot be used.
                    - file : :class:`civis.Response`
                        - id : int
                            The file id.
                    - google_worksheet : :class:`civis.Response`
                        - spreadsheet : str
                            The spreadsheet document name.
                        - spreadsheet_id : str
                            The spreadsheet document id.
                        - worksheet : str
                            The worksheet tab name.
                        - worksheet_id : int
                            The worksheet tab id.
                    - salesforce : :class:`civis.Response`
                        - object_name : str
                            This parameter is deprecated
                - destination : :class:`civis.Response`
                    - path : str
                        The schema.tablename to sync to. If you are doing a Google
                        Sheet export, this is the spreadsheet and sheet name separated
                        by a period. i.e. if you have a spreadsheet named
                        "MySpreadsheet" and a sheet called "Sheet1" this field would be
                        "MySpreadsheet.Sheet1". This is a legacy parameter, it is
                        recommended you use one of the following: databaseTable,
                        googleWorksheet
                    - database_table : :class:`civis.Response`
                        - schema : str
                            The database schema name.
                        - table : str
                            The database table name.
                        - use_without_schema : bool
                            This attribute is no longer available; defaults to false
                            but cannot be used.
                    - google_worksheet : :class:`civis.Response`
                        - spreadsheet : str
                            The spreadsheet document name.
                        - spreadsheet_id : str
                            The spreadsheet document id.
                        - worksheet : str
                            The worksheet tab name.
                        - worksheet_id : int
                            The worksheet tab id.
                - advanced_options : :class:`civis.Response`
                    - max_errors : int
                        For Google Doc and Auto Imports. The maximum number of errors
                        that can occur without the job failing.
                    - existing_table_rows : str
                        For Google Doc and Auto Imports. The behavior if a table with
                        the requested name already exists.  One of "fail", "truncate",
                        "append", or "drop". Defaults to "fail".
                    - first_row_is_header : bool
                        For Google Doc and Auto Imports. A boolean value indicating
                        whether or not the first row is a header row.
                    - diststyle : str
                        For Auto Imports. The diststyle to use for a Redshift table.
                    - distkey : str
                        For Auto Imports. The distkey to use for a Redshift table.
                    - sortkey1 : str
                        For Auto Imports. The first sortkey to use for a Redshift
                        table.
                    - sortkey2 : str
                        For Auto Imports. The second sortkey to use for a Redshift
                        table.
                    - column_delimiter : str
                        For Auto Imports. The column delimiter for the file. Valid
                        arguments are "comma", "tab", and "pipe". If column_delimiter
                        is null or omitted, it will be auto-detected.
                    - column_overrides : :class:`civis.Response`
                        For Auto Imports. Hash used for overriding auto-detected names
                        and types, with keys being the index of the column being
                        overridden.
                    - escaped : bool
                        For Auto Imports. If true, escape quotes with a backslash;
                        otherwise, escape quotes by double-quoting. Defaults to false.
                    - identity_column : str
                        For DB Syncs. The column or columns to use as primary key for
                        incremental syncs. Should be a unique identifier. If blank,
                        primary key columns will be auto-detected. If more than one
                        identity column is specified, an identity column must be
                        specified for each table. We recommend the primary key be a
                        sequential data type such as an integer, double, timestamp,
                        date, or float. If using a primary key that is a string data
                        type, we recommend having a last_modified_column to ensure all
                        data is synced to the destination table.
                    - last_modified_column : str
                        For DB Syncs. The column to use to detect recently modified
                        data for incremental syncs. Defaults to "Auto-Detect", which
                        will use the first column it finds containing either "modif" or
                        "update" in the name. When specified, only rows where
                        last_modified_column in the source >= last_modified_column in
                        the destination will be synced.
                    - row_chunk_size : int
                        For DB Syncs. If specified, will split the sync into chunks of
                        this size.
                    - wipe_destination_table : bool
                        For DB Syncs. If true, will perform a full table refresh.
                    - truncate_long_lines : bool
                        For DB Syncs to Redshift. When true, truncates column data to
                        fit the column specification.
                    - invalid_char_replacement : str
                        For DB Syncs to Redshift. If specified, will replace each
                        invalid UTF-8 character with this character. Must be a single
                        ASCII character.
                    - verify_table_row_counts : bool
                        For DB Syncs. When true, an error will be raised if the
                        destination table does not have the same number of rows as the
                        source table after the sync.
                    - partition_column_name : str
                        This parameter is deprecated
                    - partition_schema_name : str
                        This parameter is deprecated
                    - partition_table_name : str
                        This parameter is deprecated
                    - partition_table_partition_column_min_name : str
                        This parameter is deprecated
                    - partition_table_partition_column_max_name : str
                        This parameter is deprecated
                    - mysql_catalog_matches_schema : bool
                        This attribute is no longer available; defaults to true but
                        cannot be used.
                    - chunking_method : str
                        This parameter is deprecated
                    - export_action : str
                        For Google Doc Exports. The kind of export action you want to
                        have the export execute. Set to "newsprsht" if you want a new
                        worksheet inside a new spreadsheet. Set to "newwksht" if you
                        want a new worksheet inside an existing spreadsheet. Set to
                        "updatewksht" if you want to overwrite an existing worksheet
                        inside an existing spreadsheet. Set to "appendwksht" if you
                        want to append to the end of an existing worksheet inside an
                        existing spreadsheet. Default is set to "newsprsht"
                    - sql_query : str
                        For Google Doc Exports. The SQL query for the export.
                    - contact_lists : str
                        This parameter is deprecated
                    - soql_query : str
                        This parameter is deprecated
                    - include_deleted_records : bool
                        This parameter is deprecated
            - state : str
            - created_at : str (date-time)
            - updated_at : str (date-time)
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this import.
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def list_runs(
        self,
        id: int,
    ) -> List[_ResponseImportsListRuns]:
        """Get the run history of this import

        API URL: ``GET /imports/{id}/runs``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
            - state : str
            - created_at : str (time)
                The time that the run was queued.
            - started_at : str (time)
                The time that the run started.
            - finished_at : str (time)
                The time that the run completed.
            - error : str
                The error message for this run, if present.
        """
        ...

    def post_runs(
        self,
        id: int,
    ) -> _ResponseImportsPostRuns:
        """Run an import

        API URL: ``POST /imports/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the import to run.

        Returns
        -------
        :class:`civis.Response`
            - run_id : int
                The ID of the new run triggered.
        """
        ...

    def post_cancel(
        self,
        id: int,
    ) -> _ResponseImportsPostCancel:
        """Cancel a run

        API URL: ``POST /imports/{id}/cancel``

        Parameters
        ----------
        id : int
            The ID of the job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - state : str
                The state of the run, one of 'queued', 'running' or 'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
        """
        ...

    def post_syncs(
        self,
        id: int,
        source: dict,
        destination: dict,
        *,
        advanced_options: dict | None = ...,
    ) -> _ResponseImportsPostSyncs:
        """Create a sync

        API URL: ``POST /imports/{id}/syncs``

        Parameters
        ----------
        id : int
        source : dict
            - path : str
                The path of the dataset to sync from; for a database source,
                schema.tablename. If you are doing a Google Sheet export, this can be
                blank. This is a legacy parameter, it is recommended you use one of the
                following: databaseTable, file, googleWorksheet
            - database_table : dict
                - schema : str
                    The database schema name.
                - table : str
                    The database table name.
                - use_without_schema : bool
                    This attribute is no longer available; defaults to false but cannot
                    be used.
            - file : dict
            - google_worksheet : dict
                - spreadsheet : str
                    The spreadsheet document name.
                - spreadsheet_id : str
                    The spreadsheet document id.
                - worksheet : str
                    The worksheet tab name.
                - worksheet_id : int
                    The worksheet tab id.
            - salesforce : dict
                - object_name : str
                    This parameter is deprecated
        destination : dict
            - path : str
                The schema.tablename to sync to. If you are doing a Google Sheet
                export, this is the spreadsheet and sheet name separated by a period.
                i.e. if you have a spreadsheet named "MySpreadsheet" and a sheet called
                "Sheet1" this field would be "MySpreadsheet.Sheet1". This is a legacy
                parameter, it is recommended you use one of the following:
                databaseTable, googleWorksheet
            - database_table : dict
                - schema : str
                    The database schema name.
                - table : str
                    The database table name.
                - use_without_schema : bool
                    This attribute is no longer available; defaults to false but cannot
                    be used.
            - google_worksheet : dict
                - spreadsheet : str
                    The spreadsheet document name.
                - spreadsheet_id : str
                    The spreadsheet document id.
                - worksheet : str
                    The worksheet tab name.
                - worksheet_id : int
                    The worksheet tab id.
        advanced_options : dict, optional
            - max_errors : int
                For Google Doc and Auto Imports. The maximum number of errors that can
                occur without the job failing.
            - existing_table_rows : str
                For Google Doc and Auto Imports. The behavior if a table with the
                requested name already exists.  One of "fail", "truncate", "append", or
                "drop". Defaults to "fail".
            - first_row_is_header : bool
                For Google Doc and Auto Imports. A boolean value indicating whether or
                not the first row is a header row.
            - diststyle : str
                For Auto Imports. The diststyle to use for a Redshift table.
            - distkey : str
                For Auto Imports. The distkey to use for a Redshift table.
            - sortkey1 : str
                For Auto Imports. The first sortkey to use for a Redshift table.
            - sortkey2 : str
                For Auto Imports. The second sortkey to use for a Redshift table.
            - column_delimiter : str
                For Auto Imports. The column delimiter for the file. Valid arguments
                are "comma", "tab", and "pipe". If column_delimiter is null or omitted,
                it will be auto-detected.
            - column_overrides : dict
                For Auto Imports. Hash used for overriding auto-detected names and
                types, with keys being the index of the column being overridden.
            - escaped : bool
                For Auto Imports. If true, escape quotes with a backslash; otherwise,
                escape quotes by double-quoting. Defaults to false.
            - identity_column : str
                For DB Syncs. The column or columns to use as primary key for
                incremental syncs. Should be a unique identifier. If blank, primary key
                columns will be auto-detected. If more than one identity column is
                specified, an identity column must be specified for each table. We
                recommend the primary key be a sequential data type such as an integer,
                double, timestamp, date, or float. If using a primary key that is a
                string data type, we recommend having a last_modified_column to ensure
                all data is synced to the destination table.
            - last_modified_column : str
                For DB Syncs. The column to use to detect recently modified data for
                incremental syncs. Defaults to "Auto-Detect", which will use the first
                column it finds containing either "modif" or "update" in the name. When
                specified, only rows where last_modified_column in the source >=
                last_modified_column in the destination will be synced.
            - row_chunk_size : int
                For DB Syncs. If specified, will split the sync into chunks of this
                size.
            - wipe_destination_table : bool
                For DB Syncs. If true, will perform a full table refresh.
            - truncate_long_lines : bool
                For DB Syncs to Redshift. When true, truncates column data to fit the
                column specification.
            - invalid_char_replacement : str
                For DB Syncs to Redshift. If specified, will replace each invalid UTF-8
                character with this character. Must be a single ASCII character.
            - verify_table_row_counts : bool
                For DB Syncs. When true, an error will be raised if the destination
                table does not have the same number of rows as the source table after
                the sync.
            - partition_column_name : str
                This parameter is deprecated
            - partition_schema_name : str
                This parameter is deprecated
            - partition_table_name : str
                This parameter is deprecated
            - partition_table_partition_column_min_name : str
                This parameter is deprecated
            - partition_table_partition_column_max_name : str
                This parameter is deprecated
            - mysql_catalog_matches_schema : bool
                This attribute is no longer available; defaults to true but cannot be
                used.
            - chunking_method : str
                This parameter is deprecated
            - export_action : str
                For Google Doc Exports. The kind of export action you want to have the
                export execute. Set to "newsprsht" if you want a new worksheet inside a
                new spreadsheet. Set to "newwksht" if you want a new worksheet inside
                an existing spreadsheet. Set to "updatewksht" if you want to overwrite
                an existing worksheet inside an existing spreadsheet. Set to
                "appendwksht" if you want to append to the end of an existing worksheet
                inside an existing spreadsheet. Default is set to "newsprsht"
            - sql_query : str
                For Google Doc Exports. The SQL query for the export.
            - contact_lists : str
                This parameter is deprecated
            - soql_query : str
                This parameter is deprecated
            - include_deleted_records : bool
                This parameter is deprecated

        Returns
        -------
        :class:`civis.Response`
            - id : int
            - source : :class:`civis.Response`
                - id : int
                    The ID of the table or file, if available.
                - path : str
                    The path of the dataset to sync from; for a database source,
                    schema.tablename. If you are doing a Google Sheet export, this can
                    be blank. This is a legacy parameter, it is recommended you use one
                    of the following: databaseTable, file, googleWorksheet
                - database_table : :class:`civis.Response`
                    - schema : str
                        The database schema name.
                    - table : str
                        The database table name.
                    - use_without_schema : bool
                        This attribute is no longer available; defaults to false but
                        cannot be used.
                - file : :class:`civis.Response`
                    - id : int
                        The file id.
                - google_worksheet : :class:`civis.Response`
                    - spreadsheet : str
                        The spreadsheet document name.
                    - spreadsheet_id : str
                        The spreadsheet document id.
                    - worksheet : str
                        The worksheet tab name.
                    - worksheet_id : int
                        The worksheet tab id.
                - salesforce : :class:`civis.Response`
                    - object_name : str
                        This parameter is deprecated
            - destination : :class:`civis.Response`
                - path : str
                    The schema.tablename to sync to. If you are doing a Google Sheet
                    export, this is the spreadsheet and sheet name separated by a
                    period. i.e. if you have a spreadsheet named "MySpreadsheet" and a
                    sheet called "Sheet1" this field would be "MySpreadsheet.Sheet1".
                    This is a legacy parameter, it is recommended you use one of the
                    following: databaseTable, googleWorksheet
                - database_table : :class:`civis.Response`
                    - schema : str
                        The database schema name.
                    - table : str
                        The database table name.
                    - use_without_schema : bool
                        This attribute is no longer available; defaults to false but
                        cannot be used.
                - google_worksheet : :class:`civis.Response`
                    - spreadsheet : str
                        The spreadsheet document name.
                    - spreadsheet_id : str
                        The spreadsheet document id.
                    - worksheet : str
                        The worksheet tab name.
                    - worksheet_id : int
                        The worksheet tab id.
            - advanced_options : :class:`civis.Response`
                - max_errors : int
                    For Google Doc and Auto Imports. The maximum number of errors that
                    can occur without the job failing.
                - existing_table_rows : str
                    For Google Doc and Auto Imports. The behavior if a table with the
                    requested name already exists.  One of "fail", "truncate",
                    "append", or "drop". Defaults to "fail".
                - first_row_is_header : bool
                    For Google Doc and Auto Imports. A boolean value indicating whether
                    or not the first row is a header row.
                - diststyle : str
                    For Auto Imports. The diststyle to use for a Redshift table.
                - distkey : str
                    For Auto Imports. The distkey to use for a Redshift table.
                - sortkey1 : str
                    For Auto Imports. The first sortkey to use for a Redshift table.
                - sortkey2 : str
                    For Auto Imports. The second sortkey to use for a Redshift table.
                - column_delimiter : str
                    For Auto Imports. The column delimiter for the file. Valid
                    arguments are "comma", "tab", and "pipe". If column_delimiter is
                    null or omitted, it will be auto-detected.
                - column_overrides : :class:`civis.Response`
                    For Auto Imports. Hash used for overriding auto-detected names and
                    types, with keys being the index of the column being overridden.
                - escaped : bool
                    For Auto Imports. If true, escape quotes with a backslash;
                    otherwise, escape quotes by double-quoting. Defaults to false.
                - identity_column : str
                    For DB Syncs. The column or columns to use as primary key for
                    incremental syncs. Should be a unique identifier. If blank, primary
                    key columns will be auto-detected. If more than one identity column
                    is specified, an identity column must be specified for each table.
                    We recommend the primary key be a sequential data type such as an
                    integer, double, timestamp, date, or float. If using a primary key
                    that is a string data type, we recommend having a
                    last_modified_column to ensure all data is synced to the
                    destination table.
                - last_modified_column : str
                    For DB Syncs. The column to use to detect recently modified data
                    for incremental syncs. Defaults to "Auto-Detect", which will use
                    the first column it finds containing either "modif" or "update" in
                    the name. When specified, only rows where last_modified_column in
                    the source >= last_modified_column in the destination will be
                    synced.
                - row_chunk_size : int
                    For DB Syncs. If specified, will split the sync into chunks of this
                    size.
                - wipe_destination_table : bool
                    For DB Syncs. If true, will perform a full table refresh.
                - truncate_long_lines : bool
                    For DB Syncs to Redshift. When true, truncates column data to fit
                    the column specification.
                - invalid_char_replacement : str
                    For DB Syncs to Redshift. If specified, will replace each invalid
                    UTF-8 character with this character. Must be a single ASCII
                    character.
                - verify_table_row_counts : bool
                    For DB Syncs. When true, an error will be raised if the destination
                    table does not have the same number of rows as the source table
                    after the sync.
                - partition_column_name : str
                    This parameter is deprecated
                - partition_schema_name : str
                    This parameter is deprecated
                - partition_table_name : str
                    This parameter is deprecated
                - partition_table_partition_column_min_name : str
                    This parameter is deprecated
                - partition_table_partition_column_max_name : str
                    This parameter is deprecated
                - mysql_catalog_matches_schema : bool
                    This attribute is no longer available; defaults to true but cannot
                    be used.
                - chunking_method : str
                    This parameter is deprecated
                - export_action : str
                    For Google Doc Exports. The kind of export action you want to have
                    the export execute. Set to "newsprsht" if you want a new worksheet
                    inside a new spreadsheet. Set to "newwksht" if you want a new
                    worksheet inside an existing spreadsheet. Set to "updatewksht" if
                    you want to overwrite an existing worksheet inside an existing
                    spreadsheet. Set to "appendwksht" if you want to append to the end
                    of an existing worksheet inside an existing spreadsheet. Default is
                    set to "newsprsht"
                - sql_query : str
                    For Google Doc Exports. The SQL query for the export.
                - contact_lists : str
                    This parameter is deprecated
                - soql_query : str
                    This parameter is deprecated
                - include_deleted_records : bool
                    This parameter is deprecated
        """
        ...

    def put_syncs(
        self,
        id: int,
        sync_id: int,
        source: dict,
        destination: dict,
        *,
        advanced_options: dict | None = ...,
    ) -> _ResponseImportsPutSyncs:
        """Update a sync

        API URL: ``PUT /imports/{id}/syncs/{sync_id}``

        Parameters
        ----------
        id : int
            The ID of the import to fetch.
        sync_id : int
            The ID of the sync to fetch.
        source : dict
            - path : str
                The path of the dataset to sync from; for a database source,
                schema.tablename. If you are doing a Google Sheet export, this can be
                blank. This is a legacy parameter, it is recommended you use one of the
                following: databaseTable, file, googleWorksheet
            - database_table : dict
                - schema : str
                    The database schema name.
                - table : str
                    The database table name.
                - use_without_schema : bool
                    This attribute is no longer available; defaults to false but cannot
                    be used.
            - file : dict
            - google_worksheet : dict
                - spreadsheet : str
                    The spreadsheet document name.
                - spreadsheet_id : str
                    The spreadsheet document id.
                - worksheet : str
                    The worksheet tab name.
                - worksheet_id : int
                    The worksheet tab id.
            - salesforce : dict
                - object_name : str
                    This parameter is deprecated
        destination : dict
            - path : str
                The schema.tablename to sync to. If you are doing a Google Sheet
                export, this is the spreadsheet and sheet name separated by a period.
                i.e. if you have a spreadsheet named "MySpreadsheet" and a sheet called
                "Sheet1" this field would be "MySpreadsheet.Sheet1". This is a legacy
                parameter, it is recommended you use one of the following:
                databaseTable, googleWorksheet
            - database_table : dict
                - schema : str
                    The database schema name.
                - table : str
                    The database table name.
                - use_without_schema : bool
                    This attribute is no longer available; defaults to false but cannot
                    be used.
            - google_worksheet : dict
                - spreadsheet : str
                    The spreadsheet document name.
                - spreadsheet_id : str
                    The spreadsheet document id.
                - worksheet : str
                    The worksheet tab name.
                - worksheet_id : int
                    The worksheet tab id.
        advanced_options : dict, optional
            - max_errors : int
                For Google Doc and Auto Imports. The maximum number of errors that can
                occur without the job failing.
            - existing_table_rows : str
                For Google Doc and Auto Imports. The behavior if a table with the
                requested name already exists.  One of "fail", "truncate", "append", or
                "drop". Defaults to "fail".
            - first_row_is_header : bool
                For Google Doc and Auto Imports. A boolean value indicating whether or
                not the first row is a header row.
            - diststyle : str
                For Auto Imports. The diststyle to use for a Redshift table.
            - distkey : str
                For Auto Imports. The distkey to use for a Redshift table.
            - sortkey1 : str
                For Auto Imports. The first sortkey to use for a Redshift table.
            - sortkey2 : str
                For Auto Imports. The second sortkey to use for a Redshift table.
            - column_delimiter : str
                For Auto Imports. The column delimiter for the file. Valid arguments
                are "comma", "tab", and "pipe". If column_delimiter is null or omitted,
                it will be auto-detected.
            - column_overrides : dict
                For Auto Imports. Hash used for overriding auto-detected names and
                types, with keys being the index of the column being overridden.
            - escaped : bool
                For Auto Imports. If true, escape quotes with a backslash; otherwise,
                escape quotes by double-quoting. Defaults to false.
            - identity_column : str
                For DB Syncs. The column or columns to use as primary key for
                incremental syncs. Should be a unique identifier. If blank, primary key
                columns will be auto-detected. If more than one identity column is
                specified, an identity column must be specified for each table. We
                recommend the primary key be a sequential data type such as an integer,
                double, timestamp, date, or float. If using a primary key that is a
                string data type, we recommend having a last_modified_column to ensure
                all data is synced to the destination table.
            - last_modified_column : str
                For DB Syncs. The column to use to detect recently modified data for
                incremental syncs. Defaults to "Auto-Detect", which will use the first
                column it finds containing either "modif" or "update" in the name. When
                specified, only rows where last_modified_column in the source >=
                last_modified_column in the destination will be synced.
            - row_chunk_size : int
                For DB Syncs. If specified, will split the sync into chunks of this
                size.
            - wipe_destination_table : bool
                For DB Syncs. If true, will perform a full table refresh.
            - truncate_long_lines : bool
                For DB Syncs to Redshift. When true, truncates column data to fit the
                column specification.
            - invalid_char_replacement : str
                For DB Syncs to Redshift. If specified, will replace each invalid UTF-8
                character with this character. Must be a single ASCII character.
            - verify_table_row_counts : bool
                For DB Syncs. When true, an error will be raised if the destination
                table does not have the same number of rows as the source table after
                the sync.
            - partition_column_name : str
                This parameter is deprecated
            - partition_schema_name : str
                This parameter is deprecated
            - partition_table_name : str
                This parameter is deprecated
            - partition_table_partition_column_min_name : str
                This parameter is deprecated
            - partition_table_partition_column_max_name : str
                This parameter is deprecated
            - mysql_catalog_matches_schema : bool
                This attribute is no longer available; defaults to true but cannot be
                used.
            - chunking_method : str
                This parameter is deprecated
            - export_action : str
                For Google Doc Exports. The kind of export action you want to have the
                export execute. Set to "newsprsht" if you want a new worksheet inside a
                new spreadsheet. Set to "newwksht" if you want a new worksheet inside
                an existing spreadsheet. Set to "updatewksht" if you want to overwrite
                an existing worksheet inside an existing spreadsheet. Set to
                "appendwksht" if you want to append to the end of an existing worksheet
                inside an existing spreadsheet. Default is set to "newsprsht"
            - sql_query : str
                For Google Doc Exports. The SQL query for the export.
            - contact_lists : str
                This parameter is deprecated
            - soql_query : str
                This parameter is deprecated
            - include_deleted_records : bool
                This parameter is deprecated

        Returns
        -------
        :class:`civis.Response`
            - id : int
            - source : :class:`civis.Response`
                - id : int
                    The ID of the table or file, if available.
                - path : str
                    The path of the dataset to sync from; for a database source,
                    schema.tablename. If you are doing a Google Sheet export, this can
                    be blank. This is a legacy parameter, it is recommended you use one
                    of the following: databaseTable, file, googleWorksheet
                - database_table : :class:`civis.Response`
                    - schema : str
                        The database schema name.
                    - table : str
                        The database table name.
                    - use_without_schema : bool
                        This attribute is no longer available; defaults to false but
                        cannot be used.
                - file : :class:`civis.Response`
                    - id : int
                        The file id.
                - google_worksheet : :class:`civis.Response`
                    - spreadsheet : str
                        The spreadsheet document name.
                    - spreadsheet_id : str
                        The spreadsheet document id.
                    - worksheet : str
                        The worksheet tab name.
                    - worksheet_id : int
                        The worksheet tab id.
                - salesforce : :class:`civis.Response`
                    - object_name : str
                        This parameter is deprecated
            - destination : :class:`civis.Response`
                - path : str
                    The schema.tablename to sync to. If you are doing a Google Sheet
                    export, this is the spreadsheet and sheet name separated by a
                    period. i.e. if you have a spreadsheet named "MySpreadsheet" and a
                    sheet called "Sheet1" this field would be "MySpreadsheet.Sheet1".
                    This is a legacy parameter, it is recommended you use one of the
                    following: databaseTable, googleWorksheet
                - database_table : :class:`civis.Response`
                    - schema : str
                        The database schema name.
                    - table : str
                        The database table name.
                    - use_without_schema : bool
                        This attribute is no longer available; defaults to false but
                        cannot be used.
                - google_worksheet : :class:`civis.Response`
                    - spreadsheet : str
                        The spreadsheet document name.
                    - spreadsheet_id : str
                        The spreadsheet document id.
                    - worksheet : str
                        The worksheet tab name.
                    - worksheet_id : int
                        The worksheet tab id.
            - advanced_options : :class:`civis.Response`
                - max_errors : int
                    For Google Doc and Auto Imports. The maximum number of errors that
                    can occur without the job failing.
                - existing_table_rows : str
                    For Google Doc and Auto Imports. The behavior if a table with the
                    requested name already exists.  One of "fail", "truncate",
                    "append", or "drop". Defaults to "fail".
                - first_row_is_header : bool
                    For Google Doc and Auto Imports. A boolean value indicating whether
                    or not the first row is a header row.
                - diststyle : str
                    For Auto Imports. The diststyle to use for a Redshift table.
                - distkey : str
                    For Auto Imports. The distkey to use for a Redshift table.
                - sortkey1 : str
                    For Auto Imports. The first sortkey to use for a Redshift table.
                - sortkey2 : str
                    For Auto Imports. The second sortkey to use for a Redshift table.
                - column_delimiter : str
                    For Auto Imports. The column delimiter for the file. Valid
                    arguments are "comma", "tab", and "pipe". If column_delimiter is
                    null or omitted, it will be auto-detected.
                - column_overrides : :class:`civis.Response`
                    For Auto Imports. Hash used for overriding auto-detected names and
                    types, with keys being the index of the column being overridden.
                - escaped : bool
                    For Auto Imports. If true, escape quotes with a backslash;
                    otherwise, escape quotes by double-quoting. Defaults to false.
                - identity_column : str
                    For DB Syncs. The column or columns to use as primary key for
                    incremental syncs. Should be a unique identifier. If blank, primary
                    key columns will be auto-detected. If more than one identity column
                    is specified, an identity column must be specified for each table.
                    We recommend the primary key be a sequential data type such as an
                    integer, double, timestamp, date, or float. If using a primary key
                    that is a string data type, we recommend having a
                    last_modified_column to ensure all data is synced to the
                    destination table.
                - last_modified_column : str
                    For DB Syncs. The column to use to detect recently modified data
                    for incremental syncs. Defaults to "Auto-Detect", which will use
                    the first column it finds containing either "modif" or "update" in
                    the name. When specified, only rows where last_modified_column in
                    the source >= last_modified_column in the destination will be
                    synced.
                - row_chunk_size : int
                    For DB Syncs. If specified, will split the sync into chunks of this
                    size.
                - wipe_destination_table : bool
                    For DB Syncs. If true, will perform a full table refresh.
                - truncate_long_lines : bool
                    For DB Syncs to Redshift. When true, truncates column data to fit
                    the column specification.
                - invalid_char_replacement : str
                    For DB Syncs to Redshift. If specified, will replace each invalid
                    UTF-8 character with this character. Must be a single ASCII
                    character.
                - verify_table_row_counts : bool
                    For DB Syncs. When true, an error will be raised if the destination
                    table does not have the same number of rows as the source table
                    after the sync.
                - partition_column_name : str
                    This parameter is deprecated
                - partition_schema_name : str
                    This parameter is deprecated
                - partition_table_name : str
                    This parameter is deprecated
                - partition_table_partition_column_min_name : str
                    This parameter is deprecated
                - partition_table_partition_column_max_name : str
                    This parameter is deprecated
                - mysql_catalog_matches_schema : bool
                    This attribute is no longer available; defaults to true but cannot
                    be used.
                - chunking_method : str
                    This parameter is deprecated
                - export_action : str
                    For Google Doc Exports. The kind of export action you want to have
                    the export execute. Set to "newsprsht" if you want a new worksheet
                    inside a new spreadsheet. Set to "newwksht" if you want a new
                    worksheet inside an existing spreadsheet. Set to "updatewksht" if
                    you want to overwrite an existing worksheet inside an existing
                    spreadsheet. Set to "appendwksht" if you want to append to the end
                    of an existing worksheet inside an existing spreadsheet. Default is
                    set to "newsprsht"
                - sql_query : str
                    For Google Doc Exports. The SQL query for the export.
                - contact_lists : str
                    This parameter is deprecated
                - soql_query : str
                    This parameter is deprecated
                - include_deleted_records : bool
                    This parameter is deprecated
        """
        ...

    def put_syncs_archive(
        self,
        id: int,
        sync_id: int,
        *,
        status: bool | None = ...,
    ) -> _ResponseImportsPutSyncsArchive:
        """Update the archive status of this sync

        API URL: ``PUT /imports/{id}/syncs/{sync_id}/archive``

        Parameters
        ----------
        id : int
            The ID of the import to fetch.
        sync_id : int
            The ID of the sync to fetch.
        status : bool, optional
            The desired archived status of the sync.

        Returns
        -------
        :class:`civis.Response`
            - id : int
            - source : :class:`civis.Response`
                - id : int
                    The ID of the table or file, if available.
                - path : str
                    The path of the dataset to sync from; for a database source,
                    schema.tablename. If you are doing a Google Sheet export, this can
                    be blank. This is a legacy parameter, it is recommended you use one
                    of the following: databaseTable, file, googleWorksheet
                - database_table : :class:`civis.Response`
                    - schema : str
                        The database schema name.
                    - table : str
                        The database table name.
                    - use_without_schema : bool
                        This attribute is no longer available; defaults to false but
                        cannot be used.
                - file : :class:`civis.Response`
                    - id : int
                        The file id.
                - google_worksheet : :class:`civis.Response`
                    - spreadsheet : str
                        The spreadsheet document name.
                    - spreadsheet_id : str
                        The spreadsheet document id.
                    - worksheet : str
                        The worksheet tab name.
                    - worksheet_id : int
                        The worksheet tab id.
                - salesforce : :class:`civis.Response`
                    - object_name : str
                        This parameter is deprecated
            - destination : :class:`civis.Response`
                - path : str
                    The schema.tablename to sync to. If you are doing a Google Sheet
                    export, this is the spreadsheet and sheet name separated by a
                    period. i.e. if you have a spreadsheet named "MySpreadsheet" and a
                    sheet called "Sheet1" this field would be "MySpreadsheet.Sheet1".
                    This is a legacy parameter, it is recommended you use one of the
                    following: databaseTable, googleWorksheet
                - database_table : :class:`civis.Response`
                    - schema : str
                        The database schema name.
                    - table : str
                        The database table name.
                    - use_without_schema : bool
                        This attribute is no longer available; defaults to false but
                        cannot be used.
                - google_worksheet : :class:`civis.Response`
                    - spreadsheet : str
                        The spreadsheet document name.
                    - spreadsheet_id : str
                        The spreadsheet document id.
                    - worksheet : str
                        The worksheet tab name.
                    - worksheet_id : int
                        The worksheet tab id.
            - advanced_options : :class:`civis.Response`
                - max_errors : int
                    For Google Doc and Auto Imports. The maximum number of errors that
                    can occur without the job failing.
                - existing_table_rows : str
                    For Google Doc and Auto Imports. The behavior if a table with the
                    requested name already exists.  One of "fail", "truncate",
                    "append", or "drop". Defaults to "fail".
                - first_row_is_header : bool
                    For Google Doc and Auto Imports. A boolean value indicating whether
                    or not the first row is a header row.
                - diststyle : str
                    For Auto Imports. The diststyle to use for a Redshift table.
                - distkey : str
                    For Auto Imports. The distkey to use for a Redshift table.
                - sortkey1 : str
                    For Auto Imports. The first sortkey to use for a Redshift table.
                - sortkey2 : str
                    For Auto Imports. The second sortkey to use for a Redshift table.
                - column_delimiter : str
                    For Auto Imports. The column delimiter for the file. Valid
                    arguments are "comma", "tab", and "pipe". If column_delimiter is
                    null or omitted, it will be auto-detected.
                - column_overrides : :class:`civis.Response`
                    For Auto Imports. Hash used for overriding auto-detected names and
                    types, with keys being the index of the column being overridden.
                - escaped : bool
                    For Auto Imports. If true, escape quotes with a backslash;
                    otherwise, escape quotes by double-quoting. Defaults to false.
                - identity_column : str
                    For DB Syncs. The column or columns to use as primary key for
                    incremental syncs. Should be a unique identifier. If blank, primary
                    key columns will be auto-detected. If more than one identity column
                    is specified, an identity column must be specified for each table.
                    We recommend the primary key be a sequential data type such as an
                    integer, double, timestamp, date, or float. If using a primary key
                    that is a string data type, we recommend having a
                    last_modified_column to ensure all data is synced to the
                    destination table.
                - last_modified_column : str
                    For DB Syncs. The column to use to detect recently modified data
                    for incremental syncs. Defaults to "Auto-Detect", which will use
                    the first column it finds containing either "modif" or "update" in
                    the name. When specified, only rows where last_modified_column in
                    the source >= last_modified_column in the destination will be
                    synced.
                - row_chunk_size : int
                    For DB Syncs. If specified, will split the sync into chunks of this
                    size.
                - wipe_destination_table : bool
                    For DB Syncs. If true, will perform a full table refresh.
                - truncate_long_lines : bool
                    For DB Syncs to Redshift. When true, truncates column data to fit
                    the column specification.
                - invalid_char_replacement : str
                    For DB Syncs to Redshift. If specified, will replace each invalid
                    UTF-8 character with this character. Must be a single ASCII
                    character.
                - verify_table_row_counts : bool
                    For DB Syncs. When true, an error will be raised if the destination
                    table does not have the same number of rows as the source table
                    after the sync.
                - partition_column_name : str
                    This parameter is deprecated
                - partition_schema_name : str
                    This parameter is deprecated
                - partition_table_name : str
                    This parameter is deprecated
                - partition_table_partition_column_min_name : str
                    This parameter is deprecated
                - partition_table_partition_column_max_name : str
                    This parameter is deprecated
                - mysql_catalog_matches_schema : bool
                    This attribute is no longer available; defaults to true but cannot
                    be used.
                - chunking_method : str
                    This parameter is deprecated
                - export_action : str
                    For Google Doc Exports. The kind of export action you want to have
                    the export execute. Set to "newsprsht" if you want a new worksheet
                    inside a new spreadsheet. Set to "newwksht" if you want a new
                    worksheet inside an existing spreadsheet. Set to "updatewksht" if
                    you want to overwrite an existing worksheet inside an existing
                    spreadsheet. Set to "appendwksht" if you want to append to the end
                    of an existing worksheet inside an existing spreadsheet. Default is
                    set to "newsprsht"
                - sql_query : str
                    For Google Doc Exports. The SQL query for the export.
                - contact_lists : str
                    This parameter is deprecated
                - soql_query : str
                    This parameter is deprecated
                - include_deleted_records : bool
                    This parameter is deprecated
        """
        ...

class _Jobs:
    def list(
        self,
        *,
        state: str | None = ...,
        type: str | None = ...,
        q: str | None = ...,
        permission: str | None = ...,
        scheduled: bool | None = ...,
        hidden: bool | None = ...,
        archived: str | None = ...,
        author: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseJobsList]:
        """List Jobs

        API URL: ``GET /jobs``

        Parameters
        ----------
        state : str, optional
            The job's state. One or more of queued, running, succeeded, failed, and
            cancelled. Specify multiple values as a comma-separated list (e.g., "A,B").
        type : str, optional
            The job's type. Specify multiple values as a comma-separated list (e.g.,
            "A,B").
        q : str, optional
            Query string to search on the id, name, and job type.
        permission : str, optional
            A permissions string, one of "read", "write", or "manage". Lists only jobs
            for which the current user has that permission.
        scheduled : bool, optional
            If the item is scheduled.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.
        archived : str, optional
            The archival status of the requested item(s).
        author : str, optional
            If specified, return items from any of these authors. It accepts a comma-
            separated list of user IDs.
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to updated_at. Must be
            one of: updated_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
            - name : str
            - type : str
            - from_template_id : int
            - state : str
                Whether the job is idle, queued, running, cancelled, or failed.
            - created_at : str (date-time)
            - updated_at : str (date-time)
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - archived : str
                The archival status of the requested item(s).
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseJobsGet:
        """Show basic job info

        API URL: ``GET /jobs/{id}``

        Parameters
        ----------
        id : int
            The ID for this job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
            - name : str
            - type : str
            - from_template_id : int
            - state : str
                Whether the job is idle, queued, running, cancelled, or failed.
            - created_at : str (date-time)
            - updated_at : str (date-time)
            - runs : List[:class:`civis.Response`]
                Information about the most recent runs of the job.

                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - success_email_subject : str
            - success_email_body : str
            - running_as_user : str
            - run_by_user : str
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
        """
        ...

    def post_trigger_email(
        self,
        id: int,
    ) -> _ResponseJobsPostTriggerEmail:
        """Generate and retrieve trigger email address

        API URL: ``POST /jobs/{id}/trigger_email``

        Parameters
        ----------
        id : int
            The ID for this job.

        Returns
        -------
        :class:`civis.Response`
            - trigger_email : str
                Email address which may be used to trigger this job to run.
        """
        ...

    def list_parents(
        self,
        id: int,
    ) -> List[_ResponseJobsListParents]:
        """Show chain of parents as a list that this job triggers from

        API URL: ``GET /jobs/{id}/parents``

        Parameters
        ----------
        id : int
            The ID for this job.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
            - name : str
            - type : str
            - from_template_id : int
            - state : str
                Whether the job is idle, queued, running, cancelled, or failed.
            - created_at : str (date-time)
            - updated_at : str (date-time)
            - runs : List[:class:`civis.Response`]
                Information about the most recent runs of the job.

                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - success_email_subject : str
            - success_email_body : str
            - running_as_user : str
            - run_by_user : str
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
        """
        ...

    def list_children(
        self,
        id: int,
    ) -> List[_ResponseJobsListChildren]:
        """Show nested tree of children that this job triggers

        API URL: ``GET /jobs/{id}/children``

        Parameters
        ----------
        id : int
            The ID for this job.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
            - name : str
            - type : str
            - from_template_id : int
            - state : str
            - created_at : str (date-time)
            - updated_at : str (date-time)
            - runs : List[:class:`civis.Response`]
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - children : List[:class:`civis.Response`]
        """
        ...

    def list_runs(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseJobsListRuns]:
        """List runs for the given job

        API URL: ``GET /jobs/{id}/runs``

        Parameters
        ----------
        id : int
            The ID for this job.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
            - state : str
            - created_at : str (time)
                The time that the run was queued.
            - started_at : str (time)
                The time that the run started.
            - finished_at : str (time)
                The time that the run completed.
            - error : str
                The error message for this run, if present.
        """
        ...

    def post_runs(
        self,
        id: int,
    ) -> _ResponseJobsPostRuns:
        """Run a job

        API URL: ``POST /jobs/{id}/runs``

        Parameters
        ----------
        id : int
            The ID for this job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
            - state : str
            - created_at : str (time)
                The time that the run was queued.
            - started_at : str (time)
                The time that the run started.
            - finished_at : str (time)
                The time that the run completed.
            - error : str
                The error message for this run, if present.
        """
        ...

    def get_runs(
        self,
        id: int,
        run_id: int,
    ) -> _ResponseJobsGetRuns:
        """Check status of a job

        API URL: ``GET /jobs/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Job.
        run_id : int
            The ID of the Run.

        Returns
        -------
        :class:`civis.Response`
            - id : int
            - state : str
            - created_at : str (time)
                The time that the run was queued.
            - started_at : str (time)
                The time that the run started.
            - finished_at : str (time)
                The time that the run completed.
            - error : str
                The error message for this run, if present.
        """
        ...

    def delete_runs(
        self,
        id: int,
        run_id: int,
    ) -> Response:
        """Cancel a run

        API URL: ``DELETE /jobs/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Job.
        run_id : int
            The ID of the Run.

        Returns
        -------
        None
            Response code 202: success
        """
        ...

    def list_runs_outputs(
        self,
        id: int,
        run_id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseJobsListRunsOutputs]:
        """List the outputs for a run

        API URL: ``GET /jobs/{id}/runs/{run_id}/outputs``

        Parameters
        ----------
        id : int
            The ID of the job.
        run_id : int
            The ID of the run.
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to created_at. Must be
            one of: created_at, id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - object_type : str
                The type of the output. Valid values are File, Table, Report, Project,
                Credential, or JSONValue
            - object_id : int
                The ID of the output.
            - name : str
                The name of the output.
            - link : str
                The hypermedia link to the output.
            - value : object
        """
        ...

    def list_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseJobsListRunsLogs]:
        """Get the logs for a run

        API URL: ``GET /jobs/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the job job.
        run_id : int
            The ID of the run.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def list_workflows(
        self,
        id: int,
        *,
        archived: str | None = ...,
    ) -> List[_ResponseJobsListWorkflows]:
        """List the workflows a job belongs to

        API URL: ``GET /jobs/{id}/workflows``

        Parameters
        ----------
        id : int
        archived : str, optional
            The archival status of the requested item(s).

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this workflow.
            - name : str
                The name of this workflow.
            - description : str
                A description of the workflow.
            - valid : bool
                The validity of the workflow definition.
            - file_id : str
                The file id for the s3 file containing the workflow configuration.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The state of the workflow. State is "running" if any execution is
                running, otherwise reflects most recent execution state.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - allow_concurrent_executions : bool
                Whether the workflow can execute when already running.
            - time_zone : str
                The time zone of this workflow.
            - next_execution_at : str (time)
                The time of the next scheduled execution.
            - archived : str
                The archival status of the requested item(s).
            - created_at : str (time)
            - updated_at : str (time)
        """
        ...

    def list_shares(
        self,
        id: int,
    ) -> List[_ResponseJobsListShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /jobs/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseJobsPutSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /jobs/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /jobs/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseJobsPutSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /jobs/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /jobs/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseJobsListDependencies]:
        """List dependent objects for this object

        API URL: ``GET /jobs/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseJobsPutTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /jobs/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseJobsListProjects]:
        """List the projects a Job belongs to

        API URL: ``GET /jobs/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the Job.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a Job to a project

        API URL: ``PUT /jobs/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Job.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a Job from a project

        API URL: ``DELETE /jobs/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Job.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseJobsPutArchive:
        """Update the archive status of this object

        API URL: ``PUT /jobs/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
            - name : str
            - type : str
            - from_template_id : int
            - state : str
                Whether the job is idle, queued, running, cancelled, or failed.
            - created_at : str (date-time)
            - updated_at : str (date-time)
            - runs : List[:class:`civis.Response`]
                Information about the most recent runs of the job.

                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - success_email_subject : str
            - success_email_body : str
            - running_as_user : str
            - run_by_user : str
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
        """
        ...

class _Json_Values:
    def post(
        self,
        value_str: str,
        *,
        name: str | None = ...,
    ) -> _ResponseJsonValuesPost:
        """Create a JSON Value

        API URL: ``POST /json_values``

        Parameters
        ----------
        value_str : str
            The JSON value to store. Should be a serialized JSON string. Limited to
            1000000 bytes.
        name : str, optional
            The name of the JSON Value.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the JSON Value.
            - name : str
                The name of the JSON Value.
            - value : object
                The deserialized JSON value.
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseJsonValuesGet:
        """Get details about a JSON Value

        API URL: ``GET /json_values/{id}``

        Parameters
        ----------
        id : int
            The ID of the JSON Value.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the JSON Value.
            - name : str
                The name of the JSON Value.
            - value : object
                The deserialized JSON value.
        """
        ...

    def patch(
        self,
        id: int,
        *,
        name: str | None = ...,
        value_str: str | None = ...,
    ) -> _ResponseJsonValuesPatch:
        """Update some attributes of this JSON Value

        API URL: ``PATCH /json_values/{id}``

        Parameters
        ----------
        id : int
            The ID of the JSON Value.
        name : str, optional
            The name of the JSON Value.
        value_str : str, optional
            The JSON value to store. Should be a serialized JSON string. Limited to
            1000000 bytes.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the JSON Value.
            - name : str
                The name of the JSON Value.
            - value : object
                The deserialized JSON value.
        """
        ...

    def list_shares(
        self,
        id: int,
    ) -> List[_ResponseJsonValuesListShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /json_values/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseJsonValuesPutSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /json_values/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /json_values/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseJsonValuesPutSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /json_values/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /json_values/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseJsonValuesListDependencies]:
        """List dependent objects for this object

        API URL: ``GET /json_values/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseJsonValuesPutTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /json_values/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

class _Match_Targets:
    def list_shares(
        self,
        id: int,
    ) -> List[_ResponseMatchTargetsListShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /match_targets/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseMatchTargetsPutSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /match_targets/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /match_targets/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseMatchTargetsPutSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /match_targets/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /match_targets/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseMatchTargetsPutArchive:
        """Update the archive status of this object

        API URL: ``PUT /match_targets/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the match target
            - name : str
                The name of the match target
            - target_file_name : str
                The name of the target file
            - created_at : str (time)
            - updated_at : str (time)
            - archived : bool
                Whether the match target has been archived.
        """
        ...

    def list(
        self,
    ) -> List[_ResponseMatchTargetsList]:
        """List match targets

        API URL: ``GET /match_targets``

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the match target
            - name : str
                The name of the match target
            - target_file_name : str
                The name of the target file
            - created_at : str (time)
            - updated_at : str (time)
            - archived : bool
                Whether the match target has been archived.
        """
        ...

    def post(
        self,
        name: str,
        *,
        target_file_name: str | None = ...,
        archived: bool | None = ...,
    ) -> _ResponseMatchTargetsPost:
        """Create a new match target

        API URL: ``POST /match_targets``

        Parameters
        ----------
        name : str
            The name of the match target
        target_file_name : str, optional
            The name of the target file
        archived : bool, optional
            Whether the match target has been archived.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the match target
            - name : str
                The name of the match target
            - target_file_name : str
                The name of the target file
            - created_at : str (time)
            - updated_at : str (time)
            - archived : bool
                Whether the match target has been archived.
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseMatchTargetsGet:
        """Show Match Target info

        API URL: ``GET /match_targets/{id}``

        Parameters
        ----------
        id : int
            The ID of the match target

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the match target
            - name : str
                The name of the match target
            - target_file_name : str
                The name of the target file
            - created_at : str (time)
            - updated_at : str (time)
            - archived : bool
                Whether the match target has been archived.
        """
        ...

    def patch(
        self,
        id: int,
        *,
        name: str | None = ...,
        target_file_name: str | None = ...,
        archived: bool | None = ...,
    ) -> _ResponseMatchTargetsPatch:
        """Update a match target

        API URL: ``PATCH /match_targets/{id}``

        Parameters
        ----------
        id : int
            The ID of the match target
        name : str, optional
            The name of the match target
        target_file_name : str, optional
            The name of the target file
        archived : bool, optional
            Whether the match target has been archived.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the match target
            - name : str
                The name of the match target
            - target_file_name : str
                The name of the target file
            - created_at : str (time)
            - updated_at : str (time)
            - archived : bool
                Whether the match target has been archived.
        """
        ...

class _Media:
    def list_spot_orders_shares(
        self,
        id: int,
    ) -> List[_ResponseMediaListSpotOrdersShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /media/spot_orders/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_spot_orders_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseMediaPutSpotOrdersSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /media/spot_orders/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_spot_orders_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /media/spot_orders/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_spot_orders_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseMediaPutSpotOrdersSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /media/spot_orders/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_spot_orders_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /media/spot_orders/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_spot_orders_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseMediaPutSpotOrdersArchive:
        """Update the archive status of this object

        API URL: ``PUT /media/spot_orders/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the spot order.
            - archived : str
                The archival status of the requested item(s).
            - csv_s3_uri : str
                S3 URI for the spot order CSV file.
            - json_s3_uri : str
                S3 URI for the spot order JSON file.
            - xml_archive_s3_uri : str
                S3 URI for the spot order XML archive.
            - last_transform_job_id : int
                ID of the spot order transformation job.
        """
        ...

    def list_optimizations_shares(
        self,
        id: int,
    ) -> List[_ResponseMediaListOptimizationsShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /media/optimizations/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_optimizations_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseMediaPutOptimizationsSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /media/optimizations/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_optimizations_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /media/optimizations/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_optimizations_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseMediaPutOptimizationsSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /media/optimizations/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_optimizations_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /media/optimizations/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_optimizations_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseMediaPutOptimizationsArchive:
        """Update the archive status of this object

        API URL: ``PUT /media/optimizations/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The optimization ID.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of the optimization.
            - created_at : str (time)
            - updated_at : str (time)
            - finished_at : str (date-time)
                The end time of the last run.
            - state : str
                The state of the last run.
            - last_run_id : int
                The ID of the last run.
            - spot_order_id : int
                The ID for the spot order produced by the optimization.
            - archived : str
                The archival status of the requested item(s).
            - report_link : str
                A link to the visual report for the optimization.
            - spot_order_link : str
                A link to the json version of the spot order.
            - file_links : List[str]
                Links to the csv and xml versions of the spot order.
            - runs : List[:class:`civis.Response`]
                The runs of the optimization.

                - market_id : int
                    The market ID.
                - start_date : str (date)
                    The start date for the media run.
                - end_date : str (date)
                    The end date for the media run.
                - force_cpm : bool
                    Whether to force optimization to use CPM data even if partition
                    data is available.
                - reach_alpha : float (float)
                    A tuning parameter used to adjust RF.
                - syscodes : List[int]
                    The syscodes for the media run.
                - rate_cards : List[str]
                    The ratecards for the media run.
                - constraints : List[:class:`civis.Response`]
                    The constraints for the media run.

                    - targets : List[str]
                        The targets to constrain.
                    - budget : float (float)
                        The maximum budget for these targets.
                    - frequency : float (float)
                        The maximum frequency for these targets.
            - programs : List[str]
                An array of programs that the Civis Media Optimizer either exclude or
                limit to.An error will be thrown if exclude_programs is not also set.
            - networks : List[str]
                An array of networks that the Civis Media Optimizer either exclude or
                limit to.An error will be thrown if exclude_networks is not also set.
            - exclude_programs : bool
                If Civis Media Optimizer should exclude the programs in the programs
                parameter.If this value is set to false, it will make the optimization
                limit itself to the programs supplied through the programs parameter.An
                error will be thrown if programs is not also set.
            - exclude_networks : bool
                If Civis Media Optimizer should exclude the networks in the networks
                parameter.If this value is set to false, it will make the optimization
                limit itself to the networks supplied through the networks.An error
                will be thrown if networks is not also set.
            - time_slot_percentages : :class:`civis.Response`
                The maximum amount of the budget spent on that particular day of the
                week, daypart, or specific time slot for broadcast and cable.
        """
        ...

    def list_ratecards_shares(
        self,
        id: int,
    ) -> List[_ResponseMediaListRatecardsShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /media/ratecards/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_ratecards_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseMediaPutRatecardsSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /media/ratecards/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_ratecards_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /media/ratecards/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_ratecards_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseMediaPutRatecardsSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /media/ratecards/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_ratecards_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /media/ratecards/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_ratecards_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseMediaPutRatecardsArchive:
        """Update the archive status of this object

        API URL: ``PUT /media/ratecards/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ratecard ID.
            - filename : str
                Name of the ratecard file.
            - start_on : str (date)
                First day to which the ratecard applies.
            - end_on : str (date)
                Last day to which the ratecard applies.
            - dma_number : int
                Number of the DMA associated with the ratecard.
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def list_optimizations(
        self,
        *,
        archived: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseMediaListOptimizations]:
        """List all optimizations

        API URL: ``GET /media/optimizations``

        Parameters
        ----------
        archived : str, optional
            The archival status of the requested item(s).
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to created_at. Must be
            one of: created_at, author, name.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The optimization ID.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of the optimization.
            - created_at : str (time)
            - updated_at : str (time)
            - finished_at : str (date-time)
                The end time of the last run.
            - state : str
                The state of the last run.
            - last_run_id : int
                The ID of the last run.
            - spot_order_id : int
                The ID for the spot order produced by the optimization.
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def post_optimizations(
        self,
        runs: List[dict],
        *,
        name: str | None = ...,
        programs: List[str] | None = ...,
        networks: List[str] | None = ...,
        exclude_programs: bool | None = ...,
        exclude_networks: bool | None = ...,
        time_slot_percentages: dict | None = ...,
    ) -> _ResponseMediaPostOptimizations:
        """Create a new optimization

        API URL: ``POST /media/optimizations``

        Parameters
        ----------
        runs : List[dict]
            The runs of the optimization.

            - market_id : int
                The market ID.
            - start_date : str (date)
                The start date for the media run.
            - end_date : str (date)
                The end date for the media run.
            - force_cpm : bool
                Whether to force optimization to use CPM data even if partition data is
                available.
            - reach_alpha : float (float)
                A tuning parameter used to adjust RF.
            - syscodes : List[int]
                The syscodes for the media run.
            - rate_cards : List[str]
                The ratecards for the media run.
            - constraints : List[dict]
                The constraints for the media run.

                - targets : List[str]
                    The targets to constrain.
                - budget : float (float)
                    The maximum budget for these targets.
                - frequency : float (float)
                    The maximum frequency for these targets.
        name : str, optional
            The name of the optimization.
        programs : List[str], optional
            An array of programs that the Civis Media Optimizer either exclude or limit
            to.An error will be thrown if exclude_programs is not also set.
        networks : List[str], optional
            An array of networks that the Civis Media Optimizer either exclude or limit
            to.An error will be thrown if exclude_networks is not also set.
        exclude_programs : bool, optional
            If Civis Media Optimizer should exclude the programs in the programs
            parameter.If this value is set to false, it will make the optimization
            limit itself to the programs supplied through the programs parameter.An
            error will be thrown if programs is not also set.
        exclude_networks : bool, optional
            If Civis Media Optimizer should exclude the networks in the networks
            parameter.If this value is set to false, it will make the optimization
            limit itself to the networks supplied through the networks.An error will be
            thrown if networks is not also set.
        time_slot_percentages : dict, optional
            The maximum amount of the budget spent on that particular day of the week,
            daypart, or specific time slot for broadcast and cable.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The optimization ID.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of the optimization.
            - created_at : str (time)
            - updated_at : str (time)
            - finished_at : str (date-time)
                The end time of the last run.
            - state : str
                The state of the last run.
            - last_run_id : int
                The ID of the last run.
            - spot_order_id : int
                The ID for the spot order produced by the optimization.
            - archived : str
                The archival status of the requested item(s).
            - report_link : str
                A link to the visual report for the optimization.
            - spot_order_link : str
                A link to the json version of the spot order.
            - file_links : List[str]
                Links to the csv and xml versions of the spot order.
            - runs : List[:class:`civis.Response`]
                The runs of the optimization.

                - market_id : int
                    The market ID.
                - start_date : str (date)
                    The start date for the media run.
                - end_date : str (date)
                    The end date for the media run.
                - force_cpm : bool
                    Whether to force optimization to use CPM data even if partition
                    data is available.
                - reach_alpha : float (float)
                    A tuning parameter used to adjust RF.
                - syscodes : List[int]
                    The syscodes for the media run.
                - rate_cards : List[str]
                    The ratecards for the media run.
                - constraints : List[:class:`civis.Response`]
                    The constraints for the media run.

                    - targets : List[str]
                        The targets to constrain.
                    - budget : float (float)
                        The maximum budget for these targets.
                    - frequency : float (float)
                        The maximum frequency for these targets.
            - programs : List[str]
                An array of programs that the Civis Media Optimizer either exclude or
                limit to.An error will be thrown if exclude_programs is not also set.
            - networks : List[str]
                An array of networks that the Civis Media Optimizer either exclude or
                limit to.An error will be thrown if exclude_networks is not also set.
            - exclude_programs : bool
                If Civis Media Optimizer should exclude the programs in the programs
                parameter.If this value is set to false, it will make the optimization
                limit itself to the programs supplied through the programs parameter.An
                error will be thrown if programs is not also set.
            - exclude_networks : bool
                If Civis Media Optimizer should exclude the networks in the networks
                parameter.If this value is set to false, it will make the optimization
                limit itself to the networks supplied through the networks.An error
                will be thrown if networks is not also set.
            - time_slot_percentages : :class:`civis.Response`
                The maximum amount of the budget spent on that particular day of the
                week, daypart, or specific time slot for broadcast and cable.
        """
        ...

    def get_optimizations(
        self,
        id: int,
    ) -> _ResponseMediaGetOptimizations:
        """Show a single optimization

        API URL: ``GET /media/optimizations/{id}``

        Parameters
        ----------
        id : int
            The optimization ID.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The optimization ID.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of the optimization.
            - created_at : str (time)
            - updated_at : str (time)
            - finished_at : str (date-time)
                The end time of the last run.
            - state : str
                The state of the last run.
            - last_run_id : int
                The ID of the last run.
            - spot_order_id : int
                The ID for the spot order produced by the optimization.
            - archived : str
                The archival status of the requested item(s).
            - report_link : str
                A link to the visual report for the optimization.
            - spot_order_link : str
                A link to the json version of the spot order.
            - file_links : List[str]
                Links to the csv and xml versions of the spot order.
            - runs : List[:class:`civis.Response`]
                The runs of the optimization.

                - market_id : int
                    The market ID.
                - start_date : str (date)
                    The start date for the media run.
                - end_date : str (date)
                    The end date for the media run.
                - force_cpm : bool
                    Whether to force optimization to use CPM data even if partition
                    data is available.
                - reach_alpha : float (float)
                    A tuning parameter used to adjust RF.
                - syscodes : List[int]
                    The syscodes for the media run.
                - rate_cards : List[str]
                    The ratecards for the media run.
                - constraints : List[:class:`civis.Response`]
                    The constraints for the media run.

                    - targets : List[str]
                        The targets to constrain.
                    - budget : float (float)
                        The maximum budget for these targets.
                    - frequency : float (float)
                        The maximum frequency for these targets.
            - programs : List[str]
                An array of programs that the Civis Media Optimizer either exclude or
                limit to.An error will be thrown if exclude_programs is not also set.
            - networks : List[str]
                An array of networks that the Civis Media Optimizer either exclude or
                limit to.An error will be thrown if exclude_networks is not also set.
            - exclude_programs : bool
                If Civis Media Optimizer should exclude the programs in the programs
                parameter.If this value is set to false, it will make the optimization
                limit itself to the programs supplied through the programs parameter.An
                error will be thrown if programs is not also set.
            - exclude_networks : bool
                If Civis Media Optimizer should exclude the networks in the networks
                parameter.If this value is set to false, it will make the optimization
                limit itself to the networks supplied through the networks.An error
                will be thrown if networks is not also set.
            - time_slot_percentages : :class:`civis.Response`
                The maximum amount of the budget spent on that particular day of the
                week, daypart, or specific time slot for broadcast and cable.
        """
        ...

    def patch_optimizations(
        self,
        id: int,
        *,
        name: str | None = ...,
        runs: List[dict] | None = ...,
        programs: List[str] | None = ...,
        networks: List[str] | None = ...,
        exclude_programs: bool | None = ...,
        exclude_networks: bool | None = ...,
        time_slot_percentages: dict | None = ...,
    ) -> _ResponseMediaPatchOptimizations:
        """Edit an existing optimization

        API URL: ``PATCH /media/optimizations/{id}``

        Parameters
        ----------
        id : int
            The optimization ID.
        name : str, optional
            The name of the optimization.
        runs : List[dict], optional
            The runs of the optimization.

            - market_id : int
                The market ID.
            - start_date : str (date)
                The start date for the media run.
            - end_date : str (date)
                The end date for the media run.
            - force_cpm : bool
                Whether to force optimization to use CPM data even if partition data is
                available.
            - reach_alpha : float (float)
                A tuning parameter used to adjust RF.
            - syscodes : List[int]
                The syscodes for the media run.
            - rate_cards : List[str]
                The ratecards for the media run.
            - constraints : List[dict]
                The constraints for the media run.

                - targets : List[str]
                    The targets to constrain.
                - budget : float (float)
                    The maximum budget for these targets.
                - frequency : float (float)
                    The maximum frequency for these targets.
        programs : List[str], optional
            An array of programs that the Civis Media Optimizer either exclude or limit
            to.An error will be thrown if exclude_programs is not also set.
        networks : List[str], optional
            An array of networks that the Civis Media Optimizer either exclude or limit
            to.An error will be thrown if exclude_networks is not also set.
        exclude_programs : bool, optional
            If Civis Media Optimizer should exclude the programs in the programs
            parameter.If this value is set to false, it will make the optimization
            limit itself to the programs supplied through the programs parameter.An
            error will be thrown if programs is not also set.
        exclude_networks : bool, optional
            If Civis Media Optimizer should exclude the networks in the networks
            parameter.If this value is set to false, it will make the optimization
            limit itself to the networks supplied through the networks.An error will be
            thrown if networks is not also set.
        time_slot_percentages : dict, optional
            The maximum amount of the budget spent on that particular day of the week,
            daypart, or specific time slot for broadcast and cable.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The optimization ID.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of the optimization.
            - created_at : str (time)
            - updated_at : str (time)
            - finished_at : str (date-time)
                The end time of the last run.
            - state : str
                The state of the last run.
            - last_run_id : int
                The ID of the last run.
            - spot_order_id : int
                The ID for the spot order produced by the optimization.
            - archived : str
                The archival status of the requested item(s).
            - report_link : str
                A link to the visual report for the optimization.
            - spot_order_link : str
                A link to the json version of the spot order.
            - file_links : List[str]
                Links to the csv and xml versions of the spot order.
            - runs : List[:class:`civis.Response`]
                The runs of the optimization.

                - market_id : int
                    The market ID.
                - start_date : str (date)
                    The start date for the media run.
                - end_date : str (date)
                    The end date for the media run.
                - force_cpm : bool
                    Whether to force optimization to use CPM data even if partition
                    data is available.
                - reach_alpha : float (float)
                    A tuning parameter used to adjust RF.
                - syscodes : List[int]
                    The syscodes for the media run.
                - rate_cards : List[str]
                    The ratecards for the media run.
                - constraints : List[:class:`civis.Response`]
                    The constraints for the media run.

                    - targets : List[str]
                        The targets to constrain.
                    - budget : float (float)
                        The maximum budget for these targets.
                    - frequency : float (float)
                        The maximum frequency for these targets.
            - programs : List[str]
                An array of programs that the Civis Media Optimizer either exclude or
                limit to.An error will be thrown if exclude_programs is not also set.
            - networks : List[str]
                An array of networks that the Civis Media Optimizer either exclude or
                limit to.An error will be thrown if exclude_networks is not also set.
            - exclude_programs : bool
                If Civis Media Optimizer should exclude the programs in the programs
                parameter.If this value is set to false, it will make the optimization
                limit itself to the programs supplied through the programs parameter.An
                error will be thrown if programs is not also set.
            - exclude_networks : bool
                If Civis Media Optimizer should exclude the networks in the networks
                parameter.If this value is set to false, it will make the optimization
                limit itself to the networks supplied through the networks.An error
                will be thrown if networks is not also set.
            - time_slot_percentages : :class:`civis.Response`
                The maximum amount of the budget spent on that particular day of the
                week, daypart, or specific time slot for broadcast and cable.
        """
        ...

    def post_optimizations_clone(
        self,
        id: int,
    ) -> _ResponseMediaPostOptimizationsClone:
        """Clone an existing optimization

        API URL: ``POST /media/optimizations/{id}/clone``

        Parameters
        ----------
        id : int
            The optimization ID.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The optimization ID.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of the optimization.
            - created_at : str (time)
            - updated_at : str (time)
            - finished_at : str (date-time)
                The end time of the last run.
            - state : str
                The state of the last run.
            - last_run_id : int
                The ID of the last run.
            - spot_order_id : int
                The ID for the spot order produced by the optimization.
            - archived : str
                The archival status of the requested item(s).
            - report_link : str
                A link to the visual report for the optimization.
            - spot_order_link : str
                A link to the json version of the spot order.
            - file_links : List[str]
                Links to the csv and xml versions of the spot order.
            - runs : List[:class:`civis.Response`]
                The runs of the optimization.

                - market_id : int
                    The market ID.
                - start_date : str (date)
                    The start date for the media run.
                - end_date : str (date)
                    The end date for the media run.
                - force_cpm : bool
                    Whether to force optimization to use CPM data even if partition
                    data is available.
                - reach_alpha : float (float)
                    A tuning parameter used to adjust RF.
                - syscodes : List[int]
                    The syscodes for the media run.
                - rate_cards : List[str]
                    The ratecards for the media run.
                - constraints : List[:class:`civis.Response`]
                    The constraints for the media run.

                    - targets : List[str]
                        The targets to constrain.
                    - budget : float (float)
                        The maximum budget for these targets.
                    - frequency : float (float)
                        The maximum frequency for these targets.
            - programs : List[str]
                An array of programs that the Civis Media Optimizer either exclude or
                limit to.An error will be thrown if exclude_programs is not also set.
            - networks : List[str]
                An array of networks that the Civis Media Optimizer either exclude or
                limit to.An error will be thrown if exclude_networks is not also set.
            - exclude_programs : bool
                If Civis Media Optimizer should exclude the programs in the programs
                parameter.If this value is set to false, it will make the optimization
                limit itself to the programs supplied through the programs parameter.An
                error will be thrown if programs is not also set.
            - exclude_networks : bool
                If Civis Media Optimizer should exclude the networks in the networks
                parameter.If this value is set to false, it will make the optimization
                limit itself to the networks supplied through the networks.An error
                will be thrown if networks is not also set.
            - time_slot_percentages : :class:`civis.Response`
                The maximum amount of the budget spent on that particular day of the
                week, daypart, or specific time slot for broadcast and cable.
        """
        ...

    def post_optimizations_runs(
        self,
        id: int,
    ) -> _ResponseMediaPostOptimizationsRuns:
        """Start a run

        API URL: ``POST /media/optimizations/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Optimization job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - optimization_id : int
                The ID of the Optimization job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def list_optimizations_runs(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseMediaListOptimizationsRuns]:
        """List runs for the given Optimization job

        API URL: ``GET /media/optimizations/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Optimization job.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the run.
            - optimization_id : int
                The ID of the Optimization job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def get_optimizations_runs(
        self,
        id: int,
        run_id: int,
    ) -> _ResponseMediaGetOptimizationsRuns:
        """Check status of a run

        API URL: ``GET /media/optimizations/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Optimization job.
        run_id : int
            The ID of the run.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - optimization_id : int
                The ID of the Optimization job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def delete_optimizations_runs(
        self,
        id: int,
        run_id: int,
    ) -> Response:
        """Cancel a run

        API URL: ``DELETE /media/optimizations/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Optimization job.
        run_id : int
            The ID of the run.

        Returns
        -------
        None
            Response code 202: success
        """
        ...

    def list_optimizations_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseMediaListOptimizationsRunsLogs]:
        """Get the logs for a run

        API URL: ``GET /media/optimizations/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the Optimization job.
        run_id : int
            The ID of the run.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def list_spot_orders(
        self,
        *,
        id: int | None = ...,
        archived: str | None = ...,
    ) -> List[_ResponseMediaListSpotOrders]:
        """List all spot orders

        API URL: ``GET /media/spot_orders``

        Parameters
        ----------
        id : int, optional
            The ID for the spot order.
        archived : str, optional
            The archival status of the requested item(s).

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for the spot order.
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def post_spot_orders(
        self,
        *,
        body: str | None = ...,
    ) -> _ResponseMediaPostSpotOrders:
        """Create a spot order

        API URL: ``POST /media/spot_orders``

        Parameters
        ----------
        body : str, optional
            CSV body of a spot order.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the spot order.
            - archived : str
                The archival status of the requested item(s).
            - csv_s3_uri : str
                S3 URI for the spot order CSV file.
            - json_s3_uri : str
                S3 URI for the spot order JSON file.
            - xml_archive_s3_uri : str
                S3 URI for the spot order XML archive.
            - last_transform_job_id : int
                ID of the spot order transformation job.
        """
        ...

    def get_spot_orders(
        self,
        id: int,
    ) -> _ResponseMediaGetSpotOrders:
        """Show a single spot order

        API URL: ``GET /media/spot_orders/{id}``

        Parameters
        ----------
        id : int
            The ID for the spot order.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the spot order.
            - archived : str
                The archival status of the requested item(s).
            - csv_s3_uri : str
                S3 URI for the spot order CSV file.
            - json_s3_uri : str
                S3 URI for the spot order JSON file.
            - xml_archive_s3_uri : str
                S3 URI for the spot order XML archive.
            - last_transform_job_id : int
                ID of the spot order transformation job.
        """
        ...

    def put_spot_orders(
        self,
        id: int,
        *,
        body: str | None = ...,
    ) -> _ResponseMediaPutSpotOrders:
        """Edit the specified spot order

        API URL: ``PUT /media/spot_orders/{id}``

        Parameters
        ----------
        id : int
            The ID for the spot order.
        body : str, optional
            CSV body of a spot order.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the spot order.
            - archived : str
                The archival status of the requested item(s).
            - csv_s3_uri : str
                S3 URI for the spot order CSV file.
            - json_s3_uri : str
                S3 URI for the spot order JSON file.
            - xml_archive_s3_uri : str
                S3 URI for the spot order XML archive.
            - last_transform_job_id : int
                ID of the spot order transformation job.
        """
        ...

    def list_ratecards(
        self,
        *,
        archived: str | None = ...,
        filename: str | None = ...,
        dma_number: int | None = ...,
    ) -> List[_ResponseMediaListRatecards]:
        """List all ratecards

        API URL: ``GET /media/ratecards``

        Parameters
        ----------
        archived : str, optional
            The archival status of the requested item(s).
        filename : str, optional
            If specified, will be used to filter the ratecards returned. Substring
            matching is supported with "%" and "*" wildcards (e.g.,
            "filename=%ratecard%" will return both "ratecard 1" and "my ratecard").
        dma_number : int, optional
            If specified, will be used to filter the ratecards by DMA.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ratecard ID.
            - filename : str
                Name of the ratecard file.
            - start_on : str (date)
                First day to which the ratecard applies.
            - end_on : str (date)
                Last day to which the ratecard applies.
            - dma_number : int
                Number of the DMA associated with the ratecard.
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def post_ratecards(
        self,
        filename: str,
        start_on: str,
        end_on: str,
        dma_number: int,
    ) -> _ResponseMediaPostRatecards:
        """Create a Ratecard

        API URL: ``POST /media/ratecards``

        Parameters
        ----------
        filename : str
            Name of the ratecard file.
        start_on : str (date)
            First day to which the ratecard applies.
        end_on : str (date)
            Last day to which the ratecard applies.
        dma_number : int
            Number of the DMA associated with the ratecard.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ratecard ID.
            - filename : str
                Name of the ratecard file.
            - start_on : str (date)
                First day to which the ratecard applies.
            - end_on : str (date)
                Last day to which the ratecard applies.
            - dma_number : int
                Number of the DMA associated with the ratecard.
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def get_ratecards(
        self,
        id: int,
    ) -> _ResponseMediaGetRatecards:
        """Get a Ratecard

        API URL: ``GET /media/ratecards/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ratecard ID.
            - filename : str
                Name of the ratecard file.
            - start_on : str (date)
                First day to which the ratecard applies.
            - end_on : str (date)
                Last day to which the ratecard applies.
            - dma_number : int
                Number of the DMA associated with the ratecard.
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_ratecards(
        self,
        id: int,
        filename: str,
        start_on: str,
        end_on: str,
        dma_number: int,
    ) -> _ResponseMediaPutRatecards:
        """Replace all attributes of this Ratecard

        API URL: ``PUT /media/ratecards/{id}``

        Parameters
        ----------
        id : int
            The ratecard ID.
        filename : str
            Name of the ratecard file.
        start_on : str (date)
            First day to which the ratecard applies.
        end_on : str (date)
            Last day to which the ratecard applies.
        dma_number : int
            Number of the DMA associated with the ratecard.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ratecard ID.
            - filename : str
                Name of the ratecard file.
            - start_on : str (date)
                First day to which the ratecard applies.
            - end_on : str (date)
                Last day to which the ratecard applies.
            - dma_number : int
                Number of the DMA associated with the ratecard.
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def patch_ratecards(
        self,
        id: int,
        *,
        filename: str | None = ...,
        start_on: str | None = ...,
        end_on: str | None = ...,
        dma_number: int | None = ...,
    ) -> _ResponseMediaPatchRatecards:
        """Update some attributes of this Ratecard

        API URL: ``PATCH /media/ratecards/{id}``

        Parameters
        ----------
        id : int
            The ratecard ID.
        filename : str, optional
            Name of the ratecard file.
        start_on : str (date), optional
            First day to which the ratecard applies.
        end_on : str (date), optional
            Last day to which the ratecard applies.
        dma_number : int, optional
            Number of the DMA associated with the ratecard.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ratecard ID.
            - filename : str
                Name of the ratecard file.
            - start_on : str (date)
                First day to which the ratecard applies.
            - end_on : str (date)
                Last day to which the ratecard applies.
            - dma_number : int
                Number of the DMA associated with the ratecard.
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def list_dmas(
        self,
        *,
        name: str | None = ...,
        number: int | None = ...,
    ) -> List[_ResponseMediaListDmas]:
        """List all Designated Market Areas

        API URL: ``GET /media/dmas``

        Parameters
        ----------
        name : str, optional
            If specified, will be used to filter the DMAs returned. Substring matching
            is supported with "%" and "*" wildcards (e.g., "name=%region%" will return
            both "region1" and "my region").
        number : int, optional
            If specified, will be used to filter the DMAS by number.

        Returns
        -------
        :class:`civis.ListResponse`
            - name : str
                Name for the DMA region.
            - number : int
                Identifier number for a DMA.
        """
        ...

    def list_targets(
        self,
        *,
        name: str | None = ...,
        identifier: str | None = ...,
        data_source: str | None = ...,
    ) -> List[_ResponseMediaListTargets]:
        """List all Media Targets

        API URL: ``GET /media/targets``

        Parameters
        ----------
        name : str, optional
            The name of the target.
        identifier : str, optional
            A unique identifier for this target.
        data_source : str, optional
            The source of viewership data for this target.

        Returns
        -------
        :class:`civis.ListResponse`
            - name : str
                The name of the target.
            - identifier : str
                A unique identifier for this target.
            - data_source : str
                The source of viewership data for this target.
        """
        ...

class _Models:
    def list_types(
        self,
    ) -> List[_ResponseModelsListTypes]:
        """List all available model types

        API URL: ``GET /models/types``

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the model type.
            - algorithm : str
                The name of the algorithm used to train the model.
            - dv_type : str
                The type of dependent variable predicted by the model.
            - fint_allowed : bool
                Whether this model type supports searching for interaction terms.
        """
        ...

    def list(
        self,
        *,
        model_name: str | None = ...,
        training_table_name: str | None = ...,
        dependent_variable: str | None = ...,
        status: str | None = ...,
        author: str | None = ...,
        hidden: bool | None = ...,
        archived: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseModelsList]:
        """List

        API URL: ``GET /models``

        Parameters
        ----------
        model_name : str, optional
            If specified, will be used to filter the models returned. Substring
            matching is supported. (e.g., "modelName=model" will return both "model1"
            and "my model").
        training_table_name : str, optional
            If specified, will be used to filter the models returned by the training
            dataset table name. Substring matching is supported. (e.g.,
            "trainingTableName=table" will return both "table1" and "my_table").
        dependent_variable : str, optional
            If specified, will be used to filter the models returned by the dependent
            variable column name. Substring matching is supported. (e.g.,
            "dependentVariable=predictor" will return both "predictor" and "my
            predictor").
        status : str, optional
            If specified, returns models with one of these statuses. It accepts a
            comma-separated list, possible values are 'running', 'failed', 'succeeded',
            'idle', 'scheduled'.
        author : str, optional
            If specified, return items from any of these authors. It accepts a comma-
            separated list of user IDs.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.
        archived : str, optional
            The archival status of the requested item(s).
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to updated_at. Must be
            one of: updated_at, name, created_at, last_run.updated_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the model.
            - table_name : str
                The qualified name of the table containing the training set from which
                to build the model.
            - database_id : int
                The ID of the database holding the training set table used to build the
                model.
            - credential_id : int
                The ID of the credential used to read the target table. Defaults to the
                user's default credential.
            - model_name : str
                The name of the model.
            - description : str
                A description of the model.
            - interaction_terms : bool
                Whether to search for interaction terms.
            - box_cox_transformation : bool
                Whether to transform data so that it assumes a normal distribution.
                Valid only with continuous models.
            - model_type_id : int
                The ID of the model's type.
            - primary_key : str
                The unique ID (primary key) of the training dataset.
            - dependent_variable : str
                The dependent variable of the training dataset.
            - dependent_variable_order : List[str]
                The order of dependent variables, especially useful for Ordinal
                Modeling.
            - excluded_columns : List[str]
                A list of columns which will be considered ineligible to be independent
                variables.
            - limiting_sql : str
                A custom SQL WHERE clause used to filter the rows used to build the
                model. (e.g., "id > 105").
            - cross_validation_parameters : :class:`civis.Response`
                Cross validation parameter grid for tree methods, e.g. {"n_estimators":
                [100, 200, 500], "learning_rate": [0.01, 0.1], "max_depth": [2, 3]}.
            - number_of_folds : int
                Number of folds for cross validation. Default value is 5.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - parent_id : int
                The ID of the parent job that will trigger this model.
            - time_zone : str
                The time zone of this model.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (date-time)
                The time the model was created.
            - updated_at : str (date-time)
                The time the model was updated.
            - current_build_state : str
                The status of the current model build. One of "succeeded", "failed",
                "queued", or "running,"or "idle", if no build has been attempted.
            - current_build_exception : str
                Exception message, if applicable, of the current model build.
            - builds : List[:class:`civis.Response`]
                A list of trained models available for making predictions.

                - id : int
                    The ID of the model build.
                - name : str
                    The name of the model build.
                - created_at : str
                    The time the model build was created.
                - description : str
                    A description of the model build.
                - root_mean_squared_error : float (float)
                    A key metric for continuous models. Nil for other model types.
                - r_squared_error : float (float)
                    A key metric for continuous models. Nil for other model types.
                - roc_auc : float (float)
                    A key metric for binary, multinomial, and ordinal models. Nil for
                    other model types.
            - predictions : List[:class:`civis.Response`]
                The tables upon which the model will be applied.

                - id : int
                    The ID of the model to which to apply the prediction.
                - table_name : str
                    The qualified name of the table on which to apply the predictive
                    model.
                - primary_key : List[str]
                    The primary key or composite keys of the table being predicted.
                - limiting_sql : str
                    A SQL WHERE clause used to scope the rows to be predicted.
                - output_table : str
                    The qualified name of the table to be created which will contain
                    the model's predictions.
                - state : str
                    The status of the prediction. One of: "succeeded", "failed",
                    "queued", or "running,"or "idle", if no build has been attempted.
            - last_output_location : str
                The output JSON for the last build.
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseModelsGet:
        """Retrieve model configuration

        API URL: ``GET /models/{id}``

        Parameters
        ----------
        id : int
            The ID of the model.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the model.
            - table_name : str
                The qualified name of the table containing the training set from which
                to build the model.
            - database_id : int
                The ID of the database holding the training set table used to build the
                model.
            - credential_id : int
                The ID of the credential used to read the target table. Defaults to the
                user's default credential.
            - model_name : str
                The name of the model.
            - description : str
                A description of the model.
            - interaction_terms : bool
                Whether to search for interaction terms.
            - box_cox_transformation : bool
                Whether to transform data so that it assumes a normal distribution.
                Valid only with continuous models.
            - model_type_id : int
                The ID of the model's type.
            - primary_key : str
                The unique ID (primary key) of the training dataset.
            - dependent_variable : str
                The dependent variable of the training dataset.
            - dependent_variable_order : List[str]
                The order of dependent variables, especially useful for Ordinal
                Modeling.
            - excluded_columns : List[str]
                A list of columns which will be considered ineligible to be independent
                variables.
            - limiting_sql : str
                A custom SQL WHERE clause used to filter the rows used to build the
                model. (e.g., "id > 105").
            - active_build_id : int
                The ID of the current active build, the build used to score
                predictions.
            - cross_validation_parameters : :class:`civis.Response`
                Cross validation parameter grid for tree methods, e.g. {"n_estimators":
                [100, 200, 500], "learning_rate": [0.01, 0.1], "max_depth": [2, 3]}.
            - number_of_folds : int
                Number of folds for cross validation. Default value is 5.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - parent_id : int
                The ID of the parent job that will trigger this model.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - time_zone : str
                The time zone of this model.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - hidden : bool
                The hidden status of the item.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (date-time)
                The time the model was created.
            - updated_at : str (date-time)
                The time the model was updated.
            - current_build_state : str
                The status of the current model build. One of "succeeded", "failed",
                "queued", or "running,"or "idle", if no build has been attempted.
            - current_build_exception : str
                Exception message, if applicable, of the current model build.
            - builds : List[:class:`civis.Response`]
                A list of trained models available for making predictions.

                - id : int
                    The ID of the model build.
                - name : str
                    The name of the model build.
                - created_at : str
                    The time the model build was created.
                - description : str
                    A description of the model build.
                - root_mean_squared_error : float (float)
                    A key metric for continuous models. Nil for other model types.
                - r_squared_error : float (float)
                    A key metric for continuous models. Nil for other model types.
                - roc_auc : float (float)
                    A key metric for binary, multinomial, and ordinal models. Nil for
                    other model types.
            - predictions : List[:class:`civis.Response`]
                The tables upon which the model will be applied.

                - id : int
                    The ID of the model to which to apply the prediction.
                - table_name : str
                    The qualified name of the table on which to apply the predictive
                    model.
                - primary_key : List[str]
                    The primary key or composite keys of the table being predicted.
                - limiting_sql : str
                    A SQL WHERE clause used to scope the rows to be predicted.
                - output_table : str
                    The qualified name of the table to be created which will contain
                    the model's predictions.
                - schedule : :class:`civis.Response`
                    - scheduled : bool
                        If the item is scheduled.
                    - scheduled_days : List[int]
                        Days of the week, based on numeric value starting at 0 for
                        Sunday. Mutually exclusive with scheduledDaysOfMonth
                    - scheduled_hours : List[int]
                        Hours of the day it is scheduled on.
                    - scheduled_minutes : List[int]
                        Minutes of the day it is scheduled on.
                    - scheduled_runs_per_hour : int
                        Deprecated in favor of scheduled minutes.
                    - scheduled_days_of_month : List[int]
                        Days of the month it is scheduled on, mutually exclusive with
                        scheduledDays.
                - state : str
                    The status of the prediction. One of: "succeeded", "failed",
                    "queued", or "running,"or "idle", if no build has been attempted.
            - last_output_location : str
                The output JSON for the last build.
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def get_builds(
        self,
        id: int,
        build_id: int,
    ) -> _ResponseModelsGetBuilds:
        """Check status of a build

        API URL: ``GET /models/{id}/builds/{build_id}``

        Parameters
        ----------
        id : int
            The ID of the Model job.
        build_id : int
            The ID of the build.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the model build.
            - state : str
                The state of the model build.one of 'queued' 'running' 'succeeded'
                'failed' or 'cancelled'.
            - error : str
                The error, if any, returned by the build.
            - name : str
                The name of the model build.
            - created_at : str
                The time the model build was created.
            - description : str
                A description of the model build.
            - root_mean_squared_error : float (float)
                A key metric for continuous models. Nil for other model types.
            - r_squared_error : float (float)
                A key metric for continuous models. Nil for other model types.
            - roc_auc : float (float)
                A key metric for binary, multinomial, and ordinal models. Nil for other
                model types.
            - transformation_metadata : str
                A string representing the full JSON output of the metadata for
                transformation of column names
            - output : str
                A string representing the JSON output for the specified build. Only
                present when smaller than 10KB in size.
            - output_location : str
                A URL representing the location of the full JSON output for the
                specified build.The URL link will be valid for 5 minutes.
        """
        ...

    def delete_builds(
        self,
        id: int,
        build_id: int,
    ) -> Response:
        """Cancel a build

        API URL: ``DELETE /models/{id}/builds/{build_id}``

        Parameters
        ----------
        id : int
            The ID of the Model job.
        build_id : int
            The ID of the build.

        Returns
        -------
        None
            Response code 202: success
        """
        ...

    def list_builds(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseModelsListBuilds]:
        """List builds for the given Model job

        API URL: ``GET /models/{id}/builds``

        Parameters
        ----------
        id : int
            The ID of the Model job.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the model build.
            - state : str
                The state of the model build.one of 'queued' 'running' 'succeeded'
                'failed' or 'cancelled'.
            - error : str
                The error, if any, returned by the build.
            - name : str
                The name of the model build.
            - created_at : str
                The time the model build was created.
            - description : str
                A description of the model build.
            - root_mean_squared_error : float (float)
                A key metric for continuous models. Nil for other model types.
            - r_squared_error : float (float)
                A key metric for continuous models. Nil for other model types.
            - roc_auc : float (float)
                A key metric for binary, multinomial, and ordinal models. Nil for other
                model types.
            - transformation_metadata : str
                A string representing the full JSON output of the metadata for
                transformation of column names
            - output : str
                A string representing the JSON output for the specified build. Only
                present when smaller than 10KB in size.
            - output_location : str
                A URL representing the location of the full JSON output for the
                specified build.The URL link will be valid for 5 minutes.
        """
        ...

    def list_builds_logs(
        self,
        id: int,
        build_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseModelsListBuildsLogs]:
        """Get the logs for a build

        API URL: ``GET /models/{id}/builds/{build_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the Model job.
        build_id : int
            The ID of the build.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def list_shares(
        self,
        id: int,
    ) -> List[_ResponseModelsListShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /models/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseModelsPutSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /models/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /models/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseModelsPutSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /models/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /models/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseModelsListDependencies]:
        """List dependent objects for this object

        API URL: ``GET /models/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseModelsPutTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /models/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseModelsListProjects]:
        """List the projects a Model belongs to

        API URL: ``GET /models/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the Model.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a Model to a project

        API URL: ``PUT /models/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Model.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a Model from a project

        API URL: ``DELETE /models/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Model.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseModelsPutArchive:
        """Update the archive status of this object

        API URL: ``PUT /models/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the model.
            - table_name : str
                The qualified name of the table containing the training set from which
                to build the model.
            - database_id : int
                The ID of the database holding the training set table used to build the
                model.
            - credential_id : int
                The ID of the credential used to read the target table. Defaults to the
                user's default credential.
            - model_name : str
                The name of the model.
            - description : str
                A description of the model.
            - interaction_terms : bool
                Whether to search for interaction terms.
            - box_cox_transformation : bool
                Whether to transform data so that it assumes a normal distribution.
                Valid only with continuous models.
            - model_type_id : int
                The ID of the model's type.
            - primary_key : str
                The unique ID (primary key) of the training dataset.
            - dependent_variable : str
                The dependent variable of the training dataset.
            - dependent_variable_order : List[str]
                The order of dependent variables, especially useful for Ordinal
                Modeling.
            - excluded_columns : List[str]
                A list of columns which will be considered ineligible to be independent
                variables.
            - limiting_sql : str
                A custom SQL WHERE clause used to filter the rows used to build the
                model. (e.g., "id > 105").
            - active_build_id : int
                The ID of the current active build, the build used to score
                predictions.
            - cross_validation_parameters : :class:`civis.Response`
                Cross validation parameter grid for tree methods, e.g. {"n_estimators":
                [100, 200, 500], "learning_rate": [0.01, 0.1], "max_depth": [2, 3]}.
            - number_of_folds : int
                Number of folds for cross validation. Default value is 5.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - parent_id : int
                The ID of the parent job that will trigger this model.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - time_zone : str
                The time zone of this model.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - hidden : bool
                The hidden status of the item.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (date-time)
                The time the model was created.
            - updated_at : str (date-time)
                The time the model was updated.
            - current_build_state : str
                The status of the current model build. One of "succeeded", "failed",
                "queued", or "running,"or "idle", if no build has been attempted.
            - current_build_exception : str
                Exception message, if applicable, of the current model build.
            - builds : List[:class:`civis.Response`]
                A list of trained models available for making predictions.

                - id : int
                    The ID of the model build.
                - name : str
                    The name of the model build.
                - created_at : str
                    The time the model build was created.
                - description : str
                    A description of the model build.
                - root_mean_squared_error : float (float)
                    A key metric for continuous models. Nil for other model types.
                - r_squared_error : float (float)
                    A key metric for continuous models. Nil for other model types.
                - roc_auc : float (float)
                    A key metric for binary, multinomial, and ordinal models. Nil for
                    other model types.
            - predictions : List[:class:`civis.Response`]
                The tables upon which the model will be applied.

                - id : int
                    The ID of the model to which to apply the prediction.
                - table_name : str
                    The qualified name of the table on which to apply the predictive
                    model.
                - primary_key : List[str]
                    The primary key or composite keys of the table being predicted.
                - limiting_sql : str
                    A SQL WHERE clause used to scope the rows to be predicted.
                - output_table : str
                    The qualified name of the table to be created which will contain
                    the model's predictions.
                - schedule : :class:`civis.Response`
                    - scheduled : bool
                        If the item is scheduled.
                    - scheduled_days : List[int]
                        Days of the week, based on numeric value starting at 0 for
                        Sunday. Mutually exclusive with scheduledDaysOfMonth
                    - scheduled_hours : List[int]
                        Hours of the day it is scheduled on.
                    - scheduled_minutes : List[int]
                        Minutes of the day it is scheduled on.
                    - scheduled_runs_per_hour : int
                        Deprecated in favor of scheduled minutes.
                    - scheduled_days_of_month : List[int]
                        Days of the month it is scheduled on, mutually exclusive with
                        scheduledDays.
                - state : str
                    The status of the prediction. One of: "succeeded", "failed",
                    "queued", or "running,"or "idle", if no build has been attempted.
            - last_output_location : str
                The output JSON for the last build.
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def list_schedules(
        self,
        id: int,
    ) -> List[_ResponseModelsListSchedules]:
        """Show the model build schedule

        API URL: ``GET /models/{id}/schedules``

        Parameters
        ----------
        id : int
            The ID of the model associated with this schedule.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the model associated with this schedule.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
        """
        ...

class _Notebooks:
    def list(
        self,
        *,
        hidden: bool | None = ...,
        archived: str | None = ...,
        author: str | None = ...,
        status: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseNotebooksList]:
        """List Notebooks

        API URL: ``GET /notebooks``

        Parameters
        ----------
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.
        archived : str, optional
            The archival status of the requested item(s).
        author : str, optional
            If specified, return items from any of these authors. It accepts a comma-
            separated list of user IDs.
        status : str, optional
            If specified, returns notebooks with one of these statuses. It accepts a
            comma-separated list, possible values are 'running', 'pending', 'idle'.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to updated_at. Must be
            one of: updated_at, name, created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID for this notebook.
            - name : str
                The name of this notebook.
            - language : str
                The kernel language of this notebook ("python3" or "r"). Defaults to
                "python3".
            - description : str
                The description of this notebook.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
            - updated_at : str (time)
            - most_recent_deployment : :class:`civis.Response`
                - deployment_id : int
                    The ID for this deployment.
                - user_id : int
                    The ID of the owner.
                - host : str
                    Domain of the deployment.
                - name : str
                    Name of the deployment.
                - docker_image_name : str
                    The name of the docker image to pull from DockerHub.
                - docker_image_tag : str
                    The tag of the docker image to pull from DockerHub (default:
                    latest).
                - instance_type : str
                    The EC2 instance type requested for the deployment.
                - memory : int
                    The memory allocated to the deployment, in MB.
                - cpu : int
                    The cpu allocated to the deployment, in millicores.
                - state : str
                    The state of the deployment.
                - state_message : str
                    A detailed description of the state.
                - max_memory_usage : float (float)
                    If the deployment has finished, the maximum amount of memory used
                    during the deployment, in MB.
                - max_cpu_usage : float (float)
                    If the deployment has finished, the maximum amount of cpu used
                    during the deployment, in millicores.
                - created_at : str (time)
                - updated_at : str (time)
                - notebook_id : int
                    The ID of the owning Notebook
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def post(
        self,
        *,
        name: str | None = ...,
        language: str | None = ...,
        description: str | None = ...,
        file_id: str | None = ...,
        requirements_file_id: str | None = ...,
        requirements: str | None = ...,
        docker_image_name: str | None = ...,
        docker_image_tag: str | None = ...,
        instance_type: str | None = ...,
        memory: int | None = ...,
        cpu: int | None = ...,
        credentials: List[int] | None = ...,
        environment_variables: dict | None = ...,
        idle_timeout: int | None = ...,
        partition_label: str | None = ...,
        git_repo_url: str | None = ...,
        git_ref: str | None = ...,
        git_path: str | None = ...,
        hidden: bool | None = ...,
    ) -> _ResponseNotebooksPost:
        """Create a Notebook

        API URL: ``POST /notebooks``

        Parameters
        ----------
        name : str, optional
            The name of this notebook.
        language : str, optional
            The kernel language of this notebook ("python3" or "r"). Defaults to
            "python3".
        description : str, optional
            The description of this notebook.
        file_id : str, optional
            The file ID for the S3 file containing the .ipynb file.
        requirements_file_id : str, optional
            The file ID for the S3 file containing the requirements.txt file.
        requirements : str, optional
            The requirements txt file.
        docker_image_name : str, optional
            The name of the docker image to pull from DockerHub.
        docker_image_tag : str, optional
            The tag of the docker image to pull from DockerHub (default: latest).
        instance_type : str, optional
            The EC2 instance type to deploy to.
        memory : int, optional
            The amount of memory allocated to the notebook.
        cpu : int, optional
            The amount of cpu allocated to the the notebook.
        credentials : List[int], optional
            A list of credential IDs to pass to the notebook.
        environment_variables : dict, optional
            Environment variables to be passed into the Notebook.
        idle_timeout : int, optional
            How long the notebook will stay alive without any kernel activity.
        partition_label : str, optional
            The partition label used to run this object.
        git_repo_url : str, optional
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        git_ref : str, optional
            The git reference if git repo is specified
        git_path : str, optional
            The path to the .ipynb file in the git repo that will be started up on
            notebook launch
        hidden : bool, optional
            The hidden status of the item.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this notebook.
            - name : str
                The name of this notebook.
            - language : str
                The kernel language of this notebook ("python3" or "r"). Defaults to
                "python3".
            - description : str
                The description of this notebook.
            - notebook_url : str
                Time-limited URL to get the .ipynb file for this notebook.
            - notebook_preview_url : str
                Time-limited URL to get the .htm preview file for this notebook.
            - requirements_url : str
                Time-limited URL to get the requirements.txt file for this notebook.
            - file_id : str
                The file ID for the S3 file containing the .ipynb file.
            - requirements_file_id : str
                The file ID for the S3 file containing the requirements.txt file.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - instance_type : str
                The EC2 instance type to deploy to.
            - memory : int
                The amount of memory allocated to the notebook.
            - cpu : int
                The amount of cpu allocated to the the notebook.
            - created_at : str (time)
            - updated_at : str (time)
            - most_recent_deployment : :class:`civis.Response`
                - deployment_id : int
                    The ID for this deployment.
                - user_id : int
                    The ID of the owner.
                - host : str
                    Domain of the deployment.
                - name : str
                    Name of the deployment.
                - docker_image_name : str
                    The name of the docker image to pull from DockerHub.
                - docker_image_tag : str
                    The tag of the docker image to pull from DockerHub (default:
                    latest).
                - display_url : str
                    A signed URL for viewing the deployed item.
                - instance_type : str
                    The EC2 instance type requested for the deployment.
                - memory : int
                    The memory allocated to the deployment, in MB.
                - cpu : int
                    The cpu allocated to the deployment, in millicores.
                - state : str
                    The state of the deployment.
                - state_message : str
                    A detailed description of the state.
                - max_memory_usage : float (float)
                    If the deployment has finished, the maximum amount of memory used
                    during the deployment, in MB.
                - max_cpu_usage : float (float)
                    If the deployment has finished, the maximum amount of cpu used
                    during the deployment, in millicores.
                - created_at : str (time)
                - updated_at : str (time)
                - notebook_id : int
                    The ID of the owning Notebook
            - credentials : List[int]
                A list of credential IDs to pass to the notebook.
            - environment_variables : :class:`civis.Response`
                Environment variables to be passed into the Notebook.
            - idle_timeout : int
                How long the notebook will stay alive without any kernel activity.
            - partition_label : str
                The partition label used to run this object.
            - git_repo_id : int
                The ID of the git repository.
            - git_repo_url : str
                The URL of the git repository (e.g.,
                https://github.com/organization/repo_name.git).
            - git_ref : str
                The git reference if git repo is specified
            - git_path : str
                The path to the .ipynb file in the git repo that will be started up on
                notebook launch
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseNotebooksGet:
        """Get a Notebook

        API URL: ``GET /notebooks/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this notebook.
            - name : str
                The name of this notebook.
            - language : str
                The kernel language of this notebook ("python3" or "r"). Defaults to
                "python3".
            - description : str
                The description of this notebook.
            - notebook_url : str
                Time-limited URL to get the .ipynb file for this notebook.
            - notebook_preview_url : str
                Time-limited URL to get the .htm preview file for this notebook.
            - requirements_url : str
                Time-limited URL to get the requirements.txt file for this notebook.
            - file_id : str
                The file ID for the S3 file containing the .ipynb file.
            - requirements_file_id : str
                The file ID for the S3 file containing the requirements.txt file.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - instance_type : str
                The EC2 instance type to deploy to.
            - memory : int
                The amount of memory allocated to the notebook.
            - cpu : int
                The amount of cpu allocated to the the notebook.
            - created_at : str (time)
            - updated_at : str (time)
            - most_recent_deployment : :class:`civis.Response`
                - deployment_id : int
                    The ID for this deployment.
                - user_id : int
                    The ID of the owner.
                - host : str
                    Domain of the deployment.
                - name : str
                    Name of the deployment.
                - docker_image_name : str
                    The name of the docker image to pull from DockerHub.
                - docker_image_tag : str
                    The tag of the docker image to pull from DockerHub (default:
                    latest).
                - display_url : str
                    A signed URL for viewing the deployed item.
                - instance_type : str
                    The EC2 instance type requested for the deployment.
                - memory : int
                    The memory allocated to the deployment, in MB.
                - cpu : int
                    The cpu allocated to the deployment, in millicores.
                - state : str
                    The state of the deployment.
                - state_message : str
                    A detailed description of the state.
                - max_memory_usage : float (float)
                    If the deployment has finished, the maximum amount of memory used
                    during the deployment, in MB.
                - max_cpu_usage : float (float)
                    If the deployment has finished, the maximum amount of cpu used
                    during the deployment, in millicores.
                - created_at : str (time)
                - updated_at : str (time)
                - notebook_id : int
                    The ID of the owning Notebook
            - credentials : List[int]
                A list of credential IDs to pass to the notebook.
            - environment_variables : :class:`civis.Response`
                Environment variables to be passed into the Notebook.
            - idle_timeout : int
                How long the notebook will stay alive without any kernel activity.
            - partition_label : str
                The partition label used to run this object.
            - git_repo_id : int
                The ID of the git repository.
            - git_repo_url : str
                The URL of the git repository (e.g.,
                https://github.com/organization/repo_name.git).
            - git_ref : str
                The git reference if git repo is specified
            - git_path : str
                The path to the .ipynb file in the git repo that will be started up on
                notebook launch
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def put(
        self,
        id: int,
        *,
        name: str | None = ...,
        language: str | None = ...,
        description: str | None = ...,
        file_id: str | None = ...,
        requirements_file_id: str | None = ...,
        requirements: str | None = ...,
        docker_image_name: str | None = ...,
        docker_image_tag: str | None = ...,
        instance_type: str | None = ...,
        memory: int | None = ...,
        cpu: int | None = ...,
        credentials: List[int] | None = ...,
        environment_variables: dict | None = ...,
        idle_timeout: int | None = ...,
        partition_label: str | None = ...,
        git_repo_url: str | None = ...,
        git_ref: str | None = ...,
        git_path: str | None = ...,
    ) -> _ResponseNotebooksPut:
        """Replace all attributes of this Notebook

        API URL: ``PUT /notebooks/{id}``

        Parameters
        ----------
        id : int
            The ID for this notebook.
        name : str, optional
            The name of this notebook.
        language : str, optional
            The kernel language of this notebook ("python3" or "r"). Defaults to
            "python3".
        description : str, optional
            The description of this notebook.
        file_id : str, optional
            The file ID for the S3 file containing the .ipynb file.
        requirements_file_id : str, optional
            The file ID for the S3 file containing the requirements.txt file.
        requirements : str, optional
            The requirements txt file.
        docker_image_name : str, optional
            The name of the docker image to pull from DockerHub.
        docker_image_tag : str, optional
            The tag of the docker image to pull from DockerHub (default: latest).
        instance_type : str, optional
            The EC2 instance type to deploy to.
        memory : int, optional
            The amount of memory allocated to the notebook.
        cpu : int, optional
            The amount of cpu allocated to the the notebook.
        credentials : List[int], optional
            A list of credential IDs to pass to the notebook.
        environment_variables : dict, optional
            Environment variables to be passed into the Notebook.
        idle_timeout : int, optional
            How long the notebook will stay alive without any kernel activity.
        partition_label : str, optional
            The partition label used to run this object.
        git_repo_url : str, optional
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        git_ref : str, optional
            The git reference if git repo is specified
        git_path : str, optional
            The path to the .ipynb file in the git repo that will be started up on
            notebook launch

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this notebook.
            - name : str
                The name of this notebook.
            - language : str
                The kernel language of this notebook ("python3" or "r"). Defaults to
                "python3".
            - description : str
                The description of this notebook.
            - notebook_url : str
                Time-limited URL to get the .ipynb file for this notebook.
            - notebook_preview_url : str
                Time-limited URL to get the .htm preview file for this notebook.
            - requirements_url : str
                Time-limited URL to get the requirements.txt file for this notebook.
            - file_id : str
                The file ID for the S3 file containing the .ipynb file.
            - requirements_file_id : str
                The file ID for the S3 file containing the requirements.txt file.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - instance_type : str
                The EC2 instance type to deploy to.
            - memory : int
                The amount of memory allocated to the notebook.
            - cpu : int
                The amount of cpu allocated to the the notebook.
            - created_at : str (time)
            - updated_at : str (time)
            - most_recent_deployment : :class:`civis.Response`
                - deployment_id : int
                    The ID for this deployment.
                - user_id : int
                    The ID of the owner.
                - host : str
                    Domain of the deployment.
                - name : str
                    Name of the deployment.
                - docker_image_name : str
                    The name of the docker image to pull from DockerHub.
                - docker_image_tag : str
                    The tag of the docker image to pull from DockerHub (default:
                    latest).
                - display_url : str
                    A signed URL for viewing the deployed item.
                - instance_type : str
                    The EC2 instance type requested for the deployment.
                - memory : int
                    The memory allocated to the deployment, in MB.
                - cpu : int
                    The cpu allocated to the deployment, in millicores.
                - state : str
                    The state of the deployment.
                - state_message : str
                    A detailed description of the state.
                - max_memory_usage : float (float)
                    If the deployment has finished, the maximum amount of memory used
                    during the deployment, in MB.
                - max_cpu_usage : float (float)
                    If the deployment has finished, the maximum amount of cpu used
                    during the deployment, in millicores.
                - created_at : str (time)
                - updated_at : str (time)
                - notebook_id : int
                    The ID of the owning Notebook
            - credentials : List[int]
                A list of credential IDs to pass to the notebook.
            - environment_variables : :class:`civis.Response`
                Environment variables to be passed into the Notebook.
            - idle_timeout : int
                How long the notebook will stay alive without any kernel activity.
            - partition_label : str
                The partition label used to run this object.
            - git_repo_id : int
                The ID of the git repository.
            - git_repo_url : str
                The URL of the git repository (e.g.,
                https://github.com/organization/repo_name.git).
            - git_ref : str
                The git reference if git repo is specified
            - git_path : str
                The path to the .ipynb file in the git repo that will be started up on
                notebook launch
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def patch(
        self,
        id: int,
        *,
        name: str | None = ...,
        language: str | None = ...,
        description: str | None = ...,
        file_id: str | None = ...,
        requirements_file_id: str | None = ...,
        requirements: str | None = ...,
        docker_image_name: str | None = ...,
        docker_image_tag: str | None = ...,
        instance_type: str | None = ...,
        memory: int | None = ...,
        cpu: int | None = ...,
        credentials: List[int] | None = ...,
        environment_variables: dict | None = ...,
        idle_timeout: int | None = ...,
        partition_label: str | None = ...,
        git_repo_url: str | None = ...,
        git_ref: str | None = ...,
        git_path: str | None = ...,
    ) -> _ResponseNotebooksPatch:
        """Update some attributes of this Notebook

        API URL: ``PATCH /notebooks/{id}``

        Parameters
        ----------
        id : int
            The ID for this notebook.
        name : str, optional
            The name of this notebook.
        language : str, optional
            The kernel language of this notebook ("python3" or "r"). Defaults to
            "python3".
        description : str, optional
            The description of this notebook.
        file_id : str, optional
            The file ID for the S3 file containing the .ipynb file.
        requirements_file_id : str, optional
            The file ID for the S3 file containing the requirements.txt file.
        requirements : str, optional
            The requirements txt file.
        docker_image_name : str, optional
            The name of the docker image to pull from DockerHub.
        docker_image_tag : str, optional
            The tag of the docker image to pull from DockerHub (default: latest).
        instance_type : str, optional
            The EC2 instance type to deploy to.
        memory : int, optional
            The amount of memory allocated to the notebook.
        cpu : int, optional
            The amount of cpu allocated to the the notebook.
        credentials : List[int], optional
            A list of credential IDs to pass to the notebook.
        environment_variables : dict, optional
            Environment variables to be passed into the Notebook.
        idle_timeout : int, optional
            How long the notebook will stay alive without any kernel activity.
        partition_label : str, optional
            The partition label used to run this object.
        git_repo_url : str, optional
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        git_ref : str, optional
            The git reference if git repo is specified
        git_path : str, optional
            The path to the .ipynb file in the git repo that will be started up on
            notebook launch

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this notebook.
            - name : str
                The name of this notebook.
            - language : str
                The kernel language of this notebook ("python3" or "r"). Defaults to
                "python3".
            - description : str
                The description of this notebook.
            - notebook_url : str
                Time-limited URL to get the .ipynb file for this notebook.
            - notebook_preview_url : str
                Time-limited URL to get the .htm preview file for this notebook.
            - requirements_url : str
                Time-limited URL to get the requirements.txt file for this notebook.
            - file_id : str
                The file ID for the S3 file containing the .ipynb file.
            - requirements_file_id : str
                The file ID for the S3 file containing the requirements.txt file.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - instance_type : str
                The EC2 instance type to deploy to.
            - memory : int
                The amount of memory allocated to the notebook.
            - cpu : int
                The amount of cpu allocated to the the notebook.
            - created_at : str (time)
            - updated_at : str (time)
            - most_recent_deployment : :class:`civis.Response`
                - deployment_id : int
                    The ID for this deployment.
                - user_id : int
                    The ID of the owner.
                - host : str
                    Domain of the deployment.
                - name : str
                    Name of the deployment.
                - docker_image_name : str
                    The name of the docker image to pull from DockerHub.
                - docker_image_tag : str
                    The tag of the docker image to pull from DockerHub (default:
                    latest).
                - display_url : str
                    A signed URL for viewing the deployed item.
                - instance_type : str
                    The EC2 instance type requested for the deployment.
                - memory : int
                    The memory allocated to the deployment, in MB.
                - cpu : int
                    The cpu allocated to the deployment, in millicores.
                - state : str
                    The state of the deployment.
                - state_message : str
                    A detailed description of the state.
                - max_memory_usage : float (float)
                    If the deployment has finished, the maximum amount of memory used
                    during the deployment, in MB.
                - max_cpu_usage : float (float)
                    If the deployment has finished, the maximum amount of cpu used
                    during the deployment, in millicores.
                - created_at : str (time)
                - updated_at : str (time)
                - notebook_id : int
                    The ID of the owning Notebook
            - credentials : List[int]
                A list of credential IDs to pass to the notebook.
            - environment_variables : :class:`civis.Response`
                Environment variables to be passed into the Notebook.
            - idle_timeout : int
                How long the notebook will stay alive without any kernel activity.
            - partition_label : str
                The partition label used to run this object.
            - git_repo_id : int
                The ID of the git repository.
            - git_repo_url : str
                The URL of the git repository (e.g.,
                https://github.com/organization/repo_name.git).
            - git_ref : str
                The git reference if git repo is specified
            - git_path : str
                The path to the .ipynb file in the git repo that will be started up on
                notebook launch
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def list_update_links(
        self,
        id: int,
    ) -> List[_ResponseNotebooksListUpdateLinks]:
        """Get URLs to update notebook

        API URL: ``GET /notebooks/{id}/update-links``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.ListResponse`
            - update_url : str
                Time-limited URL to PUT new contents of the .ipynb file for this
                notebook.
            - update_preview_url : str
                Time-limited URL to PUT new contents of the .htm preview file for this
                notebook.
        """
        ...

    def post_clone(
        self,
        id: int,
    ) -> _ResponseNotebooksPostClone:
        """Clone this Notebook

        API URL: ``POST /notebooks/{id}/clone``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this notebook.
            - name : str
                The name of this notebook.
            - language : str
                The kernel language of this notebook ("python3" or "r"). Defaults to
                "python3".
            - description : str
                The description of this notebook.
            - notebook_url : str
                Time-limited URL to get the .ipynb file for this notebook.
            - notebook_preview_url : str
                Time-limited URL to get the .htm preview file for this notebook.
            - requirements_url : str
                Time-limited URL to get the requirements.txt file for this notebook.
            - file_id : str
                The file ID for the S3 file containing the .ipynb file.
            - requirements_file_id : str
                The file ID for the S3 file containing the requirements.txt file.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - instance_type : str
                The EC2 instance type to deploy to.
            - memory : int
                The amount of memory allocated to the notebook.
            - cpu : int
                The amount of cpu allocated to the the notebook.
            - created_at : str (time)
            - updated_at : str (time)
            - most_recent_deployment : :class:`civis.Response`
                - deployment_id : int
                    The ID for this deployment.
                - user_id : int
                    The ID of the owner.
                - host : str
                    Domain of the deployment.
                - name : str
                    Name of the deployment.
                - docker_image_name : str
                    The name of the docker image to pull from DockerHub.
                - docker_image_tag : str
                    The tag of the docker image to pull from DockerHub (default:
                    latest).
                - display_url : str
                    A signed URL for viewing the deployed item.
                - instance_type : str
                    The EC2 instance type requested for the deployment.
                - memory : int
                    The memory allocated to the deployment, in MB.
                - cpu : int
                    The cpu allocated to the deployment, in millicores.
                - state : str
                    The state of the deployment.
                - state_message : str
                    A detailed description of the state.
                - max_memory_usage : float (float)
                    If the deployment has finished, the maximum amount of memory used
                    during the deployment, in MB.
                - max_cpu_usage : float (float)
                    If the deployment has finished, the maximum amount of cpu used
                    during the deployment, in millicores.
                - created_at : str (time)
                - updated_at : str (time)
                - notebook_id : int
                    The ID of the owning Notebook
            - credentials : List[int]
                A list of credential IDs to pass to the notebook.
            - environment_variables : :class:`civis.Response`
                Environment variables to be passed into the Notebook.
            - idle_timeout : int
                How long the notebook will stay alive without any kernel activity.
            - partition_label : str
                The partition label used to run this object.
            - git_repo_id : int
                The ID of the git repository.
            - git_repo_url : str
                The URL of the git repository (e.g.,
                https://github.com/organization/repo_name.git).
            - git_ref : str
                The git reference if git repo is specified
            - git_path : str
                The path to the .ipynb file in the git repo that will be started up on
                notebook launch
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def list_shares(
        self,
        id: int,
    ) -> List[_ResponseNotebooksListShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /notebooks/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseNotebooksPutSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /notebooks/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /notebooks/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseNotebooksPutSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /notebooks/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /notebooks/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseNotebooksListDependencies]:
        """List dependent objects for this object

        API URL: ``GET /notebooks/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseNotebooksPutTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /notebooks/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def put_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseNotebooksPutArchive:
        """Update the archive status of this object

        API URL: ``PUT /notebooks/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this notebook.
            - name : str
                The name of this notebook.
            - language : str
                The kernel language of this notebook ("python3" or "r"). Defaults to
                "python3".
            - description : str
                The description of this notebook.
            - notebook_url : str
                Time-limited URL to get the .ipynb file for this notebook.
            - notebook_preview_url : str
                Time-limited URL to get the .htm preview file for this notebook.
            - requirements_url : str
                Time-limited URL to get the requirements.txt file for this notebook.
            - file_id : str
                The file ID for the S3 file containing the .ipynb file.
            - requirements_file_id : str
                The file ID for the S3 file containing the requirements.txt file.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - instance_type : str
                The EC2 instance type to deploy to.
            - memory : int
                The amount of memory allocated to the notebook.
            - cpu : int
                The amount of cpu allocated to the the notebook.
            - created_at : str (time)
            - updated_at : str (time)
            - most_recent_deployment : :class:`civis.Response`
                - deployment_id : int
                    The ID for this deployment.
                - user_id : int
                    The ID of the owner.
                - host : str
                    Domain of the deployment.
                - name : str
                    Name of the deployment.
                - docker_image_name : str
                    The name of the docker image to pull from DockerHub.
                - docker_image_tag : str
                    The tag of the docker image to pull from DockerHub (default:
                    latest).
                - display_url : str
                    A signed URL for viewing the deployed item.
                - instance_type : str
                    The EC2 instance type requested for the deployment.
                - memory : int
                    The memory allocated to the deployment, in MB.
                - cpu : int
                    The cpu allocated to the deployment, in millicores.
                - state : str
                    The state of the deployment.
                - state_message : str
                    A detailed description of the state.
                - max_memory_usage : float (float)
                    If the deployment has finished, the maximum amount of memory used
                    during the deployment, in MB.
                - max_cpu_usage : float (float)
                    If the deployment has finished, the maximum amount of cpu used
                    during the deployment, in millicores.
                - created_at : str (time)
                - updated_at : str (time)
                - notebook_id : int
                    The ID of the owning Notebook
            - credentials : List[int]
                A list of credential IDs to pass to the notebook.
            - environment_variables : :class:`civis.Response`
                Environment variables to be passed into the Notebook.
            - idle_timeout : int
                How long the notebook will stay alive without any kernel activity.
            - partition_label : str
                The partition label used to run this object.
            - git_repo_id : int
                The ID of the git repository.
            - git_repo_url : str
                The URL of the git repository (e.g.,
                https://github.com/organization/repo_name.git).
            - git_ref : str
                The git reference if git repo is specified
            - git_path : str
                The path to the .ipynb file in the git repo that will be started up on
                notebook launch
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def list_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseNotebooksListProjects]:
        """List the projects a Notebook belongs to

        API URL: ``GET /notebooks/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the Notebook.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a Notebook to a project

        API URL: ``PUT /notebooks/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Notebook.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a Notebook from a project

        API URL: ``DELETE /notebooks/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Notebook.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_deployments(
        self,
        notebook_id: int,
        *,
        deployment_id: int | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseNotebooksListDeployments]:
        """List deployments for a Notebook

        API URL: ``GET /notebooks/{notebook_id}/deployments``

        Parameters
        ----------
        notebook_id : int
            The ID of the owning Notebook
        deployment_id : int, optional
            The ID for this deployment
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to created_at. Must be
            one of: created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - deployment_id : int
                The ID for this deployment.
            - user_id : int
                The ID of the owner.
            - host : str
                Domain of the deployment.
            - name : str
                Name of the deployment.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - instance_type : str
                The EC2 instance type requested for the deployment.
            - memory : int
                The memory allocated to the deployment, in MB.
            - cpu : int
                The cpu allocated to the deployment, in millicores.
            - state : str
                The state of the deployment.
            - state_message : str
                A detailed description of the state.
            - max_memory_usage : float (float)
                If the deployment has finished, the maximum amount of memory used
                during the deployment, in MB.
            - max_cpu_usage : float (float)
                If the deployment has finished, the maximum amount of cpu used during
                the deployment, in millicores.
            - created_at : str (time)
            - updated_at : str (time)
            - notebook_id : int
                The ID of the owning Notebook
        """
        ...

    def post_deployments(
        self,
        notebook_id: int,
        *,
        deployment_id: int | None = ...,
    ) -> _ResponseNotebooksPostDeployments:
        """Deploy a Notebook

        API URL: ``POST /notebooks/{notebook_id}/deployments``

        Parameters
        ----------
        notebook_id : int
            The ID of the owning Notebook
        deployment_id : int, optional
            The ID for this deployment

        Returns
        -------
        :class:`civis.Response`
            - deployment_id : int
                The ID for this deployment.
            - user_id : int
                The ID of the owner.
            - host : str
                Domain of the deployment.
            - name : str
                Name of the deployment.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - display_url : str
                A signed URL for viewing the deployed item.
            - instance_type : str
                The EC2 instance type requested for the deployment.
            - memory : int
                The memory allocated to the deployment, in MB.
            - cpu : int
                The cpu allocated to the deployment, in millicores.
            - state : str
                The state of the deployment.
            - state_message : str
                A detailed description of the state.
            - max_memory_usage : float (float)
                If the deployment has finished, the maximum amount of memory used
                during the deployment, in MB.
            - max_cpu_usage : float (float)
                If the deployment has finished, the maximum amount of cpu used during
                the deployment, in millicores.
            - created_at : str (time)
            - updated_at : str (time)
            - notebook_id : int
                The ID of the owning Notebook
        """
        ...

    def get_deployments(
        self,
        notebook_id: int,
        deployment_id: int,
    ) -> _ResponseNotebooksGetDeployments:
        """Get details about a Notebook deployment

        API URL: ``GET /notebooks/{notebook_id}/deployments/{deployment_id}``

        Parameters
        ----------
        notebook_id : int
            The ID of the owning Notebook
        deployment_id : int
            The ID for this deployment

        Returns
        -------
        :class:`civis.Response`
            - deployment_id : int
                The ID for this deployment.
            - user_id : int
                The ID of the owner.
            - host : str
                Domain of the deployment.
            - name : str
                Name of the deployment.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - display_url : str
                A signed URL for viewing the deployed item.
            - instance_type : str
                The EC2 instance type requested for the deployment.
            - memory : int
                The memory allocated to the deployment, in MB.
            - cpu : int
                The cpu allocated to the deployment, in millicores.
            - state : str
                The state of the deployment.
            - state_message : str
                A detailed description of the state.
            - max_memory_usage : float (float)
                If the deployment has finished, the maximum amount of memory used
                during the deployment, in MB.
            - max_cpu_usage : float (float)
                If the deployment has finished, the maximum amount of cpu used during
                the deployment, in millicores.
            - created_at : str (time)
            - updated_at : str (time)
            - notebook_id : int
                The ID of the owning Notebook
        """
        ...

    def delete_deployments(
        self,
        notebook_id: int,
        deployment_id: int,
    ) -> Response:
        """Delete a Notebook deployment

        API URL: ``DELETE /notebooks/{notebook_id}/deployments/{deployment_id}``

        Parameters
        ----------
        notebook_id : int
            The ID of the owning Notebook
        deployment_id : int
            The ID for this deployment

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_deployments_logs(
        self,
        id: int,
        deployment_id: int,
        *,
        start_at: str | None = ...,
        end_at: str | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseNotebooksListDeploymentsLogs]:
        """Get the logs for a Notebook deployment

        API URL: ``GET /notebooks/{id}/deployments/{deployment_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the owning Notebook.
        deployment_id : int
            The ID for this deployment.
        start_at : str, optional
            Log entries with a lower timestamp will be omitted.
        end_at : str, optional
            Log entries with a higher timestamp will be omitted.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - message : str
                The log message.
            - stream : str
                The stream of the log. One of "stdout", "stderr".
            - created_at : str (date-time)
                The time the log was created.
            - source : str
                The source of the log. One of "system", "user".
        """
        ...

    def list_git(
        self,
        id: int,
    ) -> List[_ResponseNotebooksListGit]:
        """Get the git metadata attached to an item

        API URL: ``GET /notebooks/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.ListResponse`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def put_git(
        self,
        id: int,
        *,
        git_ref: str | None = ...,
        git_branch: str | None = ...,
        git_path: str | None = ...,
        git_repo_url: str | None = ...,
        git_ref_type: str | None = ...,
        pull_from_git: bool | None = ...,
    ) -> _ResponseNotebooksPutGit:
        """Attach an item to a file in a git repo

        API URL: ``PUT /notebooks/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.
        git_ref : str, optional
            A git reference specifying an unambiguous version of the file. Can be a
            branch name, or the full or shortened SHA of a commit.
        git_branch : str, optional
            The git branch that the file is on.
        git_path : str, optional
            The path of the file in the repository.
        git_repo_url : str, optional
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        git_ref_type : str, optional
            Specifies if the file is versioned by branch or tag.
        pull_from_git : bool, optional
            Automatically pull latest commit from git. Only works for scripts.

        Returns
        -------
        :class:`civis.Response`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def patch_git(
        self,
        id: int,
        *,
        git_ref: str | None = ...,
        git_branch: str | None = ...,
        git_path: str | None = ...,
        git_repo_url: str | None = ...,
        git_ref_type: str | None = ...,
        pull_from_git: bool | None = ...,
    ) -> _ResponseNotebooksPatchGit:
        """Update an attached git file

        API URL: ``PATCH /notebooks/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.
        git_ref : str, optional
            A git reference specifying an unambiguous version of the file. Can be a
            branch name, or the full or shortened SHA of a commit.
        git_branch : str, optional
            The git branch that the file is on.
        git_path : str, optional
            The path of the file in the repository.
        git_repo_url : str, optional
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        git_ref_type : str, optional
            Specifies if the file is versioned by branch or tag.
        pull_from_git : bool, optional
            Automatically pull latest commit from git. Only works for scripts.

        Returns
        -------
        :class:`civis.Response`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def list_git_commits(
        self,
        id: int,
    ) -> List[_ResponseNotebooksListGitCommits]:
        """Get the git commits for an item on the current branch

        API URL: ``GET /notebooks/{id}/git/commits``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.ListResponse`
            - commit_hash : str
                The SHA of the commit.
            - author_name : str
                The name of the commit's author.
            - date : str (time)
                The commit's timestamp.
            - message : str
                The commit message.
        """
        ...

    def post_git_commits(
        self,
        id: int,
        content: str,
        message: str,
        file_hash: str,
    ) -> _ResponseNotebooksPostGitCommits:
        """Commit and push a new version of the file

        API URL: ``POST /notebooks/{id}/git/commits``

        Parameters
        ----------
        id : int
            The ID of the item.
        content : str
            The contents to commit to the file.
        message : str
            A commit message describing the changes being made.
        file_hash : str
            The full SHA of the file being replaced.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def get_git_commits(
        self,
        id: int,
        commit_hash: str,
    ) -> _ResponseNotebooksGetGitCommits:
        """Get file contents at git ref

        API URL: ``GET /notebooks/{id}/git/commits/{commit_hash}``

        Parameters
        ----------
        id : int
            The ID of the item.
        commit_hash : str
            The SHA (full or shortened) of the desired git commit.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

class _Notifications:
    def list(
        self,
        *,
        last_event_id: str | None = ...,
        r: str | None = ...,
        mock: str | None = ...,
    ) -> List[Response]:
        """Receive a stream of notifications as they come in

        API URL: ``GET /notifications``

        Parameters
        ----------
        last_event_id : str, optional
            allows browser to keep track of last event fired
        r : str, optional
            specifies retry/reconnect timeout
        mock : str, optional
            used for testing

        Returns
        -------
        None
            Response code 200: success
        """
        ...

class _Ontology:
    def list(
        self,
        *,
        subset: str | None = ...,
    ) -> List[_ResponseOntologyList]:
        """List the ontology of column names Civis uses

        API URL: ``GET /ontology``

        Parameters
        ----------
        subset : str, optional
            A subset of fields to return.

        Returns
        -------
        :class:`civis.ListResponse`
            - key : str
            - title : str
            - desc : str
                A description of this field.
            - aliases : List[str]
        """
        ...

class _Organizations:
    def list_favorites(
        self,
        *,
        object_id: int | None = ...,
        object_type: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseOrganizationsListFavorites]:
        """List Favorites

        API URL: ``GET /organizations/favorites``

        Parameters
        ----------
        object_id : int, optional
            The id of the object. If specified as a query parameter, must also specify
            object_type parameter.
        object_type : str, optional
            The type of the object that is favorited. Valid options: Container Script,
            Identity Resolution, Import, Python Script, R Script, dbt Script,
            JavaScript Script, SQL Script, Template Script, Project, Workflow, Tableau
            Report, Service Report, HTML Report, SQL Report
        limit : int, optional
            Number of results to return. Defaults to 50. Maximum allowed is 1000.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to created_at. Must be
            one of: created_at, object_type, object_id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The id of the favorite.
            - object_id : int
                The id of the object. If specified as a query parameter, must also
                specify object_type parameter.
            - object_type : str
                The type of the object that is favorited. Valid options: Container
                Script, Identity Resolution, Import, Python Script, R Script, dbt
                Script, JavaScript Script, SQL Script, Template Script, Project,
                Workflow, Tableau Report, Service Report, HTML Report, SQL Report
            - object_name : str
                The name of the object that is favorited.
            - created_at : str (time)
                The time this favorite was created.
            - object_updated_at : str (time)
                The time the object that is favorited was last updated
            - object_author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - position : int
                The rank position of this favorite. Use the patch
                users/me/favorites/:id/ranking/ endpoints to update.
        """
        ...

    def post_favorites(
        self,
        object_id: int,
        object_type: str,
    ) -> _ResponseOrganizationsPostFavorites:
        """Favorite an item for your organization

        API URL: ``POST /organizations/favorites``

        Parameters
        ----------
        object_id : int
            The id of the object. If specified as a query parameter, must also specify
            object_type parameter.
        object_type : str
            The type of the object that is favorited. Valid options: Container Script,
            Identity Resolution, Import, Python Script, R Script, dbt Script,
            JavaScript Script, SQL Script, Template Script, Project, Workflow, Tableau
            Report, Service Report, HTML Report, SQL Report

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The id of the favorite.
            - object_id : int
                The id of the object. If specified as a query parameter, must also
                specify object_type parameter.
            - object_type : str
                The type of the object that is favorited. Valid options: Container
                Script, Identity Resolution, Import, Python Script, R Script, dbt
                Script, JavaScript Script, SQL Script, Template Script, Project,
                Workflow, Tableau Report, Service Report, HTML Report, SQL Report
            - object_name : str
                The name of the object that is favorited.
            - created_at : str (time)
                The time this favorite was created.
            - object_updated_at : str (time)
                The time the object that is favorited was last updated
            - object_author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
        """
        ...

    def delete_favorites(
        self,
        id: int,
    ) -> Response:
        """Unfavorite an item for your organization

        API URL: ``DELETE /organizations/favorites/{id}``

        Parameters
        ----------
        id : int
            The id of the favorite.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

class _Permission_Sets:
    def list(
        self,
        *,
        archived: str | None = ...,
        author: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponsePermissionSetsList]:
        """List Permission Sets

        API URL: ``GET /permission_sets``

        Parameters
        ----------
        archived : str, optional
            The archival status of the requested item(s).
        author : str, optional
            If specified, return items from any of these authors. It accepts a comma-
            separated list of user IDs.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to updated_at. Must be
            one of: updated_at, name, created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID for this permission set.
            - name : str
                The name of this permission set.
            - description : str
                A description of this permission set.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def post(
        self,
        name: str,
        *,
        description: str | None = ...,
    ) -> _ResponsePermissionSetsPost:
        """Create a Permission Set

        API URL: ``POST /permission_sets``

        Parameters
        ----------
        name : str
            The name of this permission set.
        description : str, optional
            A description of this permission set.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this permission set.
            - name : str
                The name of this permission set.
            - description : str
                A description of this permission set.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponsePermissionSetsGet:
        """Get a Permission Set

        API URL: ``GET /permission_sets/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this permission set.
            - name : str
                The name of this permission set.
            - description : str
                A description of this permission set.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put(
        self,
        id: int,
        name: str,
        *,
        description: str | None = ...,
    ) -> _ResponsePermissionSetsPut:
        """Replace all attributes of this Permission Set

        API URL: ``PUT /permission_sets/{id}``

        Parameters
        ----------
        id : int
            The ID for this permission set.
        name : str
            The name of this permission set.
        description : str, optional
            A description of this permission set.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this permission set.
            - name : str
                The name of this permission set.
            - description : str
                A description of this permission set.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def patch(
        self,
        id: int,
        *,
        name: str | None = ...,
        description: str | None = ...,
    ) -> _ResponsePermissionSetsPatch:
        """Update some attributes of this Permission Set

        API URL: ``PATCH /permission_sets/{id}``

        Parameters
        ----------
        id : int
            The ID for this permission set.
        name : str, optional
            The name of this permission set.
        description : str, optional
            A description of this permission set.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this permission set.
            - name : str
                The name of this permission set.
            - description : str
                A description of this permission set.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def list_shares(
        self,
        id: int,
    ) -> List[_ResponsePermissionSetsListShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /permission_sets/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponsePermissionSetsPutSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /permission_sets/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /permission_sets/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponsePermissionSetsPutSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /permission_sets/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /permission_sets/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponsePermissionSetsListDependencies]:
        """List dependent objects for this object

        API URL: ``GET /permission_sets/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponsePermissionSetsPutTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /permission_sets/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def put_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponsePermissionSetsPutArchive:
        """Update the archive status of this object

        API URL: ``PUT /permission_sets/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this permission set.
            - name : str
                The name of this permission set.
            - description : str
                A description of this permission set.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def list_users_permissions(
        self,
        id: int,
        user_id: int,
    ) -> List[_ResponsePermissionSetsListUsersPermissions]:
        """Get all permissions for a user, in this permission set

        API URL: ``GET /permission_sets/{id}/users/{user_id}/permissions``

        Parameters
        ----------
        id : int
            The ID for this permission set.
        user_id : int
            The ID for the user.

        Returns
        -------
        :class:`civis.ListResponse`
            - resource_name : str
                The name of the resource.
            - read : bool
                If true, the user has read permission on this resource.
            - write : bool
                If true, the user has write permission on this resource.
            - manage : bool
                If true, the user has manage permission on this resource.
        """
        ...

    def list_resources(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponsePermissionSetsListResources]:
        """List resources in a permission set

        API URL: ``GET /permission_sets/{id}/resources``

        Parameters
        ----------
        id : int
            The ID for this permission set.
        limit : int, optional
            Number of results to return. Defaults to 50. Maximum allowed is 1000.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to name. Must be one
            of: name, id, updated_at, created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to asc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - permission_set_id : int
                The ID for the permission set this resource belongs to.
            - name : str
                The name of this resource.
            - description : str
                A description of this resource.
            - created_at : str (time)
            - updated_at : str (time)
        """
        ...

    def post_resources(
        self,
        id: int,
        name: str,
        *,
        description: str | None = ...,
    ) -> _ResponsePermissionSetsPostResources:
        """Create a resource in a permission set

        API URL: ``POST /permission_sets/{id}/resources``

        Parameters
        ----------
        id : int
            The ID for this permission set.
        name : str
            The name of this resource.
        description : str, optional
            A description of this resource.

        Returns
        -------
        :class:`civis.Response`
            - permission_set_id : int
                The ID for the permission set this resource belongs to.
            - name : str
                The name of this resource.
            - description : str
                A description of this resource.
            - created_at : str (time)
            - updated_at : str (time)
        """
        ...

    def get_resources(
        self,
        id: int,
        name: str,
    ) -> _ResponsePermissionSetsGetResources:
        """Get a resource in a permission set

        API URL: ``GET /permission_sets/{id}/resources/{name}``

        Parameters
        ----------
        id : int
            The ID for this permission set.
        name : str
            The name of this resource.

        Returns
        -------
        :class:`civis.Response`
            - permission_set_id : int
                The ID for the permission set this resource belongs to.
            - name : str
                The name of this resource.
            - description : str
                A description of this resource.
            - created_at : str (time)
            - updated_at : str (time)
        """
        ...

    def patch_resources(
        self,
        id: int,
        name: str,
        *,
        description: str | None = ...,
    ) -> _ResponsePermissionSetsPatchResources:
        """Update a resource in a permission set

        API URL: ``PATCH /permission_sets/{id}/resources/{name}``

        Parameters
        ----------
        id : int
            The ID for this permission set.
        name : str
            The name of this resource.
        description : str, optional
            A description of this resource.

        Returns
        -------
        :class:`civis.Response`
            - permission_set_id : int
                The ID for the permission set this resource belongs to.
            - name : str
                The name of this resource.
            - description : str
                A description of this resource.
            - created_at : str (time)
            - updated_at : str (time)
        """
        ...

    def delete_resources(
        self,
        id: int,
        name: str,
    ) -> Response:
        """Delete a resource in a permission set

        API URL: ``DELETE /permission_sets/{id}/resources/{name}``

        Parameters
        ----------
        id : int
            The ID for this permission set.
        name : str
            The name of this resource.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_resources_shares(
        self,
        id: int,
        name: str,
    ) -> List[_ResponsePermissionSetsListResourcesShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /permission_sets/{id}/resources/{name}/shares``

        Parameters
        ----------
        id : int
            The ID for this permission set.
        name : str
            The name of this resource.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_resources_shares_users(
        self,
        id: int,
        name: str,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponsePermissionSetsPutResourcesSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /permission_sets/{id}/resources/{name}/shares/users``

        Parameters
        ----------
        id : int
            The ID for this permission set.
        name : str
            The name of this resource.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_resources_shares_users(
        self,
        id: int,
        name: str,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /permission_sets/{id}/resources/{name}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID for this permission set.
        name : str
            The name of this resource.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_resources_shares_groups(
        self,
        id: int,
        name: str,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponsePermissionSetsPutResourcesSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /permission_sets/{id}/resources/{name}/shares/groups``

        Parameters
        ----------
        id : int
            The ID for this permission set.
        name : str
            The name of this resource.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_resources_shares_groups(
        self,
        id: int,
        name: str,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /permission_sets/{id}/resources/{name}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID for this permission set.
        name : str
            The name of this resource.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

class _Predictions:
    def list(
        self,
        *,
        model_id: int | None = ...,
    ) -> List[_ResponsePredictionsList]:
        """List predictions

        API URL: ``GET /predictions``

        Parameters
        ----------
        model_id : int, optional
            If specified, only return predictions associated with this model ID.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the prediction.
            - model_id : int
                The ID of the model used for this prediction.
            - scored_table_id : int
                The ID of the source table for this prediction.
            - scored_table_name : str
                The name of the source table for this prediction.
            - output_table_name : str
                The name of the output table for this prediction.
            - state : str
                The state of the last run of this prediction.
            - error : str
                The error, if any, of the last run of this prediction.
            - started_at : str (date-time)
                The start time of the last run of this prediction.
            - finished_at : str (date-time)
                The end time of the last run of this prediction.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponsePredictionsGet:
        """Show the specified prediction

        API URL: ``GET /predictions/{id}``

        Parameters
        ----------
        id : int
            The ID of the prediction.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the prediction.
            - model_id : int
                The ID of the model used for this prediction.
            - scored_table_id : int
                The ID of the source table for this prediction.
            - scored_table_name : str
                The name of the source table for this prediction.
            - output_table_name : str
                The name of the output table for this prediction.
            - state : str
                The state of the last run of this prediction.
            - error : str
                The error, if any, of the last run of this prediction.
            - started_at : str (date-time)
                The start time of the last run of this prediction.
            - finished_at : str (date-time)
                The end time of the last run of this prediction.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - scored_tables : List[:class:`civis.Response`]
                An array of created prediction tables.

                - id : int
                    The ID of the table with created predictions.
                - schema : str
                    The schema of table with created predictions.
                - name : str
                    The name of table with created predictions.
                - created_at : str (date-time)
                    The time when the table with created predictions was created.
                - score_stats : List[:class:`civis.Response`]
                    An array of metrics on the created predictions.

                    - score_name : str
                        The name of the score.
                    - histogram : List[int]
                        The histogram of the distribution of scores.
                    - avg_score : float (float)
                        The average score.
                    - min_score : float (float)
                        The minimum score.
                    - max_score : float (float)
                        The maximum score.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - limiting_sql : str
                A SQL WHERE clause used to scope the rows to be predicted.
            - primary_key : List[str]
                The primary key or composite keys of the table being predicted.
        """
        ...

    def list_schedules(
        self,
        id: int,
    ) -> List[_ResponsePredictionsListSchedules]:
        """Show the prediction schedule

        API URL: ``GET /predictions/{id}/schedules``

        Parameters
        ----------
        id : int
            ID of the prediction associated with this schedule.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                ID of the prediction associated with this schedule.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - score_on_model_build : bool
                Whether the prediction will run after a rebuild of the associated
                model.
        """
        ...

class _Projects:
    def list(
        self,
        *,
        permission: str | None = ...,
        auto_share: bool | None = ...,
        author: str | None = ...,
        hidden: bool | None = ...,
        archived: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseProjectsList]:
        """List projects

        API URL: ``GET /projects``

        Parameters
        ----------
        permission : str, optional
            A permissions string, one of "read", "write", or "manage". Lists only
            projects for which the current user has that permission.
        auto_share : bool, optional
            Used to filter projects based on whether the project is autoshare enabled
            or not.
        author : str, optional
            If specified, return items from any of these authors. It accepts a comma-
            separated list of user IDs.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.
        archived : str, optional
            The archival status of the requested item(s).
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 1000.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to updated_at. Must be
            one of: updated_at, name, created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def post(
        self,
        name: str,
        description: str,
        *,
        note: str | None = ...,
        auto_share: bool | None = ...,
        hidden: bool | None = ...,
    ) -> _ResponseProjectsPost:
        """Create a project

        API URL: ``POST /projects``

        Parameters
        ----------
        name : str
            The name of this project.
        description : str
            A description of the project.
        note : str, optional
            Notes for the project.
        auto_share : bool, optional
            If true, objects within the project will be automatically shared when the
            project is shared or objects are added.
        hidden : bool, optional
            The hidden status of the item.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - tables : List[:class:`civis.Response`]
                - schema : str
                - name : str
                - row_count : int
                - column_count : int
                - created_at : str (time)
                - updated_at : str (time)
            - surveys : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
            - scripts : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - type : str
                - finished_at : str (time)
                - state : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - imports : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - type : str
                - finished_at : str (time)
                - state : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - exports : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - type : str
                - finished_at : str (time)
                - state : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - models : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - state : str
            - notebooks : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - current_deployment_id : int
                - last_deploy : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - services : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - current_deployment_id : int
                - last_deploy : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - workflows : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - state : str
                - last_execution : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - reports : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - state : str
            - script_templates : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
            - files : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - file_name : str
                - file_size : int
                - expired : bool
            - enhancements : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - projects : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - description : str
            - all_objects : List[:class:`civis.Response`]
                - project_id : int
                - object_id : int
                - object_type : str
                - fco_type : str
                - sub_type : str
                - name : str
                - icon : str
                - author : str
                - updated_at : str (time)
                - auto_share : bool
                - archived : str
                    The archival status of the requested item(s).
                - hidden : bool
                    The hidden status of the item.
                - my_permission_level : str
                    Your permission level on the object. One of "read", "write", or
                    "manage".
            - note : str
            - can_current_user_enable_auto_share : bool
                A flag for if the current user can enable auto-sharing mode for this
                project.
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - parent_project : :class:`civis.Response`
                - id : int
                    The parent project's ID.
                - name : int
                    The parent project's name.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def post_clone(
        self,
        id: int,
        *,
        clone_schedule: bool | None = ...,
        clone_notifications: bool | None = ...,
    ) -> _ResponseProjectsPostClone:
        """Clone this

        API URL: ``POST /projects/{id}/clone``

        Parameters
        ----------
        id : int
            The ID for this project.
        clone_schedule : bool, optional
            If true, also copy the schedule for all applicable project objects.
        clone_notifications : bool, optional
            If true, also copy the notifications for all applicable project objects.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - tables : List[:class:`civis.Response`]
                - schema : str
                - name : str
                - row_count : int
                - column_count : int
                - created_at : str (time)
                - updated_at : str (time)
            - surveys : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
            - scripts : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - type : str
                - finished_at : str (time)
                - state : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - imports : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - type : str
                - finished_at : str (time)
                - state : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - exports : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - type : str
                - finished_at : str (time)
                - state : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - models : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - state : str
            - notebooks : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - current_deployment_id : int
                - last_deploy : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - services : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - current_deployment_id : int
                - last_deploy : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - workflows : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - state : str
                - last_execution : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - reports : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - state : str
            - script_templates : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
            - files : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - file_name : str
                - file_size : int
                - expired : bool
            - enhancements : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - projects : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - description : str
            - all_objects : List[:class:`civis.Response`]
                - project_id : int
                - object_id : int
                - object_type : str
                - fco_type : str
                - sub_type : str
                - name : str
                - icon : str
                - author : str
                - updated_at : str (time)
                - auto_share : bool
                - archived : str
                    The archival status of the requested item(s).
                - hidden : bool
                    The hidden status of the item.
                - my_permission_level : str
                    Your permission level on the object. One of "read", "write", or
                    "manage".
            - note : str
            - can_current_user_enable_auto_share : bool
                A flag for if the current user can enable auto-sharing mode for this
                project.
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - parent_project : :class:`civis.Response`
                - id : int
                    The parent project's ID.
                - name : int
                    The parent project's name.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def get(
        self,
        project_id: int,
    ) -> _ResponseProjectsGet:
        """Get a detailed view of a project and the objects in it

        API URL: ``GET /projects/{project_id}``

        Parameters
        ----------
        project_id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - tables : List[:class:`civis.Response`]
                - schema : str
                - name : str
                - row_count : int
                - column_count : int
                - created_at : str (time)
                - updated_at : str (time)
            - surveys : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
            - scripts : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - type : str
                - finished_at : str (time)
                - state : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - imports : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - type : str
                - finished_at : str (time)
                - state : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - exports : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - type : str
                - finished_at : str (time)
                - state : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - models : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - state : str
            - notebooks : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - current_deployment_id : int
                - last_deploy : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - services : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - current_deployment_id : int
                - last_deploy : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - workflows : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - state : str
                - last_execution : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - reports : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - state : str
            - script_templates : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
            - files : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - file_name : str
                - file_size : int
                - expired : bool
            - enhancements : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - projects : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - description : str
            - all_objects : List[:class:`civis.Response`]
                - project_id : int
                - object_id : int
                - object_type : str
                - fco_type : str
                - sub_type : str
                - name : str
                - icon : str
                - author : str
                - updated_at : str (time)
                - auto_share : bool
                - archived : str
                    The archival status of the requested item(s).
                - hidden : bool
                    The hidden status of the item.
                - my_permission_level : str
                    Your permission level on the object. One of "read", "write", or
                    "manage".
            - note : str
            - can_current_user_enable_auto_share : bool
                A flag for if the current user can enable auto-sharing mode for this
                project.
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - parent_project : :class:`civis.Response`
                - id : int
                    The parent project's ID.
                - name : int
                    The parent project's name.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def put(
        self,
        project_id: int,
        *,
        name: str | None = ...,
        description: str | None = ...,
        note: str | None = ...,
    ) -> _ResponseProjectsPut:
        """Update a project

        API URL: ``PUT /projects/{project_id}``

        Parameters
        ----------
        project_id : int
        name : str, optional
            The name of this project.
        description : str, optional
            A description of the project.
        note : str, optional
            Notes for the project.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - tables : List[:class:`civis.Response`]
                - schema : str
                - name : str
                - row_count : int
                - column_count : int
                - created_at : str (time)
                - updated_at : str (time)
            - surveys : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
            - scripts : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - type : str
                - finished_at : str (time)
                - state : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - imports : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - type : str
                - finished_at : str (time)
                - state : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - exports : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - type : str
                - finished_at : str (time)
                - state : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - models : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - state : str
            - notebooks : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - current_deployment_id : int
                - last_deploy : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - services : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - current_deployment_id : int
                - last_deploy : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - workflows : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - state : str
                - last_execution : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - reports : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - state : str
            - script_templates : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
            - files : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - file_name : str
                - file_size : int
                - expired : bool
            - enhancements : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - projects : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - description : str
            - all_objects : List[:class:`civis.Response`]
                - project_id : int
                - object_id : int
                - object_type : str
                - fco_type : str
                - sub_type : str
                - name : str
                - icon : str
                - author : str
                - updated_at : str (time)
                - auto_share : bool
                - archived : str
                    The archival status of the requested item(s).
                - hidden : bool
                    The hidden status of the item.
                - my_permission_level : str
                    Your permission level on the object. One of "read", "write", or
                    "manage".
            - note : str
            - can_current_user_enable_auto_share : bool
                A flag for if the current user can enable auto-sharing mode for this
                project.
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - parent_project : :class:`civis.Response`
                - id : int
                    The parent project's ID.
                - name : int
                    The parent project's name.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def put_auto_share(
        self,
        project_id: int,
        auto_share: bool,
    ) -> _ResponseProjectsPutAutoShare:
        """Enable or disable Auto-Share on a project

        API URL: ``PUT /projects/{project_id}/auto_share``

        Parameters
        ----------
        project_id : int
        auto_share : bool
            A toggle for sharing the objects within the project when the project is
            shared or objects are added.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - tables : List[:class:`civis.Response`]
                - schema : str
                - name : str
                - row_count : int
                - column_count : int
                - created_at : str (time)
                - updated_at : str (time)
            - surveys : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
            - scripts : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - type : str
                - finished_at : str (time)
                - state : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - imports : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - type : str
                - finished_at : str (time)
                - state : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - exports : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - type : str
                - finished_at : str (time)
                - state : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - models : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - state : str
            - notebooks : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - current_deployment_id : int
                - last_deploy : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - services : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - current_deployment_id : int
                - last_deploy : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - workflows : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - state : str
                - last_execution : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - reports : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - state : str
            - script_templates : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
            - files : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - file_name : str
                - file_size : int
                - expired : bool
            - enhancements : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - projects : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - description : str
            - all_objects : List[:class:`civis.Response`]
                - project_id : int
                - object_id : int
                - object_type : str
                - fco_type : str
                - sub_type : str
                - name : str
                - icon : str
                - author : str
                - updated_at : str (time)
                - auto_share : bool
                - archived : str
                    The archival status of the requested item(s).
                - hidden : bool
                    The hidden status of the item.
                - my_permission_level : str
                    Your permission level on the object. One of "read", "write", or
                    "manage".
            - note : str
            - can_current_user_enable_auto_share : bool
                A flag for if the current user can enable auto-sharing mode for this
                project.
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - parent_project : :class:`civis.Response`
                - id : int
                    The parent project's ID.
                - name : int
                    The parent project's name.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def list_shares(
        self,
        id: int,
    ) -> List[_ResponseProjectsListShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /projects/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseProjectsPutSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /projects/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /projects/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseProjectsPutSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /projects/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /projects/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseProjectsListDependencies]:
        """List dependent objects for this object

        API URL: ``GET /projects/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseProjectsPutTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /projects/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def put_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseProjectsPutArchive:
        """Update the archive status of this object

        API URL: ``PUT /projects/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - tables : List[:class:`civis.Response`]
                - schema : str
                - name : str
                - row_count : int
                - column_count : int
                - created_at : str (time)
                - updated_at : str (time)
            - surveys : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
            - scripts : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - type : str
                - finished_at : str (time)
                - state : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - imports : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - type : str
                - finished_at : str (time)
                - state : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - exports : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - type : str
                - finished_at : str (time)
                - state : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - models : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - state : str
            - notebooks : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - current_deployment_id : int
                - last_deploy : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - services : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - current_deployment_id : int
                - last_deploy : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - workflows : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - state : str
                - last_execution : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - reports : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - state : str
            - script_templates : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
            - files : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - file_name : str
                - file_size : int
                - expired : bool
            - enhancements : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - last_run : :class:`civis.Response`
                    - state : str
                    - updated_at : str (time)
            - projects : List[:class:`civis.Response`]
                - id : int
                    The item's ID.
                - created_at : str (time)
                - updated_at : str (time)
                - name : str
                - description : str
            - all_objects : List[:class:`civis.Response`]
                - project_id : int
                - object_id : int
                - object_type : str
                - fco_type : str
                - sub_type : str
                - name : str
                - icon : str
                - author : str
                - updated_at : str (time)
                - auto_share : bool
                - archived : str
                    The archival status of the requested item(s).
                - hidden : bool
                    The hidden status of the item.
                - my_permission_level : str
                    Your permission level on the object. One of "read", "write", or
                    "manage".
            - note : str
            - can_current_user_enable_auto_share : bool
                A flag for if the current user can enable auto-sharing mode for this
                project.
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - parent_project : :class:`civis.Response`
                - id : int
                    The parent project's ID.
                - name : int
                    The parent project's name.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def list_parent_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseProjectsListParentProjects]:
        """List the Parent Projects an item belongs to

        API URL: ``GET /projects/{id}/parent_projects``

        Parameters
        ----------
        id : int
            The ID of the item.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_parent_projects(
        self,
        id: int,
        parent_project_id: int,
    ) -> Response:
        """Add an item to a Parent Project

        API URL: ``PUT /projects/{id}/parent_projects/{parent_project_id}``

        Parameters
        ----------
        id : int
            The ID of the item.
        parent_project_id : int
            The ID of the Parent Project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_parent_projects(
        self,
        id: int,
        parent_project_id: int,
    ) -> Response:
        """Remove an item from a Parent Project

        API URL: ``DELETE /projects/{id}/parent_projects/{parent_project_id}``

        Parameters
        ----------
        id : int
            The ID of the item.
        parent_project_id : int
            The ID of the Parent Project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

class _Queries:
    def list(
        self,
        *,
        query: str | None = ...,
        database_id: int | None = ...,
        credential_id: int | None = ...,
        author_id: int | None = ...,
        created_before: str | None = ...,
        created_after: str | None = ...,
        started_before: str | None = ...,
        started_after: str | None = ...,
        state: List[str] | None = ...,
        exclude_results: bool | None = ...,
        hidden: bool | None = ...,
        archived: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseQueriesList]:
        """List queries

        API URL: ``GET /queries``

        Parameters
        ----------
        query : str, optional
            Space delimited query for searching queries by their SQL. Supports wild
            card characters "?" for any single character, and "*" for zero or more
            characters.
        database_id : int, optional
            The database ID.
        credential_id : int, optional
            The credential ID.
        author_id : int, optional
            The author of the query.
        created_before : str, optional
            An upper bound for the creation date of the query.
        created_after : str, optional
            A lower bound for the creation date of the query.
        started_before : str, optional
            An upper bound for the start date of the last run.
        started_after : str, optional
            A lower bound for the start date of the last run.
        state : List[str], optional
            The state of the last run. One or more of queued, running, succeeded,
            failed, and cancelled. Specify multiple values as a comma-separated list
            (e.g., "A,B").
        exclude_results : bool, optional
            If true, does not return cached query results.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.
        archived : str, optional
            The archival status of the requested item(s).
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to created_at. Must be
            one of: created_at, started_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The query ID.
            - database : int
                The database ID.
            - sql : str
                The SQL to execute.
            - credential : int
                The credential ID.
            - result_rows : List[List]
                A preview of rows returned by the query.
            - result_columns : List[str]
                A preview of columns returned by the query.
            - error : str
                The error message for this run, if present.
            - started_at : str (date-time)
                The start time of the last run.
            - finished_at : str (date-time)
                The end time of the last run.
            - state : str
                The state of the last run. One of queued, running, succeeded, failed,
                and cancelled.
            - script_id : int
                The ID of the script associated with this query.
            - exception : str
                Deprecated and not used.
            - created_at : str (time)
            - updated_at : str (time)
            - last_run_id : int
                The ID of the last run.
            - archived : str
                The archival status of the requested item(s).
            - preview_rows : int
                The number of rows to save from the query's result (maximum: 1000).
            - report_id : int
                The ID of the report associated with this query.
        """
        ...

    def post(
        self,
        database: int,
        sql: str,
        preview_rows: int,
        *,
        credential: int | None = ...,
        hidden: bool | None = ...,
        interactive: bool | None = ...,
        include_header: bool | None = ...,
        compression: str | None = ...,
        column_delimiter: str | None = ...,
        unquoted: bool | None = ...,
        filename_prefix: str | None = ...,
    ) -> _ResponseQueriesPost:
        """Execute a query

        API URL: ``POST /queries``

        Parameters
        ----------
        database : int
            The database ID.
        sql : str
            The SQL to execute.
        preview_rows : int
            The number of rows to save from the query's result (maximum: 1000).
        credential : int, optional
            The credential ID.
        hidden : bool, optional
            The hidden status of the item.
        interactive : bool, optional
            Deprecated and not used.
        include_header : bool, optional
            Whether the CSV output should include a header row [default: true].
        compression : str, optional
            The type of compression. One of gzip or zip, or none [default: gzip].
        column_delimiter : str, optional
            The delimiter to use. One of comma or tab, or pipe [default: comma].
        unquoted : bool, optional
            If true, will not quote fields.
        filename_prefix : str, optional
            The output filename prefix.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The query ID.
            - database : int
                The database ID.
            - sql : str
                The SQL to execute.
            - credential : int
                The credential ID.
            - result_rows : List[List]
                A preview of rows returned by the query.
            - result_columns : List[str]
                A preview of columns returned by the query.
            - error : str
                The error message for this run, if present.
            - started_at : str (date-time)
                The start time of the last run.
            - finished_at : str (date-time)
                The end time of the last run.
            - state : str
                The state of the last run. One of queued, running, succeeded, failed,
                and cancelled.
            - script_id : int
                The ID of the script associated with this query.
            - exception : str
                Deprecated and not used.
            - created_at : str (time)
            - updated_at : str (time)
            - last_run_id : int
                The ID of the last run.
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - interactive : bool
                Deprecated and not used.
            - preview_rows : int
                The number of rows to save from the query's result (maximum: 1000).
            - include_header : bool
                Whether the CSV output should include a header row [default: true].
            - compression : str
                The type of compression. One of gzip or zip, or none [default: gzip].
            - column_delimiter : str
                The delimiter to use. One of comma or tab, or pipe [default: comma].
            - unquoted : bool
                If true, will not quote fields.
            - filename_prefix : str
                The output filename prefix.
            - report_id : int
                The ID of the report associated with this query.
        """
        ...

    def post_runs(
        self,
        id: int,
    ) -> _ResponseQueriesPostRuns:
        """Start a run

        API URL: ``POST /queries/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Query job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - query_id : int
                The ID of the Query job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def list_runs(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseQueriesListRuns]:
        """List runs for the given Query job

        API URL: ``GET /queries/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Query job.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the run.
            - query_id : int
                The ID of the Query job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def get_runs(
        self,
        id: int,
        run_id: int,
    ) -> _ResponseQueriesGetRuns:
        """Check status of a run

        API URL: ``GET /queries/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Query job.
        run_id : int
            The ID of the run.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - query_id : int
                The ID of the Query job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def delete_runs(
        self,
        id: int,
        run_id: int,
    ) -> Response:
        """Cancel a run

        API URL: ``DELETE /queries/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Query job.
        run_id : int
            The ID of the run.

        Returns
        -------
        None
            Response code 202: success
        """
        ...

    def list_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseQueriesListRunsLogs]:
        """Get the logs for a run

        API URL: ``GET /queries/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the Query job.
        run_id : int
            The ID of the run.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def put_scripts(
        self,
        id: int,
        script_id: int,
    ) -> _ResponseQueriesPutScripts:
        """Update the query's associated script

        API URL: ``PUT /queries/{id}/scripts/{script_id}``

        Parameters
        ----------
        id : int
            The query ID.
        script_id : int
            The ID of the script associated with this query.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The query ID.
            - database : int
                The database ID.
            - sql : str
                The SQL to execute.
            - credential : int
                The credential ID.
            - result_rows : List[List]
                A preview of rows returned by the query.
            - result_columns : List[str]
                A preview of columns returned by the query.
            - error : str
                The error message for this run, if present.
            - started_at : str (date-time)
                The start time of the last run.
            - finished_at : str (date-time)
                The end time of the last run.
            - state : str
                The state of the last run. One of queued, running, succeeded, failed,
                and cancelled.
            - script_id : int
                The ID of the script associated with this query.
            - exception : str
                Deprecated and not used.
            - created_at : str (time)
            - updated_at : str (time)
            - last_run_id : int
                The ID of the last run.
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - name : str
                The name of the query.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - report_id : int
                The ID of the report associated with this query.
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseQueriesGet:
        """Get details about a query

        API URL: ``GET /queries/{id}``

        Parameters
        ----------
        id : int
            The query ID.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The query ID.
            - database : int
                The database ID.
            - sql : str
                The SQL to execute.
            - credential : int
                The credential ID.
            - result_rows : List[List]
                A preview of rows returned by the query.
            - result_columns : List[str]
                A preview of columns returned by the query.
            - error : str
                The error message for this run, if present.
            - started_at : str (date-time)
                The start time of the last run.
            - finished_at : str (date-time)
                The end time of the last run.
            - state : str
                The state of the last run. One of queued, running, succeeded, failed,
                and cancelled.
            - script_id : int
                The ID of the script associated with this query.
            - exception : str
                Deprecated and not used.
            - created_at : str (time)
            - updated_at : str (time)
            - last_run_id : int
                The ID of the last run.
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - name : str
                The name of the query.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - report_id : int
                The ID of the report associated with this query.
        """
        ...

    def delete(
        self,
        id: int,
    ) -> _ResponseQueriesDelete:
        """Sets Query Hidden to true

        API URL: ``DELETE /queries/{id}``

        Parameters
        ----------
        id : int
            The query ID.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The query ID.
            - database : int
                The database ID.
            - sql : str
                The SQL to execute.
            - credential : int
                The credential ID.
            - result_rows : List[List]
                A preview of rows returned by the query.
            - result_columns : List[str]
                A preview of columns returned by the query.
            - error : str
                The error message for this run, if present.
            - started_at : str (date-time)
                The start time of the last run.
            - finished_at : str (date-time)
                The end time of the last run.
            - state : str
                The state of the last run. One of queued, running, succeeded, failed,
                and cancelled.
            - script_id : int
                The ID of the script associated with this query.
            - exception : str
                Deprecated and not used.
            - created_at : str (time)
            - updated_at : str (time)
            - last_run_id : int
                The ID of the last run.
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - name : str
                The name of the query.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - report_id : int
                The ID of the report associated with this query.
        """
        ...

class _Remote_Hosts:
    def list(
        self,
        *,
        type: str | None = ...,
    ) -> List[_ResponseRemoteHostsList]:
        """List Remote Hosts

        API URL: ``GET /remote_hosts``

        Parameters
        ----------
        type : str, optional
            The type of remote host. One of: RemoteHostTypes::Bigquery,
            RemoteHostTypes::Bitbucket, RemoteHostTypes::GitSSH,
            RemoteHostTypes::Github, RemoteHostTypes::GoogleDoc, RemoteHostTypes::JDBC,
            RemoteHostTypes::Postgres, RemoteHostTypes::Redshift,
            RemoteHostTypes::S3Storage, and RemoteHostTypes::Salesforce

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the remote host.
            - name : str
                The human readable name for the remote host.
            - type : str
                The type of remote host. One of: RemoteHostTypes::Bigquery,
                RemoteHostTypes::Bitbucket, RemoteHostTypes::GitSSH,
                RemoteHostTypes::Github, RemoteHostTypes::GoogleDoc,
                RemoteHostTypes::JDBC, RemoteHostTypes::Postgres,
                RemoteHostTypes::Redshift, RemoteHostTypes::S3Storage, and
                RemoteHostTypes::Salesforce
            - url : str
                The URL for the remote host.
        """
        ...

    def post(
        self,
        name: str,
        url: str,
        type: str,
    ) -> _ResponseRemoteHostsPost:
        """Create a Remote Host

        API URL: ``POST /remote_hosts``

        Parameters
        ----------
        name : str
            The human readable name for the remote host.
        url : str
            The URL for the remote host.
        type : str
            The type of remote host. One of: RemoteHostTypes::Bigquery,
            RemoteHostTypes::Bitbucket, RemoteHostTypes::GitSSH,
            RemoteHostTypes::Github, RemoteHostTypes::GoogleDoc, RemoteHostTypes::JDBC,
            RemoteHostTypes::Postgres, RemoteHostTypes::Redshift,
            RemoteHostTypes::S3Storage, and RemoteHostTypes::Salesforce

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the remote host.
            - name : str
                The human readable name for the remote host.
            - type : str
                The type of remote host. One of: RemoteHostTypes::Bigquery,
                RemoteHostTypes::Bitbucket, RemoteHostTypes::GitSSH,
                RemoteHostTypes::Github, RemoteHostTypes::GoogleDoc,
                RemoteHostTypes::JDBC, RemoteHostTypes::Postgres,
                RemoteHostTypes::Redshift, RemoteHostTypes::S3Storage, and
                RemoteHostTypes::Salesforce
            - url : str
                The URL for the remote host.
            - description : str
                The description of the remote host.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (date-time)
            - updated_at : str (date-time)
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseRemoteHostsGet:
        """Get a Remote Host

        API URL: ``GET /remote_hosts/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the remote host.
            - name : str
                The human readable name for the remote host.
            - type : str
                The type of remote host. One of: RemoteHostTypes::Bigquery,
                RemoteHostTypes::Bitbucket, RemoteHostTypes::GitSSH,
                RemoteHostTypes::Github, RemoteHostTypes::GoogleDoc,
                RemoteHostTypes::JDBC, RemoteHostTypes::Postgres,
                RemoteHostTypes::Redshift, RemoteHostTypes::S3Storage, and
                RemoteHostTypes::Salesforce
            - url : str
                The URL for the remote host.
            - description : str
                The description of the remote host.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (date-time)
            - updated_at : str (date-time)
        """
        ...

    def put(
        self,
        id: int,
        name: str,
        type: str,
        url: str,
        description: str,
    ) -> _ResponseRemoteHostsPut:
        """Replace all attributes of this Remote Host

        API URL: ``PUT /remote_hosts/{id}``

        Parameters
        ----------
        id : int
            The ID of the remote host.
        name : str
            The human readable name for the remote host.
        type : str
            The type of remote host. One of: RemoteHostTypes::Bigquery,
            RemoteHostTypes::Bitbucket, RemoteHostTypes::GitSSH,
            RemoteHostTypes::Github, RemoteHostTypes::GoogleDoc, RemoteHostTypes::JDBC,
            RemoteHostTypes::Postgres, RemoteHostTypes::Redshift,
            RemoteHostTypes::S3Storage, and RemoteHostTypes::Salesforce
        url : str
            The URL for the remote host.
        description : str
            The description of the remote host.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the remote host.
            - name : str
                The human readable name for the remote host.
            - type : str
                The type of remote host. One of: RemoteHostTypes::Bigquery,
                RemoteHostTypes::Bitbucket, RemoteHostTypes::GitSSH,
                RemoteHostTypes::Github, RemoteHostTypes::GoogleDoc,
                RemoteHostTypes::JDBC, RemoteHostTypes::Postgres,
                RemoteHostTypes::Redshift, RemoteHostTypes::S3Storage, and
                RemoteHostTypes::Salesforce
            - url : str
                The URL for the remote host.
            - description : str
                The description of the remote host.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (date-time)
            - updated_at : str (date-time)
        """
        ...

    def patch(
        self,
        id: int,
        *,
        name: str | None = ...,
        type: str | None = ...,
        url: str | None = ...,
        description: str | None = ...,
    ) -> _ResponseRemoteHostsPatch:
        """Update some attributes of this Remote Host

        API URL: ``PATCH /remote_hosts/{id}``

        Parameters
        ----------
        id : int
            The ID of the remote host.
        name : str, optional
            The human readable name for the remote host.
        type : str, optional
            The type of remote host. One of: RemoteHostTypes::Bigquery,
            RemoteHostTypes::Bitbucket, RemoteHostTypes::GitSSH,
            RemoteHostTypes::Github, RemoteHostTypes::GoogleDoc, RemoteHostTypes::JDBC,
            RemoteHostTypes::Postgres, RemoteHostTypes::Redshift,
            RemoteHostTypes::S3Storage, and RemoteHostTypes::Salesforce
        url : str, optional
            The URL for the remote host.
        description : str, optional
            The description of the remote host.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the remote host.
            - name : str
                The human readable name for the remote host.
            - type : str
                The type of remote host. One of: RemoteHostTypes::Bigquery,
                RemoteHostTypes::Bitbucket, RemoteHostTypes::GitSSH,
                RemoteHostTypes::Github, RemoteHostTypes::GoogleDoc,
                RemoteHostTypes::JDBC, RemoteHostTypes::Postgres,
                RemoteHostTypes::Redshift, RemoteHostTypes::S3Storage, and
                RemoteHostTypes::Salesforce
            - url : str
                The URL for the remote host.
            - description : str
                The description of the remote host.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (date-time)
            - updated_at : str (date-time)
        """
        ...

    def list_shares(
        self,
        id: int,
    ) -> List[_ResponseRemoteHostsListShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /remote_hosts/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseRemoteHostsPutSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /remote_hosts/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /remote_hosts/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseRemoteHostsPutSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /remote_hosts/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /remote_hosts/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def post_authenticate(
        self,
        id: int,
        *,
        credential_id: int | None = ...,
        username: str | None = ...,
        password: str | None = ...,
    ) -> Response:
        """Authenticate against a remote host using either a credential or a user name and
        password

        API URL: ``POST /remote_hosts/{id}/authenticate``

        Parameters
        ----------
        id : int
            The ID of the remote host.
        credential_id : int, optional
            The credential ID.
        username : str, optional
            The user name for remote host.
        password : str, optional
            The password for remote host.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_data_sets(
        self,
        id: int,
        *,
        credential_id: int | None = ...,
        username: str | None = ...,
        password: str | None = ...,
        q: str | None = ...,
        s: bool | None = ...,
    ) -> List[_ResponseRemoteHostsListDataSets]:
        """List data sets available from a remote host

        API URL: ``GET /remote_hosts/{id}/data_sets``

        Parameters
        ----------
        id : int
            The ID of the remote host.
        credential_id : int, optional
            The credential ID.
        username : str, optional
            The user name for remote host.
        password : str, optional
            The password for remote host.
        q : str, optional
            The query string for data set.
        s : bool, optional
            If true will only return schemas, otherwise, the results will be the full
            path.

        Returns
        -------
        :class:`civis.ListResponse`
            - name : str
                The path to a data_set.
            - full_path : bool
                Boolean that indicates whether further querying needs to be done before
                the table can be selected.
        """
        ...

class _Reports:
    def list(
        self,
        *,
        type: str | None = ...,
        template_id: int | None = ...,
        author: str | None = ...,
        hidden: bool | None = ...,
        archived: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseReportsList]:
        """List Reports

        API URL: ``GET /reports``

        Parameters
        ----------
        type : str, optional
            If specified, return report of these types. It accepts a comma-separated
            list, possible values are 'tableau' or 'other'.
        template_id : int, optional
            If specified, return reports using the provided Template.
        author : str, optional
            If specified, return items from any of these authors. It accepts a comma-
            separated list of user IDs.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.
        archived : str, optional
            The archival status of the requested item(s).
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to updated_at. Must be
            one of: updated_at, name, created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of this report.
            - name : str
                The name of the report.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
                The creation time for this report.
            - updated_at : str (time)
                The last updated at time for this report.
            - type : str
                The type of the report. One of: ReportTypes::HTML,
                ReportTypes::Tableau, ReportTypes::ShinyApp, ReportTypes::SQL
            - archived : str
                The archival status of the requested item(s).
            - projects : List[:class:`civis.Response`]
                A list of projects containing the report.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - state : str
                The status of the report's last run.
            - finished_at : str (time)
                The time that the report's last run finished.
            - viz_updated_at : str (time)
                The time that the report's visualization was last updated.
            - script : :class:`civis.Response`
                - id : int
                    The ID for the script.
                - name : str
                    The name of the script.
                - sql : str
                    The raw SQL query for the script, if applicable.
            - job_path : str
                The link to details of the job that backs this report.
            - tableau_id : int
            - template_id : int
                The ID of the template used for this report.
            - auth_thumbnail_url : str
                URL for a thumbnail of the report.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
        """
        ...

    def post(
        self,
        *,
        script_id: int | None = ...,
        name: str | None = ...,
        code_body: str | None = ...,
        app_state: dict | None = ...,
        provide_api_key: bool | None = ...,
        template_id: int | None = ...,
        description: str | None = ...,
        hidden: bool | None = ...,
    ) -> _ResponseReportsPost:
        """Create an HTML report

        API URL: ``POST /reports``

        Parameters
        ----------
        script_id : int, optional
            The ID of the job (a script or a query) used to create this report.
        name : str, optional
            The name of the report.
        code_body : str, optional
            The code for the report visualization.
        app_state : dict, optional
            Any application state blob for this report.
        provide_api_key : bool, optional
            Allow the report to provide an API key to front-end code.
        template_id : int, optional
            The ID of the template used for this report.
        description : str, optional
            The user-defined description of the report.
        hidden : bool, optional
            The hidden status of the item.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this report.
            - name : str
                The name of the report.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
                The creation time for this report.
            - updated_at : str (time)
                The last updated at time for this report.
            - type : str
                The type of the report. One of: ReportTypes::HTML,
                ReportTypes::Tableau, ReportTypes::ShinyApp, ReportTypes::SQL
            - description : str
                The user-defined description of the report.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - projects : List[:class:`civis.Response`]
                A list of projects containing the report.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - state : str
                The status of the report's last run.
            - finished_at : str (time)
                The time that the report's last run finished.
            - viz_updated_at : str (time)
                The time that the report's visualization was last updated.
            - script : :class:`civis.Response`
                - id : int
                    The ID for the script.
                - name : str
                    The name of the script.
                - sql : str
                    The raw SQL query for the script, if applicable.
            - job_path : str
                The link to details of the job that backs this report.
            - tableau_id : int
            - template_id : int
                The ID of the template used for this report.
            - auth_thumbnail_url : str
                URL for a thumbnail of the report.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - hidden : bool
                The hidden status of the item.
            - auth_data_url : str
                DEPRECATED: For legacy reports
            - auth_code_url : str
                Link to code to render in the report.
            - config : str
                Any configuration metadata for this report.
            - valid_output_file : bool
                Whether the job (a script or a query) that backs the report currently
                has a valid output file.
            - provide_api_key : bool
                Whether the report requests an API Key from the report viewer.
            - api_key : str
                A Civis API key that can be used by this report.
            - api_key_id : int
                The ID of the API key. Can be used for auditing API use by this report.
            - app_state : :class:`civis.Response`
                Any application state blob for this report.
            - use_viewers_tableau_username : bool
                Apply user level filtering on Tableau reports.
        """
        ...

    def list_git(
        self,
        id: int,
    ) -> List[_ResponseReportsListGit]:
        """Get the git metadata attached to an item

        API URL: ``GET /reports/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.ListResponse`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def put_git(
        self,
        id: int,
        *,
        git_ref: str | None = ...,
        git_branch: str | None = ...,
        git_path: str | None = ...,
        git_repo_url: str | None = ...,
        git_ref_type: str | None = ...,
        pull_from_git: bool | None = ...,
    ) -> _ResponseReportsPutGit:
        """Attach an item to a file in a git repo

        API URL: ``PUT /reports/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.
        git_ref : str, optional
            A git reference specifying an unambiguous version of the file. Can be a
            branch name, or the full or shortened SHA of a commit.
        git_branch : str, optional
            The git branch that the file is on.
        git_path : str, optional
            The path of the file in the repository.
        git_repo_url : str, optional
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        git_ref_type : str, optional
            Specifies if the file is versioned by branch or tag.
        pull_from_git : bool, optional
            Automatically pull latest commit from git. Only works for scripts.

        Returns
        -------
        :class:`civis.Response`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def patch_git(
        self,
        id: int,
        *,
        git_ref: str | None = ...,
        git_branch: str | None = ...,
        git_path: str | None = ...,
        git_repo_url: str | None = ...,
        git_ref_type: str | None = ...,
        pull_from_git: bool | None = ...,
    ) -> _ResponseReportsPatchGit:
        """Update an attached git file

        API URL: ``PATCH /reports/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.
        git_ref : str, optional
            A git reference specifying an unambiguous version of the file. Can be a
            branch name, or the full or shortened SHA of a commit.
        git_branch : str, optional
            The git branch that the file is on.
        git_path : str, optional
            The path of the file in the repository.
        git_repo_url : str, optional
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        git_ref_type : str, optional
            Specifies if the file is versioned by branch or tag.
        pull_from_git : bool, optional
            Automatically pull latest commit from git. Only works for scripts.

        Returns
        -------
        :class:`civis.Response`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def list_git_commits(
        self,
        id: int,
    ) -> List[_ResponseReportsListGitCommits]:
        """Get the git commits for an item on the current branch

        API URL: ``GET /reports/{id}/git/commits``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.ListResponse`
            - commit_hash : str
                The SHA of the commit.
            - author_name : str
                The name of the commit's author.
            - date : str (time)
                The commit's timestamp.
            - message : str
                The commit message.
        """
        ...

    def post_git_commits(
        self,
        id: int,
        content: str,
        message: str,
        file_hash: str,
    ) -> _ResponseReportsPostGitCommits:
        """Commit and push a new version of the file

        API URL: ``POST /reports/{id}/git/commits``

        Parameters
        ----------
        id : int
            The ID of the item.
        content : str
            The contents to commit to the file.
        message : str
            A commit message describing the changes being made.
        file_hash : str
            The full SHA of the file being replaced.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def get_git_commits(
        self,
        id: int,
        commit_hash: str,
    ) -> _ResponseReportsGetGitCommits:
        """Get file contents at git ref

        API URL: ``GET /reports/{id}/git/commits/{commit_hash}``

        Parameters
        ----------
        id : int
            The ID of the item.
        commit_hash : str
            The SHA (full or shortened) of the desired git commit.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseReportsGet:
        """Get a single report

        API URL: ``GET /reports/{id}``

        Parameters
        ----------
        id : int
            The ID of this report.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this report.
            - name : str
                The name of the report.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
                The creation time for this report.
            - updated_at : str (time)
                The last updated at time for this report.
            - type : str
                The type of the report. One of: ReportTypes::HTML,
                ReportTypes::Tableau, ReportTypes::ShinyApp, ReportTypes::SQL
            - description : str
                The user-defined description of the report.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - projects : List[:class:`civis.Response`]
                A list of projects containing the report.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - state : str
                The status of the report's last run.
            - finished_at : str (time)
                The time that the report's last run finished.
            - viz_updated_at : str (time)
                The time that the report's visualization was last updated.
            - script : :class:`civis.Response`
                - id : int
                    The ID for the script.
                - name : str
                    The name of the script.
                - sql : str
                    The raw SQL query for the script, if applicable.
            - job_path : str
                The link to details of the job that backs this report.
            - tableau_id : int
            - template_id : int
                The ID of the template used for this report.
            - auth_thumbnail_url : str
                URL for a thumbnail of the report.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - hidden : bool
                The hidden status of the item.
            - auth_data_url : str
                DEPRECATED: For legacy reports
            - auth_code_url : str
                Link to code to render in the report.
            - config : str
                Any configuration metadata for this report.
            - valid_output_file : bool
                Whether the job (a script or a query) that backs the report currently
                has a valid output file.
            - provide_api_key : bool
                Whether the report requests an API Key from the report viewer.
            - api_key : str
                A Civis API key that can be used by this report.
            - api_key_id : int
                The ID of the API key. Can be used for auditing API use by this report.
            - app_state : :class:`civis.Response`
                Any application state blob for this report.
            - use_viewers_tableau_username : bool
                Apply user level filtering on Tableau reports.
        """
        ...

    def patch(
        self,
        id: int,
        *,
        name: str | None = ...,
        script_id: int | None = ...,
        code_body: str | None = ...,
        config: str | None = ...,
        app_state: dict | None = ...,
        provide_api_key: bool | None = ...,
        template_id: int | None = ...,
        use_viewers_tableau_username: bool | None = ...,
        description: str | None = ...,
    ) -> _ResponseReportsPatch:
        """Update a report

        API URL: ``PATCH /reports/{id}``

        Parameters
        ----------
        id : int
            The ID of the report to modify.
        name : str, optional
            The name of the report.
        script_id : int, optional
            The ID of the job (a script or a query) used to create this report.
        code_body : str, optional
            The code for the report visualization.
        config : str, optional
        app_state : dict, optional
            The application state blob for this report.
        provide_api_key : bool, optional
            Allow the report to provide an API key to front-end code.
        template_id : int, optional
            The ID of the template used for this report. If null is passed, no template
            will back this report. Changes to the backing template will reset the
            report appState.
        use_viewers_tableau_username : bool, optional
            Apply user level filtering on Tableau reports.
        description : str, optional
            The user-defined description of the report.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this report.
            - name : str
                The name of the report.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
                The creation time for this report.
            - updated_at : str (time)
                The last updated at time for this report.
            - type : str
                The type of the report. One of: ReportTypes::HTML,
                ReportTypes::Tableau, ReportTypes::ShinyApp, ReportTypes::SQL
            - description : str
                The user-defined description of the report.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - projects : List[:class:`civis.Response`]
                A list of projects containing the report.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - state : str
                The status of the report's last run.
            - finished_at : str (time)
                The time that the report's last run finished.
            - viz_updated_at : str (time)
                The time that the report's visualization was last updated.
            - script : :class:`civis.Response`
                - id : int
                    The ID for the script.
                - name : str
                    The name of the script.
                - sql : str
                    The raw SQL query for the script, if applicable.
            - job_path : str
                The link to details of the job that backs this report.
            - tableau_id : int
            - template_id : int
                The ID of the template used for this report.
            - auth_thumbnail_url : str
                URL for a thumbnail of the report.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - hidden : bool
                The hidden status of the item.
            - auth_data_url : str
                DEPRECATED: For legacy reports
            - auth_code_url : str
                Link to code to render in the report.
            - config : str
                Any configuration metadata for this report.
            - valid_output_file : bool
                Whether the job (a script or a query) that backs the report currently
                has a valid output file.
            - provide_api_key : bool
                Whether the report requests an API Key from the report viewer.
            - api_key : str
                A Civis API key that can be used by this report.
            - api_key_id : int
                The ID of the API key. Can be used for auditing API use by this report.
            - app_state : :class:`civis.Response`
                Any application state blob for this report.
            - use_viewers_tableau_username : bool
                Apply user level filtering on Tableau reports.
        """
        ...

    def post_grants(
        self,
        id: int,
    ) -> _ResponseReportsPostGrants:
        """Grant this report the ability to perform Civis platform API operations on your
        behalf

        API URL: ``POST /reports/{id}/grants``

        Parameters
        ----------
        id : int
            The ID of this report.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this report.
            - name : str
                The name of the report.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
                The creation time for this report.
            - updated_at : str (time)
                The last updated at time for this report.
            - type : str
                The type of the report. One of: ReportTypes::HTML,
                ReportTypes::Tableau, ReportTypes::ShinyApp, ReportTypes::SQL
            - description : str
                The user-defined description of the report.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - projects : List[:class:`civis.Response`]
                A list of projects containing the report.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - state : str
                The status of the report's last run.
            - finished_at : str (time)
                The time that the report's last run finished.
            - viz_updated_at : str (time)
                The time that the report's visualization was last updated.
            - script : :class:`civis.Response`
                - id : int
                    The ID for the script.
                - name : str
                    The name of the script.
                - sql : str
                    The raw SQL query for the script, if applicable.
            - job_path : str
                The link to details of the job that backs this report.
            - tableau_id : int
            - template_id : int
                The ID of the template used for this report.
            - auth_thumbnail_url : str
                URL for a thumbnail of the report.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - hidden : bool
                The hidden status of the item.
            - auth_data_url : str
                DEPRECATED: For legacy reports
            - auth_code_url : str
                Link to code to render in the report.
            - config : str
                Any configuration metadata for this report.
            - valid_output_file : bool
                Whether the job (a script or a query) that backs the report currently
                has a valid output file.
            - provide_api_key : bool
                Whether the report requests an API Key from the report viewer.
            - api_key : str
                A Civis API key that can be used by this report.
            - api_key_id : int
                The ID of the API key. Can be used for auditing API use by this report.
            - app_state : :class:`civis.Response`
                Any application state blob for this report.
            - use_viewers_tableau_username : bool
                Apply user level filtering on Tableau reports.
        """
        ...

    def delete_grants(
        self,
        id: int,
    ) -> Response:
        """Revoke permission for this report to perform Civis platform API operations on
        your behalf

        API URL: ``DELETE /reports/{id}/grants``

        Parameters
        ----------
        id : int
            The ID of this report.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_shares(
        self,
        id: int,
    ) -> List[_ResponseReportsListShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /reports/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseReportsPutSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /reports/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /reports/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseReportsPutSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /reports/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /reports/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseReportsListDependencies]:
        """List dependent objects for this object

        API URL: ``GET /reports/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseReportsPutTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /reports/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseReportsListProjects]:
        """List the projects a Report belongs to

        API URL: ``GET /reports/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the Report.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a Report to a project

        API URL: ``PUT /reports/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Report.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a Report from a project

        API URL: ``DELETE /reports/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Report.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseReportsPutArchive:
        """Update the archive status of this object

        API URL: ``PUT /reports/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this report.
            - name : str
                The name of the report.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
                The creation time for this report.
            - updated_at : str (time)
                The last updated at time for this report.
            - type : str
                The type of the report. One of: ReportTypes::HTML,
                ReportTypes::Tableau, ReportTypes::ShinyApp, ReportTypes::SQL
            - description : str
                The user-defined description of the report.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - projects : List[:class:`civis.Response`]
                A list of projects containing the report.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - state : str
                The status of the report's last run.
            - finished_at : str (time)
                The time that the report's last run finished.
            - viz_updated_at : str (time)
                The time that the report's visualization was last updated.
            - script : :class:`civis.Response`
                - id : int
                    The ID for the script.
                - name : str
                    The name of the script.
                - sql : str
                    The raw SQL query for the script, if applicable.
            - job_path : str
                The link to details of the job that backs this report.
            - tableau_id : int
            - template_id : int
                The ID of the template used for this report.
            - auth_thumbnail_url : str
                URL for a thumbnail of the report.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - hidden : bool
                The hidden status of the item.
            - auth_data_url : str
                DEPRECATED: For legacy reports
            - auth_code_url : str
                Link to code to render in the report.
            - config : str
                Any configuration metadata for this report.
            - valid_output_file : bool
                Whether the job (a script or a query) that backs the report currently
                has a valid output file.
            - provide_api_key : bool
                Whether the report requests an API Key from the report viewer.
            - api_key : str
                A Civis API key that can be used by this report.
            - api_key_id : int
                The ID of the API key. Can be used for auditing API use by this report.
            - app_state : :class:`civis.Response`
                Any application state blob for this report.
            - use_viewers_tableau_username : bool
                Apply user level filtering on Tableau reports.
        """
        ...

    def get_services(
        self,
        id: int,
    ) -> _ResponseReportsGetServices:
        """Get a single service report

        API URL: ``GET /reports/services/{id}``

        Parameters
        ----------
        id : int
            The ID of this report.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this report.
            - name : str
                The name of the report.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
                The creation time for this report.
            - updated_at : str (time)
                The last updated at time for this report.
            - type : str
                The type of the report. One of: ReportTypes::HTML,
                ReportTypes::Tableau, ReportTypes::ShinyApp, ReportTypes::SQL
            - description : str
                The user-defined description of the report.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - host : str
                The host for the service report
            - display_url : str
                The URL to display the service report.
            - service_id : int
                The id of the backing service
            - provide_api_key : bool
                Whether the report requests an API Key from the report viewer.
            - api_key : str
                A Civis API key that can be used by this report.
            - api_key_id : int
                The ID of the API key. Can be used for auditing API use by this report.
        """
        ...

    def patch_services(
        self,
        id: int,
        *,
        name: str | None = ...,
        provide_api_key: bool | None = ...,
    ) -> _ResponseReportsPatchServices:
        """Update some attributes of this service report

        API URL: ``PATCH /reports/services/{id}``

        Parameters
        ----------
        id : int
            The ID of this report.
        name : str, optional
            The name of the service report.
        provide_api_key : bool, optional
            Whether the report requests an API Key from the report viewer.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this report.
            - name : str
                The name of the report.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
                The creation time for this report.
            - updated_at : str (time)
                The last updated at time for this report.
            - type : str
                The type of the report. One of: ReportTypes::HTML,
                ReportTypes::Tableau, ReportTypes::ShinyApp, ReportTypes::SQL
            - description : str
                The user-defined description of the report.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - host : str
                The host for the service report
            - display_url : str
                The URL to display the service report.
            - service_id : int
                The id of the backing service
            - provide_api_key : bool
                Whether the report requests an API Key from the report viewer.
            - api_key : str
                A Civis API key that can be used by this report.
            - api_key_id : int
                The ID of the API key. Can be used for auditing API use by this report.
        """
        ...

    def post_services(
        self,
        service_id: int,
        *,
        provide_api_key: bool | None = ...,
    ) -> _ResponseReportsPostServices:
        """Create a service report

        API URL: ``POST /reports/services``

        Parameters
        ----------
        service_id : int
            The id of the backing service
        provide_api_key : bool, optional
            Whether the report requests an API Key from the report viewer.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this report.
            - name : str
                The name of the report.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
                The creation time for this report.
            - updated_at : str (time)
                The last updated at time for this report.
            - type : str
                The type of the report. One of: ReportTypes::HTML,
                ReportTypes::Tableau, ReportTypes::ShinyApp, ReportTypes::SQL
            - description : str
                The user-defined description of the report.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - host : str
                The host for the service report
            - display_url : str
                The URL to display the service report.
            - service_id : int
                The id of the backing service
            - provide_api_key : bool
                Whether the report requests an API Key from the report viewer.
            - api_key : str
                A Civis API key that can be used by this report.
            - api_key_id : int
                The ID of the API key. Can be used for auditing API use by this report.
        """
        ...

    def list_services_shares(
        self,
        id: int,
    ) -> List[_ResponseReportsListServicesShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /reports/services/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_services_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseReportsPutServicesSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /reports/services/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_services_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /reports/services/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_services_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseReportsPutServicesSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /reports/services/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_services_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /reports/services/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_services_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseReportsListServicesDependencies]:
        """List dependent objects for this object

        API URL: ``GET /reports/services/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_services_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseReportsPutServicesTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /reports/services/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list_services_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseReportsListServicesProjects]:
        """List the projects a Service Report belongs to

        API URL: ``GET /reports/services/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the Service Report.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_services_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a Service Report to a project

        API URL: ``PUT /reports/services/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Service Report.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_services_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a Service Report from a project

        API URL: ``DELETE /reports/services/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Service Report.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_services_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseReportsPutServicesArchive:
        """Update the archive status of this object

        API URL: ``PUT /reports/services/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this report.
            - name : str
                The name of the report.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
                The creation time for this report.
            - updated_at : str (time)
                The last updated at time for this report.
            - type : str
                The type of the report. One of: ReportTypes::HTML,
                ReportTypes::Tableau, ReportTypes::ShinyApp, ReportTypes::SQL
            - description : str
                The user-defined description of the report.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - host : str
                The host for the service report
            - display_url : str
                The URL to display the service report.
            - service_id : int
                The id of the backing service
            - provide_api_key : bool
                Whether the report requests an API Key from the report viewer.
            - api_key : str
                A Civis API key that can be used by this report.
            - api_key_id : int
                The ID of the API key. Can be used for auditing API use by this report.
        """
        ...

    def post_refresh(
        self,
        id: int,
    ) -> _ResponseReportsPostRefresh:
        """Refresh the data in this Tableau report

        API URL: ``POST /reports/{id}/refresh``

        Parameters
        ----------
        id : int
            The ID of this report.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this report.
            - organization : :class:`civis.Response`
                - id : int
                    The ID of this organization.
                - tableau_refresh_usage : int
                    The number of tableau refreshes used this month.
                - tableau_refresh_limit : int
                    The number of monthly tableau refreshes permitted to this
                    organization.
                - tableau_refresh_history : List[:class:`civis.Response`]
                    The number of tableau refreshes used this month.
        """
        ...

    def post_sql(
        self,
        query_id: int,
        name: str,
        config: str,
        *,
        description: str | None = ...,
    ) -> _ResponseReportsPostSql:
        """Create a SQL report

        API URL: ``POST /reports/sql``

        Parameters
        ----------
        query_id : int
            The ID of the query used to create this report.
        name : str
            The name of the report.
        config : str
            The configuration of the report visualization.
        description : str, optional
            The user-defined description of the report.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this report.
            - name : str
                The name of the report.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
                The creation time for this report.
            - updated_at : str (time)
                The last updated at time for this report.
            - type : str
                The type of the report. One of: ReportTypes::HTML,
                ReportTypes::Tableau, ReportTypes::ShinyApp, ReportTypes::SQL
            - description : str
                The user-defined description of the report.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - config : str
                The configuration of the report visualization.
            - query : :class:`civis.Response`
                - id : int
                    The query ID.
                - database : int
                    The database ID.
                - sql : str
                    The SQL to execute.
                - credential : int
                    The credential ID.
                - result_rows : List[List]
                    A preview of rows returned by the query.
                - result_columns : List[str]
                    A preview of columns returned by the query.
                - error : str
                    The error message for this run, if present.
                - started_at : str (date-time)
                    The start time of the last run.
                - finished_at : str (date-time)
                    The end time of the last run.
                - state : str
                    The state of the last run. One of queued, running, succeeded,
                    failed, and cancelled.
                - running_as : :class:`civis.Response`
                    - id : int
                        The ID of this user.
                    - name : str
                        This user's name.
                    - username : str
                        This user's username.
                    - initials : str
                        This user's initials.
                    - online : bool
                        Whether this user is online.
        """
        ...

    def get_sql(
        self,
        id: int,
    ) -> _ResponseReportsGetSql:
        """Get a single SQL report

        API URL: ``GET /reports/sql/{id}``

        Parameters
        ----------
        id : int
            The ID of this report.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this report.
            - name : str
                The name of the report.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
                The creation time for this report.
            - updated_at : str (time)
                The last updated at time for this report.
            - type : str
                The type of the report. One of: ReportTypes::HTML,
                ReportTypes::Tableau, ReportTypes::ShinyApp, ReportTypes::SQL
            - description : str
                The user-defined description of the report.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - config : str
                The configuration of the report visualization.
            - query : :class:`civis.Response`
                - id : int
                    The query ID.
                - database : int
                    The database ID.
                - sql : str
                    The SQL to execute.
                - credential : int
                    The credential ID.
                - result_rows : List[List]
                    A preview of rows returned by the query.
                - result_columns : List[str]
                    A preview of columns returned by the query.
                - error : str
                    The error message for this run, if present.
                - started_at : str (date-time)
                    The start time of the last run.
                - finished_at : str (date-time)
                    The end time of the last run.
                - state : str
                    The state of the last run. One of queued, running, succeeded,
                    failed, and cancelled.
                - running_as : :class:`civis.Response`
                    - id : int
                        The ID of this user.
                    - name : str
                        This user's name.
                    - username : str
                        This user's username.
                    - initials : str
                        This user's initials.
                    - online : bool
                        Whether this user is online.
        """
        ...

    def patch_sql(
        self,
        id: int,
        *,
        query_id: int | None = ...,
        name: str | None = ...,
        config: str | None = ...,
        description: str | None = ...,
    ) -> _ResponseReportsPatchSql:
        """Update a SQL report

        API URL: ``PATCH /reports/sql/{id}``

        Parameters
        ----------
        id : int
            The ID of this report.
        query_id : int, optional
            The ID of the query used to create this report.
        name : str, optional
            The name of the report.
        config : str, optional
            The configuration of the report visualization.
        description : str, optional
            The user-defined description of the report.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this report.
            - name : str
                The name of the report.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
                The creation time for this report.
            - updated_at : str (time)
                The last updated at time for this report.
            - type : str
                The type of the report. One of: ReportTypes::HTML,
                ReportTypes::Tableau, ReportTypes::ShinyApp, ReportTypes::SQL
            - description : str
                The user-defined description of the report.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - config : str
                The configuration of the report visualization.
            - query : :class:`civis.Response`
                - id : int
                    The query ID.
                - database : int
                    The database ID.
                - sql : str
                    The SQL to execute.
                - credential : int
                    The credential ID.
                - result_rows : List[List]
                    A preview of rows returned by the query.
                - result_columns : List[str]
                    A preview of columns returned by the query.
                - error : str
                    The error message for this run, if present.
                - started_at : str (date-time)
                    The start time of the last run.
                - finished_at : str (date-time)
                    The end time of the last run.
                - state : str
                    The state of the last run. One of queued, running, succeeded,
                    failed, and cancelled.
                - running_as : :class:`civis.Response`
                    - id : int
                        The ID of this user.
                    - name : str
                        This user's name.
                    - username : str
                        This user's username.
                    - initials : str
                        This user's initials.
                    - online : bool
                        Whether this user is online.
        """
        ...

    def post_sql_refresh(
        self,
        id: int,
    ) -> _ResponseReportsPostSqlRefresh:
        """Refresh the data in a SQL report

        API URL: ``POST /reports/sql/{id}/refresh``

        Parameters
        ----------
        id : int
            The ID of this report.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this report.
            - name : str
                The name of the report.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
                The creation time for this report.
            - updated_at : str (time)
                The last updated at time for this report.
            - type : str
                The type of the report. One of: ReportTypes::HTML,
                ReportTypes::Tableau, ReportTypes::ShinyApp, ReportTypes::SQL
            - description : str
                The user-defined description of the report.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - config : str
                The configuration of the report visualization.
            - query : :class:`civis.Response`
                - id : int
                    The query ID.
                - database : int
                    The database ID.
                - sql : str
                    The SQL to execute.
                - credential : int
                    The credential ID.
                - result_rows : List[List]
                    A preview of rows returned by the query.
                - result_columns : List[str]
                    A preview of columns returned by the query.
                - error : str
                    The error message for this run, if present.
                - started_at : str (date-time)
                    The start time of the last run.
                - finished_at : str (date-time)
                    The end time of the last run.
                - state : str
                    The state of the last run. One of queued, running, succeeded,
                    failed, and cancelled.
                - running_as : :class:`civis.Response`
                    - id : int
                        The ID of this user.
                    - name : str
                        This user's name.
                    - username : str
                        This user's username.
                    - initials : str
                        This user's initials.
                    - online : bool
                        Whether this user is online.
        """
        ...

    def list_sql_shares(
        self,
        id: int,
    ) -> List[_ResponseReportsListSqlShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /reports/sql/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_sql_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseReportsPutSqlSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /reports/sql/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_sql_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /reports/sql/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_sql_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseReportsPutSqlSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /reports/sql/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_sql_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /reports/sql/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_sql_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseReportsListSqlDependencies]:
        """List dependent objects for this object

        API URL: ``GET /reports/sql/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_sql_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseReportsPutSqlTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /reports/sql/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list_sql_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseReportsListSqlProjects]:
        """List the projects a SQL Report belongs to

        API URL: ``GET /reports/sql/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the SQL Report.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_sql_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a SQL Report to a project

        API URL: ``PUT /reports/sql/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the SQL Report.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_sql_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a SQL Report from a project

        API URL: ``DELETE /reports/sql/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the SQL Report.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_sql_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseReportsPutSqlArchive:
        """Update the archive status of this object

        API URL: ``PUT /reports/sql/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this report.
            - name : str
                The name of the report.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - created_at : str (time)
                The creation time for this report.
            - updated_at : str (time)
                The last updated at time for this report.
            - type : str
                The type of the report. One of: ReportTypes::HTML,
                ReportTypes::Tableau, ReportTypes::ShinyApp, ReportTypes::SQL
            - description : str
                The user-defined description of the report.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - config : str
                The configuration of the report visualization.
            - query : :class:`civis.Response`
                - id : int
                    The query ID.
                - database : int
                    The database ID.
                - sql : str
                    The SQL to execute.
                - credential : int
                    The credential ID.
                - result_rows : List[List]
                    A preview of rows returned by the query.
                - result_columns : List[str]
                    A preview of columns returned by the query.
                - error : str
                    The error message for this run, if present.
                - started_at : str (date-time)
                    The start time of the last run.
                - finished_at : str (date-time)
                    The end time of the last run.
                - state : str
                    The state of the last run. One of queued, running, succeeded,
                    failed, and cancelled.
                - running_as : :class:`civis.Response`
                    - id : int
                        The ID of this user.
                    - name : str
                        This user's name.
                    - username : str
                        This user's username.
                    - initials : str
                        This user's initials.
                    - online : bool
                        Whether this user is online.
        """
        ...

class _Roles:
    def list(
        self,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseRolesList]:
        """List Roles

        API URL: ``GET /roles``

        Parameters
        ----------
        limit : int, optional
            Number of results to return. Defaults to 50. Maximum allowed is 1000.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to asc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                ID of the Role.
            - name : str
                The name of the Role.
            - slug : str
                The slug.
            - description : str
                The description of the Role.
        """
        ...

class _Scripts:
    def list_types(
        self,
    ) -> List[_ResponseScriptsListTypes]:
        """List available script types

        API URL: ``GET /scripts/types``

        Returns
        -------
        :class:`civis.ListResponse`
            - name : str
                The name of the type.
        """
        ...

    def list_history(
        self,
        id: int,
    ) -> List[_ResponseScriptsListHistory]:
        """Get the run history and outputs of this script

        API URL: ``GET /scripts/{id}/history``

        Parameters
        ----------
        id : int
            The ID for the script.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of this run.
            - sql_id : int
                The ID of this sql.
            - state : str
                The state of this run.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - finished_at : str (time)
                The time that this run finished.
            - error : str
                The error message for this run, if present.
            - output : List[:class:`civis.Response`]
                A list of the outputs of this script.

                - output_name : str
                    The name of the output file.
                - file_id : int
                    The unique ID of the output file.
                - path : str
                    The temporary link to download this output file, valid for 36
                    hours.
        """
        ...

    def post(
        self,
        name: str,
        remote_host_id: int,
        credential_id: int,
        sql: str,
        *,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        template_script_id: int | None = ...,
        notifications: dict | None = ...,
        hidden: bool | None = ...,
    ) -> _ResponseScriptsPost:
        """Create a script (legacy)

        API URL: ``POST /scripts``

        Parameters
        ----------
        name : str
            The name of the script.
        remote_host_id : int
            The database ID.
        credential_id : int
            The credential ID.
        sql : str
            The raw SQL query for the script.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.
            Cannot be set if this script uses a template script.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        template_script_id : int, optional
            The ID of the template script, if any.  A script cannot both have a
            template script and be a template for other scripts.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        hidden : bool, optional
            The hidden status of the item.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - template_script_id : int
                The ID of the template script, if any.
        """
        ...

    def list(
        self,
        *,
        type: str | None = ...,
        category: str | None = ...,
        author: str | None = ...,
        status: str | None = ...,
        hidden: bool | None = ...,
        archived: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseScriptsList]:
        """List Scripts

        API URL: ``GET /scripts``

        Parameters
        ----------
        type : str, optional
            If specified, return items of these types. The valid types are sql,
            python3, javascript, r, containers, and dbt.
        category : str, optional
            A job category for filtering scripts. Must be one of script, import,
            export, and enhancement.
        author : str, optional
            If specified, return items from any of these authors. It accepts a comma-
            separated list of user IDs.
        status : str, optional
            If specified, returns items with one of these statuses. It accepts a comma-
            separated list, possible values are 'running', 'failed', 'succeeded',
            'idle', 'scheduled'.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.
        archived : str, optional
            The archival status of the requested item(s).
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to updated_at. Must be
            one of: updated_at, name, created_at, last_run.updated_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - is_template : bool
                Whether others scripts use this one as a template.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - archived : str
                The archival status of the requested item(s).
            - template_script_id : int
                The ID of the template script, if any.
        """
        ...

    def post_run(
        self,
        id: int,
    ) -> Response:
        """Run a SQL script (legacy)

        API URL: ``POST /scripts/{id}/run``

        Parameters
        ----------
        id : int
            The ID for the script.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def post_cancel(
        self,
        id: int,
    ) -> _ResponseScriptsPostCancel:
        """Cancel a run

        API URL: ``POST /scripts/{id}/cancel``

        Parameters
        ----------
        id : int
            The ID of the job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - state : str
                The state of the run, one of 'queued', 'running' or 'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseScriptsGet:
        """Get details about a SQL script (legacy)

        API URL: ``GET /scripts/{id}``

        Parameters
        ----------
        id : int
            The ID for the script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of script.
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time this script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - sql : str
                The raw SQL query for the script.
            - expanded_arguments : :class:`civis.Response`
                Expanded arguments for use in injecting into different environments.
            - template_script_id : int
                The ID of the template script, if any.
        """
        ...

    def post_containers(
        self,
        required_resources: dict,
        *,
        name: str | None = ...,
        parent_id: int | None = ...,
        user_context: str | None = ...,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        repo_http_uri: str | None = ...,
        repo_ref: str | None = ...,
        remote_host_credential_id: int | None = ...,
        git_credential_id: int | None = ...,
        docker_command: str | None = ...,
        docker_image_name: str | None = ...,
        docker_image_tag: str | None = ...,
        instance_type: str | None = ...,
        cancel_timeout: int | None = ...,
        time_zone: str | None = ...,
        partition_label: str | None = ...,
        hidden: bool | None = ...,
        target_project_id: int | None = ...,
        running_as_id: int | None = ...,
    ) -> _ResponseScriptsPostContainers:
        """Create a container

        API URL: ``POST /scripts/containers``

        Parameters
        ----------
        required_resources : dict
            - cpu : int
                The number of CPU shares to allocate for the container. Each core has
                1000 shares. Must be at least 2 shares.
            - memory : int
                The amount of RAM to allocate for the container (in MB). Must be at
                least 4 MB.
            - disk_space : float (float)
                The amount of disk space, in GB, to allocate for the container. This
                space will be used to hold the git repo configured for the container
                and anything your container writes to /tmp or /data. Fractional values
                (e.g. 0.25) are supported.
        name : str, optional
            The name of the container.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        user_context : str, optional
            "runner" or "author", who to execute the script as when run as a template.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        repo_http_uri : str, optional
            The location of a github repo to clone into the container, e.g.
            github.com/my-user/my-repo.git.
        repo_ref : str, optional
            The tag or branch of the github repo to clone into the container.
        remote_host_credential_id : int, optional
            The id of the database credentials to pass into the environment of the
            container.
        git_credential_id : int, optional
            The id of the git credential to be used when checking out the specified git
            repo. If not supplied, the first git credential you've submitted will be
            used. Unnecessary if no git repo is specified or the git repo is public.
        docker_command : str, optional
            The command to run on the container. Will be run via sh as: ["sh", "-c",
            dockerCommand]. Defaults to the Docker image's ENTRYPOINT/CMD.
        docker_image_name : str, optional
            The name of the docker image to pull from DockerHub.
        docker_image_tag : str, optional
            The tag of the docker image to pull from DockerHub.
        instance_type : str, optional
            The EC2 instance type to deploy to. Only available for jobs running on
            kubernetes.
        cancel_timeout : int, optional
            The amount of time (in seconds) to wait before forcibly terminating the
            script. When the script is cancelled, it is first sent a TERM signal. If
            the script is still running after the timeout, it is sent a KILL signal.
            Defaults to 0.
        time_zone : str, optional
            The time zone of this script.
        partition_label : str, optional
            The partition label used to run this object.
        hidden : bool, optional
            The hidden status of the item.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        running_as_id : int, optional
            The ID of the runner of this script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - from_template_aliases : List[:class:`civis.Response`]
                An array of the aliases of the template script.

                - id : int
                    The id of the Alias object.
                - object_id : int
                    The id of the object
                - alias : str
                    The alias of the object
            - name : str
                The name of the container.
            - type : str
                The type of the script (e.g Container)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template script.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - repo_http_uri : str
                The location of a github repo to clone into the container, e.g.
                github.com/my-user/my-repo.git.
            - repo_ref : str
                The tag or branch of the github repo to clone into the container.
            - remote_host_credential_id : int
                The id of the database credentials to pass into the environment of the
                container.
            - git_credential_id : int
                The id of the git credential to be used when checking out the specified
                git repo. If not supplied, the first git credential you've submitted
                will be used. Unnecessary if no git repo is specified or the git repo
                is public.
            - docker_command : str
                The command to run on the container. Will be run via sh as: ["sh",
                "-c", dockerCommand]. Defaults to the Docker image's ENTRYPOINT/CMD.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - time_zone : str
                The time zone of this script.
            - partition_label : str
                The partition label used to run this object.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - target_project_id : int
                Target project to which script outputs will be added.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def get_containers(
        self,
        id: int,
    ) -> _ResponseScriptsGetContainers:
        """View a container

        API URL: ``GET /scripts/containers/{id}``

        Parameters
        ----------
        id : int
            The ID for the script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - from_template_aliases : List[:class:`civis.Response`]
                An array of the aliases of the template script.

                - id : int
                    The id of the Alias object.
                - object_id : int
                    The id of the object
                - alias : str
                    The alias of the object
            - name : str
                The name of the container.
            - type : str
                The type of the script (e.g Container)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template script.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - repo_http_uri : str
                The location of a github repo to clone into the container, e.g.
                github.com/my-user/my-repo.git.
            - repo_ref : str
                The tag or branch of the github repo to clone into the container.
            - remote_host_credential_id : int
                The id of the database credentials to pass into the environment of the
                container.
            - git_credential_id : int
                The id of the git credential to be used when checking out the specified
                git repo. If not supplied, the first git credential you've submitted
                will be used. Unnecessary if no git repo is specified or the git repo
                is public.
            - docker_command : str
                The command to run on the container. Will be run via sh as: ["sh",
                "-c", dockerCommand]. Defaults to the Docker image's ENTRYPOINT/CMD.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - time_zone : str
                The time zone of this script.
            - partition_label : str
                The partition label used to run this object.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - target_project_id : int
                Target project to which script outputs will be added.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def put_containers(
        self,
        id: int,
        required_resources: dict,
        *,
        name: str | None = ...,
        parent_id: int | None = ...,
        user_context: str | None = ...,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        repo_http_uri: str | None = ...,
        repo_ref: str | None = ...,
        remote_host_credential_id: int | None = ...,
        git_credential_id: int | None = ...,
        docker_command: str | None = ...,
        docker_image_name: str | None = ...,
        docker_image_tag: str | None = ...,
        instance_type: str | None = ...,
        cancel_timeout: int | None = ...,
        time_zone: str | None = ...,
        partition_label: str | None = ...,
        target_project_id: int | None = ...,
        running_as_id: int | None = ...,
    ) -> _ResponseScriptsPutContainers:
        """Edit a container

        API URL: ``PUT /scripts/containers/{id}``

        Parameters
        ----------
        id : int
            The ID for the script.
        required_resources : dict
            - cpu : int
                The number of CPU shares to allocate for the container. Each core has
                1000 shares. Must be at least 2 shares.
            - memory : int
                The amount of RAM to allocate for the container (in MB). Must be at
                least 4 MB.
            - disk_space : float (float)
                The amount of disk space, in GB, to allocate for the container. This
                space will be used to hold the git repo configured for the container
                and anything your container writes to /tmp or /data. Fractional values
                (e.g. 0.25) are supported.
        name : str, optional
            The name of the container.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        user_context : str, optional
            "runner" or "author", who to execute the script as when run as a template.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        repo_http_uri : str, optional
            The location of a github repo to clone into the container, e.g.
            github.com/my-user/my-repo.git.
        repo_ref : str, optional
            The tag or branch of the github repo to clone into the container.
        remote_host_credential_id : int, optional
            The id of the database credentials to pass into the environment of the
            container.
        git_credential_id : int, optional
            The id of the git credential to be used when checking out the specified git
            repo. If not supplied, the first git credential you've submitted will be
            used. Unnecessary if no git repo is specified or the git repo is public.
        docker_command : str, optional
            The command to run on the container. Will be run via sh as: ["sh", "-c",
            dockerCommand]. Defaults to the Docker image's ENTRYPOINT/CMD.
        docker_image_name : str, optional
            The name of the docker image to pull from DockerHub.
        docker_image_tag : str, optional
            The tag of the docker image to pull from DockerHub.
        instance_type : str, optional
            The EC2 instance type to deploy to. Only available for jobs running on
            kubernetes.
        cancel_timeout : int, optional
            The amount of time (in seconds) to wait before forcibly terminating the
            script. When the script is cancelled, it is first sent a TERM signal. If
            the script is still running after the timeout, it is sent a KILL signal.
            Defaults to 0.
        time_zone : str, optional
            The time zone of this script.
        partition_label : str, optional
            The partition label used to run this object.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        running_as_id : int, optional
            The ID of the runner of this script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - from_template_aliases : List[:class:`civis.Response`]
                An array of the aliases of the template script.

                - id : int
                    The id of the Alias object.
                - object_id : int
                    The id of the object
                - alias : str
                    The alias of the object
            - name : str
                The name of the container.
            - type : str
                The type of the script (e.g Container)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template script.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - repo_http_uri : str
                The location of a github repo to clone into the container, e.g.
                github.com/my-user/my-repo.git.
            - repo_ref : str
                The tag or branch of the github repo to clone into the container.
            - remote_host_credential_id : int
                The id of the database credentials to pass into the environment of the
                container.
            - git_credential_id : int
                The id of the git credential to be used when checking out the specified
                git repo. If not supplied, the first git credential you've submitted
                will be used. Unnecessary if no git repo is specified or the git repo
                is public.
            - docker_command : str
                The command to run on the container. Will be run via sh as: ["sh",
                "-c", dockerCommand]. Defaults to the Docker image's ENTRYPOINT/CMD.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - time_zone : str
                The time zone of this script.
            - partition_label : str
                The partition label used to run this object.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - target_project_id : int
                Target project to which script outputs will be added.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def patch_containers(
        self,
        id: int,
        *,
        name: str | None = ...,
        parent_id: int | None = ...,
        user_context: str | None = ...,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        required_resources: dict | None = ...,
        repo_http_uri: str | None = ...,
        repo_ref: str | None = ...,
        remote_host_credential_id: int | None = ...,
        git_credential_id: int | None = ...,
        docker_command: str | None = ...,
        docker_image_name: str | None = ...,
        docker_image_tag: str | None = ...,
        instance_type: str | None = ...,
        cancel_timeout: int | None = ...,
        time_zone: str | None = ...,
        partition_label: str | None = ...,
        target_project_id: int | None = ...,
        running_as_id: int | None = ...,
    ) -> _ResponseScriptsPatchContainers:
        """Update a container

        API URL: ``PATCH /scripts/containers/{id}``

        Parameters
        ----------
        id : int
            The ID for the script.
        name : str, optional
            The name of the container.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        user_context : str, optional
            "runner" or "author", who to execute the script as when run as a template.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        required_resources : dict, optional
            - cpu : int
                The number of CPU shares to allocate for the container. Each core has
                1000 shares. Must be at least 2 shares.
            - memory : int
                The amount of RAM to allocate for the container (in MB). Must be at
                least 4 MB.
            - disk_space : float (float)
                The amount of disk space, in GB, to allocate for the container. This
                space will be used to hold the git repo configured for the container
                and anything your container writes to /tmp or /data. Fractional values
                (e.g. 0.25) are supported.
        repo_http_uri : str, optional
            The location of a github repo to clone into the container, e.g.
            github.com/my-user/my-repo.git.
        repo_ref : str, optional
            The tag or branch of the github repo to clone into the container.
        remote_host_credential_id : int, optional
            The id of the database credentials to pass into the environment of the
            container.
        git_credential_id : int, optional
            The id of the git credential to be used when checking out the specified git
            repo. If not supplied, the first git credential you've submitted will be
            used. Unnecessary if no git repo is specified or the git repo is public.
        docker_command : str, optional
            The command to run on the container. Will be run via sh as: ["sh", "-c",
            dockerCommand]. Defaults to the Docker image's ENTRYPOINT/CMD.
        docker_image_name : str, optional
            The name of the docker image to pull from DockerHub.
        docker_image_tag : str, optional
            The tag of the docker image to pull from DockerHub.
        instance_type : str, optional
            The EC2 instance type to deploy to. Only available for jobs running on
            kubernetes.
        cancel_timeout : int, optional
            The amount of time (in seconds) to wait before forcibly terminating the
            script. When the script is cancelled, it is first sent a TERM signal. If
            the script is still running after the timeout, it is sent a KILL signal.
            Defaults to 0.
        time_zone : str, optional
            The time zone of this script.
        partition_label : str, optional
            The partition label used to run this object.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        running_as_id : int, optional
            The ID of the runner of this script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - from_template_aliases : List[:class:`civis.Response`]
                An array of the aliases of the template script.

                - id : int
                    The id of the Alias object.
                - object_id : int
                    The id of the object
                - alias : str
                    The alias of the object
            - name : str
                The name of the container.
            - type : str
                The type of the script (e.g Container)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template script.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - repo_http_uri : str
                The location of a github repo to clone into the container, e.g.
                github.com/my-user/my-repo.git.
            - repo_ref : str
                The tag or branch of the github repo to clone into the container.
            - remote_host_credential_id : int
                The id of the database credentials to pass into the environment of the
                container.
            - git_credential_id : int
                The id of the git credential to be used when checking out the specified
                git repo. If not supplied, the first git credential you've submitted
                will be used. Unnecessary if no git repo is specified or the git repo
                is public.
            - docker_command : str
                The command to run on the container. Will be run via sh as: ["sh",
                "-c", dockerCommand]. Defaults to the Docker image's ENTRYPOINT/CMD.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - time_zone : str
                The time zone of this script.
            - partition_label : str
                The partition label used to run this object.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - target_project_id : int
                Target project to which script outputs will be added.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def post_containers_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        message: str | None = ...,
        level: str | None = ...,
        messages: List[dict] | None = ...,
        child_job_id: int | None = ...,
    ) -> Response:
        """Add log messages

        API URL: ``POST /scripts/containers/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the script.
        run_id : int
            The ID of the script run.
        message : str, optional
            The log message to store.
        level : str, optional
            The log level of this message [default: info]
        messages : List[dict], optional
            If specified, a batch of logs to store. If createdAt timestamps for the
            logs are supplied, the ordering of this list is not preserved, and the
            timestamps are used to sort the logs.If createdAt timestamps are not
            supplied, the ordering of this list is preserved and the logs are given the
            timestamp of when they were received.

            - message : str
                The log message to store.
            - level : str
                The log level of this message [default: info]
            - created_at : str (date-time)
                The timestamp of this message in ISO 8601 format. This is what logs are
                ordered by, so it is recommended to use timestamps with nanosecond
                precision. If absent, defaults to the time that the log was received by
                the API.
        child_job_id : int, optional
            The ID of the child job the message came from.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_containers_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseScriptsListContainersRunsLogs]:
        """Get the logs for a run

        API URL: ``GET /scripts/containers/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the Container job.
        run_id : int
            The ID of the run.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def post_sql(
        self,
        name: str,
        sql: str,
        remote_host_id: int,
        credential_id: int,
        *,
        parent_id: int | None = ...,
        user_context: str | None = ...,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        next_run_at: str | None = ...,
        time_zone: str | None = ...,
        hidden: bool | None = ...,
        target_project_id: int | None = ...,
        csv_settings: dict | None = ...,
        running_as_id: int | None = ...,
    ) -> _ResponseScriptsPostSql:
        """Create a SQL Script

        API URL: ``POST /scripts/sql``

        Parameters
        ----------
        name : str
            The name of the script.
        sql : str
            The raw SQL query for the script.
        remote_host_id : int
            The remote host ID that this script will connect to.
        credential_id : int
            The credential that this script will use.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        user_context : str, optional
            "runner" or "author", who to execute the script as when run as a template.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        next_run_at : str (time), optional
            The time of the next scheduled run.
        time_zone : str, optional
            The time zone of this script.
        hidden : bool, optional
            The hidden status of the item.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        csv_settings : dict, optional
            - include_header : bool
                Whether or not to include headers in the output data. Default: true
            - compression : str
                The type of compression to use, if any, one of "none", "zip", or
                "gzip". Default: gzip
            - column_delimiter : str
                Which delimiter to use, one of "comma", "tab", or "pipe". Default:
                comma
            - unquoted : bool
                Whether or not to quote fields. Default: false
            - force_multifile : bool
                Whether or not the csv should be split into multiple files. Default:
                false
            - filename_prefix : str
                A user specified filename prefix for the output file to have. Default:
                null
            - max_file_size : int
                The max file size, in MB, created files will be. Only available when
                force_multifile is true.
        running_as_id : int, optional
            The ID of the runner of this script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - sql : str
                The raw SQL query for the script.
            - expanded_arguments : :class:`civis.Response`
                Expanded arguments for use in injecting into different environments.
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.
            - code_preview : str
                The code that this script will run with arguments inserted.
            - csv_settings : :class:`civis.Response`
                - include_header : bool
                    Whether or not to include headers in the output data. Default: true
                - compression : str
                    The type of compression to use, if any, one of "none", "zip", or
                    "gzip". Default: gzip
                - column_delimiter : str
                    Which delimiter to use, one of "comma", "tab", or "pipe". Default:
                    comma
                - unquoted : bool
                    Whether or not to quote fields. Default: false
                - force_multifile : bool
                    Whether or not the csv should be split into multiple files.
                    Default: false
                - filename_prefix : str
                    A user specified filename prefix for the output file to have.
                    Default: null
                - max_file_size : int
                    The max file size, in MB, created files will be. Only available
                    when force_multifile is true.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def get_sql(
        self,
        id: int,
    ) -> _ResponseScriptsGetSql:
        """Get a SQL Script

        API URL: ``GET /scripts/sql/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - sql : str
                The raw SQL query for the script.
            - expanded_arguments : :class:`civis.Response`
                Expanded arguments for use in injecting into different environments.
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.
            - code_preview : str
                The code that this script will run with arguments inserted.
            - csv_settings : :class:`civis.Response`
                - include_header : bool
                    Whether or not to include headers in the output data. Default: true
                - compression : str
                    The type of compression to use, if any, one of "none", "zip", or
                    "gzip". Default: gzip
                - column_delimiter : str
                    Which delimiter to use, one of "comma", "tab", or "pipe". Default:
                    comma
                - unquoted : bool
                    Whether or not to quote fields. Default: false
                - force_multifile : bool
                    Whether or not the csv should be split into multiple files.
                    Default: false
                - filename_prefix : str
                    A user specified filename prefix for the output file to have.
                    Default: null
                - max_file_size : int
                    The max file size, in MB, created files will be. Only available
                    when force_multifile is true.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def put_sql(
        self,
        id: int,
        name: str,
        sql: str,
        remote_host_id: int,
        credential_id: int,
        *,
        parent_id: int | None = ...,
        user_context: str | None = ...,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        next_run_at: str | None = ...,
        time_zone: str | None = ...,
        target_project_id: int | None = ...,
        csv_settings: dict | None = ...,
        running_as_id: int | None = ...,
    ) -> _ResponseScriptsPutSql:
        """Replace all attributes of this SQL Script

        API URL: ``PUT /scripts/sql/{id}``

        Parameters
        ----------
        id : int
            The ID for the script.
        name : str
            The name of the script.
        sql : str
            The raw SQL query for the script.
        remote_host_id : int
            The remote host ID that this script will connect to.
        credential_id : int
            The credential that this script will use.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        user_context : str, optional
            "runner" or "author", who to execute the script as when run as a template.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        next_run_at : str (time), optional
            The time of the next scheduled run.
        time_zone : str, optional
            The time zone of this script.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        csv_settings : dict, optional
            - include_header : bool
                Whether or not to include headers in the output data. Default: true
            - compression : str
                The type of compression to use, if any, one of "none", "zip", or
                "gzip". Default: gzip
            - column_delimiter : str
                Which delimiter to use, one of "comma", "tab", or "pipe". Default:
                comma
            - unquoted : bool
                Whether or not to quote fields. Default: false
            - force_multifile : bool
                Whether or not the csv should be split into multiple files. Default:
                false
            - filename_prefix : str
                A user specified filename prefix for the output file to have. Default:
                null
            - max_file_size : int
                The max file size, in MB, created files will be. Only available when
                force_multifile is true.
        running_as_id : int, optional
            The ID of the runner of this script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - sql : str
                The raw SQL query for the script.
            - expanded_arguments : :class:`civis.Response`
                Expanded arguments for use in injecting into different environments.
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.
            - code_preview : str
                The code that this script will run with arguments inserted.
            - csv_settings : :class:`civis.Response`
                - include_header : bool
                    Whether or not to include headers in the output data. Default: true
                - compression : str
                    The type of compression to use, if any, one of "none", "zip", or
                    "gzip". Default: gzip
                - column_delimiter : str
                    Which delimiter to use, one of "comma", "tab", or "pipe". Default:
                    comma
                - unquoted : bool
                    Whether or not to quote fields. Default: false
                - force_multifile : bool
                    Whether or not the csv should be split into multiple files.
                    Default: false
                - filename_prefix : str
                    A user specified filename prefix for the output file to have.
                    Default: null
                - max_file_size : int
                    The max file size, in MB, created files will be. Only available
                    when force_multifile is true.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def patch_sql(
        self,
        id: int,
        *,
        name: str | None = ...,
        parent_id: int | None = ...,
        user_context: str | None = ...,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        next_run_at: str | None = ...,
        time_zone: str | None = ...,
        target_project_id: int | None = ...,
        sql: str | None = ...,
        remote_host_id: int | None = ...,
        credential_id: int | None = ...,
        csv_settings: dict | None = ...,
        running_as_id: int | None = ...,
    ) -> _ResponseScriptsPatchSql:
        """Update some attributes of this SQL Script

        API URL: ``PATCH /scripts/sql/{id}``

        Parameters
        ----------
        id : int
            The ID for the script.
        name : str, optional
            The name of the script.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        user_context : str, optional
            "runner" or "author", who to execute the script as when run as a template.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        next_run_at : str (time), optional
            The time of the next scheduled run.
        time_zone : str, optional
            The time zone of this script.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        sql : str, optional
            The raw SQL query for the script.
        remote_host_id : int, optional
            The remote host ID that this script will connect to.
        credential_id : int, optional
            The credential that this script will use.
        csv_settings : dict, optional
            - include_header : bool
                Whether or not to include headers in the output data. Default: true
            - compression : str
                The type of compression to use, if any, one of "none", "zip", or
                "gzip". Default: gzip
            - column_delimiter : str
                Which delimiter to use, one of "comma", "tab", or "pipe". Default:
                comma
            - unquoted : bool
                Whether or not to quote fields. Default: false
            - force_multifile : bool
                Whether or not the csv should be split into multiple files. Default:
                false
            - filename_prefix : str
                A user specified filename prefix for the output file to have. Default:
                null
            - max_file_size : int
                The max file size, in MB, created files will be. Only available when
                force_multifile is true.
        running_as_id : int, optional
            The ID of the runner of this script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - sql : str
                The raw SQL query for the script.
            - expanded_arguments : :class:`civis.Response`
                Expanded arguments for use in injecting into different environments.
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.
            - code_preview : str
                The code that this script will run with arguments inserted.
            - csv_settings : :class:`civis.Response`
                - include_header : bool
                    Whether or not to include headers in the output data. Default: true
                - compression : str
                    The type of compression to use, if any, one of "none", "zip", or
                    "gzip". Default: gzip
                - column_delimiter : str
                    Which delimiter to use, one of "comma", "tab", or "pipe". Default:
                    comma
                - unquoted : bool
                    Whether or not to quote fields. Default: false
                - force_multifile : bool
                    Whether or not the csv should be split into multiple files.
                    Default: false
                - filename_prefix : str
                    A user specified filename prefix for the output file to have.
                    Default: null
                - max_file_size : int
                    The max file size, in MB, created files will be. Only available
                    when force_multifile is true.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def post_python3(
        self,
        name: str,
        source: str,
        *,
        parent_id: int | None = ...,
        user_context: str | None = ...,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        next_run_at: str | None = ...,
        time_zone: str | None = ...,
        hidden: bool | None = ...,
        target_project_id: int | None = ...,
        required_resources: dict | None = ...,
        instance_type: str | None = ...,
        cancel_timeout: int | None = ...,
        docker_image_tag: str | None = ...,
        partition_label: str | None = ...,
        running_as_id: int | None = ...,
    ) -> _ResponseScriptsPostPython3:
        """Create a Python Script

        API URL: ``POST /scripts/python3``

        Parameters
        ----------
        name : str
            The name of the script.
        source : str
            The body/text of the script.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        user_context : str, optional
            "runner" or "author", who to execute the script as when run as a template.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        next_run_at : str (time), optional
            The time of the next scheduled run.
        time_zone : str, optional
            The time zone of this script.
        hidden : bool, optional
            The hidden status of the item.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        required_resources : dict, optional
            - cpu : int
                The number of CPU shares to allocate for the container. Each core has
                1000 shares. Must be at least 2 shares.
            - memory : int
                The amount of RAM to allocate for the container (in MB). Must be at
                least 4 MB.
            - disk_space : float (float)
                The amount of disk space, in GB, to allocate for the container. This
                space will be used to hold the git repo configured for the container
                and anything your container writes to /tmp or /data. Fractional values
                (e.g. 0.25) are supported.
        instance_type : str, optional
            The EC2 instance type to deploy to. Only available for jobs running on
            kubernetes.
        cancel_timeout : int, optional
            The amount of time (in seconds) to wait before forcibly terminating the
            script. When the script is cancelled, it is first sent a TERM signal. If
            the script is still running after the timeout, it is sent a KILL signal.
            Defaults to 0.
        docker_image_tag : str, optional
            The tag of the docker image to pull from DockerHub.
        partition_label : str, optional
            The partition label used to run this object.
        running_as_id : int, optional
            The ID of the runner of this script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - partition_label : str
                The partition label used to run this object.
            - running_as_id : int
                The ID of the runner of this script.
            - source : str
                The body/text of the script.
        """
        ...

    def get_python3(
        self,
        id: int,
    ) -> _ResponseScriptsGetPython3:
        """Get a Python Script

        API URL: ``GET /scripts/python3/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - partition_label : str
                The partition label used to run this object.
            - running_as_id : int
                The ID of the runner of this script.
            - source : str
                The body/text of the script.
        """
        ...

    def put_python3(
        self,
        id: int,
        name: str,
        source: str,
        *,
        parent_id: int | None = ...,
        user_context: str | None = ...,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        next_run_at: str | None = ...,
        time_zone: str | None = ...,
        target_project_id: int | None = ...,
        required_resources: dict | None = ...,
        instance_type: str | None = ...,
        cancel_timeout: int | None = ...,
        docker_image_tag: str | None = ...,
        partition_label: str | None = ...,
        running_as_id: int | None = ...,
    ) -> _ResponseScriptsPutPython3:
        """Replace all attributes of this Python Script

        API URL: ``PUT /scripts/python3/{id}``

        Parameters
        ----------
        id : int
            The ID for the script.
        name : str
            The name of the script.
        source : str
            The body/text of the script.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        user_context : str, optional
            "runner" or "author", who to execute the script as when run as a template.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        next_run_at : str (time), optional
            The time of the next scheduled run.
        time_zone : str, optional
            The time zone of this script.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        required_resources : dict, optional
            - cpu : int
                The number of CPU shares to allocate for the container. Each core has
                1000 shares. Must be at least 2 shares.
            - memory : int
                The amount of RAM to allocate for the container (in MB). Must be at
                least 4 MB.
            - disk_space : float (float)
                The amount of disk space, in GB, to allocate for the container. This
                space will be used to hold the git repo configured for the container
                and anything your container writes to /tmp or /data. Fractional values
                (e.g. 0.25) are supported.
        instance_type : str, optional
            The EC2 instance type to deploy to. Only available for jobs running on
            kubernetes.
        cancel_timeout : int, optional
            The amount of time (in seconds) to wait before forcibly terminating the
            script. When the script is cancelled, it is first sent a TERM signal. If
            the script is still running after the timeout, it is sent a KILL signal.
            Defaults to 0.
        docker_image_tag : str, optional
            The tag of the docker image to pull from DockerHub.
        partition_label : str, optional
            The partition label used to run this object.
        running_as_id : int, optional
            The ID of the runner of this script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - partition_label : str
                The partition label used to run this object.
            - running_as_id : int
                The ID of the runner of this script.
            - source : str
                The body/text of the script.
        """
        ...

    def patch_python3(
        self,
        id: int,
        *,
        name: str | None = ...,
        parent_id: int | None = ...,
        user_context: str | None = ...,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        next_run_at: str | None = ...,
        time_zone: str | None = ...,
        target_project_id: int | None = ...,
        required_resources: dict | None = ...,
        instance_type: str | None = ...,
        cancel_timeout: int | None = ...,
        docker_image_tag: str | None = ...,
        partition_label: str | None = ...,
        running_as_id: int | None = ...,
        source: str | None = ...,
    ) -> _ResponseScriptsPatchPython3:
        """Update some attributes of this Python Script

        API URL: ``PATCH /scripts/python3/{id}``

        Parameters
        ----------
        id : int
            The ID for the script.
        name : str, optional
            The name of the script.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        user_context : str, optional
            "runner" or "author", who to execute the script as when run as a template.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        next_run_at : str (time), optional
            The time of the next scheduled run.
        time_zone : str, optional
            The time zone of this script.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        required_resources : dict, optional
            - cpu : int
                The number of CPU shares to allocate for the container. Each core has
                1000 shares. Must be at least 2 shares.
            - memory : int
                The amount of RAM to allocate for the container (in MB). Must be at
                least 4 MB.
            - disk_space : float (float)
                The amount of disk space, in GB, to allocate for the container. This
                space will be used to hold the git repo configured for the container
                and anything your container writes to /tmp or /data. Fractional values
                (e.g. 0.25) are supported.
        instance_type : str, optional
            The EC2 instance type to deploy to. Only available for jobs running on
            kubernetes.
        cancel_timeout : int, optional
            The amount of time (in seconds) to wait before forcibly terminating the
            script. When the script is cancelled, it is first sent a TERM signal. If
            the script is still running after the timeout, it is sent a KILL signal.
            Defaults to 0.
        docker_image_tag : str, optional
            The tag of the docker image to pull from DockerHub.
        partition_label : str, optional
            The partition label used to run this object.
        running_as_id : int, optional
            The ID of the runner of this script.
        source : str, optional
            The body/text of the script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - partition_label : str
                The partition label used to run this object.
            - running_as_id : int
                The ID of the runner of this script.
            - source : str
                The body/text of the script.
        """
        ...

    def post_r(
        self,
        name: str,
        source: str,
        *,
        parent_id: int | None = ...,
        user_context: str | None = ...,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        next_run_at: str | None = ...,
        time_zone: str | None = ...,
        hidden: bool | None = ...,
        target_project_id: int | None = ...,
        required_resources: dict | None = ...,
        instance_type: str | None = ...,
        cancel_timeout: int | None = ...,
        docker_image_tag: str | None = ...,
        partition_label: str | None = ...,
        running_as_id: int | None = ...,
    ) -> _ResponseScriptsPostR:
        """Create an R Script

        API URL: ``POST /scripts/r``

        Parameters
        ----------
        name : str
            The name of the script.
        source : str
            The body/text of the script.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        user_context : str, optional
            "runner" or "author", who to execute the script as when run as a template.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        next_run_at : str (time), optional
            The time of the next scheduled run.
        time_zone : str, optional
            The time zone of this script.
        hidden : bool, optional
            The hidden status of the item.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        required_resources : dict, optional
            - cpu : int
                The number of CPU shares to allocate for the container. Each core has
                1000 shares. Must be at least 2 shares.
            - memory : int
                The amount of RAM to allocate for the container (in MB). Must be at
                least 4 MB.
            - disk_space : float (float)
                The amount of disk space, in GB, to allocate for the container. This
                space will be used to hold the git repo configured for the container
                and anything your container writes to /tmp or /data. Fractional values
                (e.g. 0.25) are supported.
        instance_type : str, optional
            The EC2 instance type to deploy to. Only available for jobs running on
            kubernetes.
        cancel_timeout : int, optional
            The amount of time (in seconds) to wait before forcibly terminating the
            script. When the script is cancelled, it is first sent a TERM signal. If
            the script is still running after the timeout, it is sent a KILL signal.
            Defaults to 0.
        docker_image_tag : str, optional
            The tag of the docker image to pull from DockerHub.
        partition_label : str, optional
            The partition label used to run this object.
        running_as_id : int, optional
            The ID of the runner of this script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - partition_label : str
                The partition label used to run this object.
            - running_as_id : int
                The ID of the runner of this script.
            - source : str
                The body/text of the script.
        """
        ...

    def get_r(
        self,
        id: int,
    ) -> _ResponseScriptsGetR:
        """Get an R Script

        API URL: ``GET /scripts/r/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - partition_label : str
                The partition label used to run this object.
            - running_as_id : int
                The ID of the runner of this script.
            - source : str
                The body/text of the script.
        """
        ...

    def put_r(
        self,
        id: int,
        name: str,
        source: str,
        *,
        parent_id: int | None = ...,
        user_context: str | None = ...,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        next_run_at: str | None = ...,
        time_zone: str | None = ...,
        target_project_id: int | None = ...,
        required_resources: dict | None = ...,
        instance_type: str | None = ...,
        cancel_timeout: int | None = ...,
        docker_image_tag: str | None = ...,
        partition_label: str | None = ...,
        running_as_id: int | None = ...,
    ) -> _ResponseScriptsPutR:
        """Replace all attributes of this R Script

        API URL: ``PUT /scripts/r/{id}``

        Parameters
        ----------
        id : int
            The ID for the script.
        name : str
            The name of the script.
        source : str
            The body/text of the script.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        user_context : str, optional
            "runner" or "author", who to execute the script as when run as a template.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        next_run_at : str (time), optional
            The time of the next scheduled run.
        time_zone : str, optional
            The time zone of this script.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        required_resources : dict, optional
            - cpu : int
                The number of CPU shares to allocate for the container. Each core has
                1000 shares. Must be at least 2 shares.
            - memory : int
                The amount of RAM to allocate for the container (in MB). Must be at
                least 4 MB.
            - disk_space : float (float)
                The amount of disk space, in GB, to allocate for the container. This
                space will be used to hold the git repo configured for the container
                and anything your container writes to /tmp or /data. Fractional values
                (e.g. 0.25) are supported.
        instance_type : str, optional
            The EC2 instance type to deploy to. Only available for jobs running on
            kubernetes.
        cancel_timeout : int, optional
            The amount of time (in seconds) to wait before forcibly terminating the
            script. When the script is cancelled, it is first sent a TERM signal. If
            the script is still running after the timeout, it is sent a KILL signal.
            Defaults to 0.
        docker_image_tag : str, optional
            The tag of the docker image to pull from DockerHub.
        partition_label : str, optional
            The partition label used to run this object.
        running_as_id : int, optional
            The ID of the runner of this script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - partition_label : str
                The partition label used to run this object.
            - running_as_id : int
                The ID of the runner of this script.
            - source : str
                The body/text of the script.
        """
        ...

    def patch_r(
        self,
        id: int,
        *,
        name: str | None = ...,
        parent_id: int | None = ...,
        user_context: str | None = ...,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        next_run_at: str | None = ...,
        time_zone: str | None = ...,
        target_project_id: int | None = ...,
        required_resources: dict | None = ...,
        instance_type: str | None = ...,
        cancel_timeout: int | None = ...,
        docker_image_tag: str | None = ...,
        partition_label: str | None = ...,
        running_as_id: int | None = ...,
        source: str | None = ...,
    ) -> _ResponseScriptsPatchR:
        """Update some attributes of this R Script

        API URL: ``PATCH /scripts/r/{id}``

        Parameters
        ----------
        id : int
            The ID for the script.
        name : str, optional
            The name of the script.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        user_context : str, optional
            "runner" or "author", who to execute the script as when run as a template.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        next_run_at : str (time), optional
            The time of the next scheduled run.
        time_zone : str, optional
            The time zone of this script.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        required_resources : dict, optional
            - cpu : int
                The number of CPU shares to allocate for the container. Each core has
                1000 shares. Must be at least 2 shares.
            - memory : int
                The amount of RAM to allocate for the container (in MB). Must be at
                least 4 MB.
            - disk_space : float (float)
                The amount of disk space, in GB, to allocate for the container. This
                space will be used to hold the git repo configured for the container
                and anything your container writes to /tmp or /data. Fractional values
                (e.g. 0.25) are supported.
        instance_type : str, optional
            The EC2 instance type to deploy to. Only available for jobs running on
            kubernetes.
        cancel_timeout : int, optional
            The amount of time (in seconds) to wait before forcibly terminating the
            script. When the script is cancelled, it is first sent a TERM signal. If
            the script is still running after the timeout, it is sent a KILL signal.
            Defaults to 0.
        docker_image_tag : str, optional
            The tag of the docker image to pull from DockerHub.
        partition_label : str, optional
            The partition label used to run this object.
        running_as_id : int, optional
            The ID of the runner of this script.
        source : str, optional
            The body/text of the script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - partition_label : str
                The partition label used to run this object.
            - running_as_id : int
                The ID of the runner of this script.
            - source : str
                The body/text of the script.
        """
        ...

    def post_dbt(
        self,
        name: str,
        repo_http_uri: str,
        *,
        parent_id: int | None = ...,
        user_context: str | None = ...,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        next_run_at: str | None = ...,
        time_zone: str | None = ...,
        hidden: bool | None = ...,
        target_project_id: int | None = ...,
        required_resources: dict | None = ...,
        instance_type: str | None = ...,
        cancel_timeout: int | None = ...,
        docker_image_tag: str | None = ...,
        partition_label: str | None = ...,
        running_as_id: int | None = ...,
        dbt_project: dict | None = ...,
        repo_ref: str | None = ...,
        target_database: dict | None = ...,
    ) -> _ResponseScriptsPostDbt:
        """Create a dbt Script

        API URL: ``POST /scripts/dbt``

        Parameters
        ----------
        name : str
            The name of the script.
        repo_http_uri : str
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        user_context : str, optional
            "runner" or "author", who to execute the script as when run as a template.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        next_run_at : str (time), optional
            The time of the next scheduled run.
        time_zone : str, optional
            The time zone of this script.
        hidden : bool, optional
            The hidden status of the item.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        required_resources : dict, optional
            - cpu : int
                The number of CPU shares to allocate for the container. Each core has
                1000 shares. Must be at least 2 shares.
            - memory : int
                The amount of RAM to allocate for the container (in MB). Must be at
                least 4 MB.
            - disk_space : float (float)
                The amount of disk space, in GB, to allocate for the container. This
                space will be used to hold the git repo configured for the container
                and anything your container writes to /tmp or /data. Fractional values
                (e.g. 0.25) are supported.
        instance_type : str, optional
            The EC2 instance type to deploy to. Only available for jobs running on
            kubernetes.
        cancel_timeout : int, optional
            The amount of time (in seconds) to wait before forcibly terminating the
            script. When the script is cancelled, it is first sent a TERM signal. If
            the script is still running after the timeout, it is sent a KILL signal.
            Defaults to 0.
        docker_image_tag : str, optional
            The tag of the docker image to pull from DockerHub.
        partition_label : str, optional
            The partition label used to run this object.
        running_as_id : int, optional
            The ID of the runner of this script.
        dbt_project : dict, optional
            - target : str
                Which profile target to use. Ignored when used in conjunction with
                generate_profiles.
            - schema : str
                The output schema for dbt to use.
            - project_dir : str
                The path to dbt_project.yml. Defaults to the root of the repository.
                Generates 'DBT_PROJECT_DIR' environment variable.
            - profiles_dir : str
                The path to the profiles.yml file to be used by dbt. Ignored when used
                in conjunction with generate_profiles. Generates 'DBT_PROFILES_DIR'
                environment variable.
            - dbt_version : str
                The version of dbt to use. Generates 'DBT_VERSION' environment
                variable.
            - dbt_command : str
                The primary dbt command to run. Valid commands are build, run, test,
                compile, and retry.
            - dbt_command_line_args : str
                Additional command line arguments to pass to dbt. Ignored when dbt
                retry command is selected.
            - docs_report_id : str
                The ID of the HTML report hosting the static dbt docs for this job.
                Updates every time a run succeeds. This report will be automatically
                shared with all users who are shared on the job.
            - skip_docs_generation : bool
                Whether to skip dbt docs generation. If true, the linked docs report
                will not be updated when the script runs. Defaults to false.
            - generate_profiles : bool
                Whether to generate the profiles.yml file when running the script.
                Defaults to false.
        repo_ref : str, optional
            A git reference specifying an unambiguous version of the file. Can be a
            branch name, a tag, or the full or shortened SHA of a commit. Defaults to
            'main'.
        target_database : dict, optional
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - partition_label : str
                The partition label used to run this object.
            - running_as_id : int
                The ID of the runner of this script.
            - dbt_project : :class:`civis.Response`
                - target : str
                    Which profile target to use. Ignored when used in conjunction with
                    generate_profiles.
                - schema : str
                    The output schema for dbt to use.
                - project_dir : str
                    The path to dbt_project.yml. Defaults to the root of the
                    repository. Generates 'DBT_PROJECT_DIR' environment variable.
                - profiles_dir : str
                    The path to the profiles.yml file to be used by dbt. Ignored when
                    used in conjunction with generate_profiles. Generates
                    'DBT_PROFILES_DIR' environment variable.
                - dbt_version : str
                    The version of dbt to use. Generates 'DBT_VERSION' environment
                    variable.
                - dbt_command : str
                    The primary dbt command to run. Valid commands are build, run,
                    test, compile, and retry.
                - dbt_command_line_args : str
                    Additional command line arguments to pass to dbt. Ignored when dbt
                    retry command is selected.
                - docs_report_id : str
                    The ID of the HTML report hosting the static dbt docs for this job.
                    Updates every time a run succeeds. This report will be
                    automatically shared with all users who are shared on the job.
                - skip_docs_generation : bool
                    Whether to skip dbt docs generation. If true, the linked docs
                    report will not be updated when the script runs. Defaults to false.
                - generate_profiles : bool
                    Whether to generate the profiles.yml file when running the script.
                    Defaults to false.
            - repo_http_uri : str
                The URL of the git repository (e.g.,
                https://github.com/organization/repo_name.git).
            - repo_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, a tag, or the full or shortened SHA of a commit. Defaults
                to 'main'.
            - target_database : :class:`civis.Response`
                - remote_host_id : int
                    The remote host ID that this script will connect to.
                - credential_id : int
                    The credential that this script will use.
        """
        ...

    def get_dbt(
        self,
        id: int,
    ) -> _ResponseScriptsGetDbt:
        """Get a dbt Script

        API URL: ``GET /scripts/dbt/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - partition_label : str
                The partition label used to run this object.
            - running_as_id : int
                The ID of the runner of this script.
            - dbt_project : :class:`civis.Response`
                - target : str
                    Which profile target to use. Ignored when used in conjunction with
                    generate_profiles.
                - schema : str
                    The output schema for dbt to use.
                - project_dir : str
                    The path to dbt_project.yml. Defaults to the root of the
                    repository. Generates 'DBT_PROJECT_DIR' environment variable.
                - profiles_dir : str
                    The path to the profiles.yml file to be used by dbt. Ignored when
                    used in conjunction with generate_profiles. Generates
                    'DBT_PROFILES_DIR' environment variable.
                - dbt_version : str
                    The version of dbt to use. Generates 'DBT_VERSION' environment
                    variable.
                - dbt_command : str
                    The primary dbt command to run. Valid commands are build, run,
                    test, compile, and retry.
                - dbt_command_line_args : str
                    Additional command line arguments to pass to dbt. Ignored when dbt
                    retry command is selected.
                - docs_report_id : str
                    The ID of the HTML report hosting the static dbt docs for this job.
                    Updates every time a run succeeds. This report will be
                    automatically shared with all users who are shared on the job.
                - skip_docs_generation : bool
                    Whether to skip dbt docs generation. If true, the linked docs
                    report will not be updated when the script runs. Defaults to false.
                - generate_profiles : bool
                    Whether to generate the profiles.yml file when running the script.
                    Defaults to false.
            - repo_http_uri : str
                The URL of the git repository (e.g.,
                https://github.com/organization/repo_name.git).
            - repo_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, a tag, or the full or shortened SHA of a commit. Defaults
                to 'main'.
            - target_database : :class:`civis.Response`
                - remote_host_id : int
                    The remote host ID that this script will connect to.
                - credential_id : int
                    The credential that this script will use.
        """
        ...

    def put_dbt(
        self,
        id: int,
        name: str,
        repo_http_uri: str,
        *,
        parent_id: int | None = ...,
        user_context: str | None = ...,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        next_run_at: str | None = ...,
        time_zone: str | None = ...,
        target_project_id: int | None = ...,
        required_resources: dict | None = ...,
        instance_type: str | None = ...,
        cancel_timeout: int | None = ...,
        docker_image_tag: str | None = ...,
        partition_label: str | None = ...,
        running_as_id: int | None = ...,
        dbt_project: dict | None = ...,
        repo_ref: str | None = ...,
        target_database: dict | None = ...,
    ) -> _ResponseScriptsPutDbt:
        """Replace all attributes of this dbt Script

        API URL: ``PUT /scripts/dbt/{id}``

        Parameters
        ----------
        id : int
            The ID for the script.
        name : str
            The name of the script.
        repo_http_uri : str
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        user_context : str, optional
            "runner" or "author", who to execute the script as when run as a template.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        next_run_at : str (time), optional
            The time of the next scheduled run.
        time_zone : str, optional
            The time zone of this script.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        required_resources : dict, optional
            - cpu : int
                The number of CPU shares to allocate for the container. Each core has
                1000 shares. Must be at least 2 shares.
            - memory : int
                The amount of RAM to allocate for the container (in MB). Must be at
                least 4 MB.
            - disk_space : float (float)
                The amount of disk space, in GB, to allocate for the container. This
                space will be used to hold the git repo configured for the container
                and anything your container writes to /tmp or /data. Fractional values
                (e.g. 0.25) are supported.
        instance_type : str, optional
            The EC2 instance type to deploy to. Only available for jobs running on
            kubernetes.
        cancel_timeout : int, optional
            The amount of time (in seconds) to wait before forcibly terminating the
            script. When the script is cancelled, it is first sent a TERM signal. If
            the script is still running after the timeout, it is sent a KILL signal.
            Defaults to 0.
        docker_image_tag : str, optional
            The tag of the docker image to pull from DockerHub.
        partition_label : str, optional
            The partition label used to run this object.
        running_as_id : int, optional
            The ID of the runner of this script.
        dbt_project : dict, optional
            - target : str
                Which profile target to use. Ignored when used in conjunction with
                generate_profiles.
            - schema : str
                The output schema for dbt to use.
            - project_dir : str
                The path to dbt_project.yml. Defaults to the root of the repository.
                Generates 'DBT_PROJECT_DIR' environment variable.
            - profiles_dir : str
                The path to the profiles.yml file to be used by dbt. Ignored when used
                in conjunction with generate_profiles. Generates 'DBT_PROFILES_DIR'
                environment variable.
            - dbt_version : str
                The version of dbt to use. Generates 'DBT_VERSION' environment
                variable.
            - dbt_command : str
                The primary dbt command to run. Valid commands are build, run, test,
                compile, and retry.
            - dbt_command_line_args : str
                Additional command line arguments to pass to dbt. Ignored when dbt
                retry command is selected.
            - docs_report_id : str
                The ID of the HTML report hosting the static dbt docs for this job.
                Updates every time a run succeeds. This report will be automatically
                shared with all users who are shared on the job.
            - skip_docs_generation : bool
                Whether to skip dbt docs generation. If true, the linked docs report
                will not be updated when the script runs. Defaults to false.
            - generate_profiles : bool
                Whether to generate the profiles.yml file when running the script.
                Defaults to false.
        repo_ref : str, optional
            A git reference specifying an unambiguous version of the file. Can be a
            branch name, a tag, or the full or shortened SHA of a commit. Defaults to
            'main'.
        target_database : dict, optional
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - partition_label : str
                The partition label used to run this object.
            - running_as_id : int
                The ID of the runner of this script.
            - dbt_project : :class:`civis.Response`
                - target : str
                    Which profile target to use. Ignored when used in conjunction with
                    generate_profiles.
                - schema : str
                    The output schema for dbt to use.
                - project_dir : str
                    The path to dbt_project.yml. Defaults to the root of the
                    repository. Generates 'DBT_PROJECT_DIR' environment variable.
                - profiles_dir : str
                    The path to the profiles.yml file to be used by dbt. Ignored when
                    used in conjunction with generate_profiles. Generates
                    'DBT_PROFILES_DIR' environment variable.
                - dbt_version : str
                    The version of dbt to use. Generates 'DBT_VERSION' environment
                    variable.
                - dbt_command : str
                    The primary dbt command to run. Valid commands are build, run,
                    test, compile, and retry.
                - dbt_command_line_args : str
                    Additional command line arguments to pass to dbt. Ignored when dbt
                    retry command is selected.
                - docs_report_id : str
                    The ID of the HTML report hosting the static dbt docs for this job.
                    Updates every time a run succeeds. This report will be
                    automatically shared with all users who are shared on the job.
                - skip_docs_generation : bool
                    Whether to skip dbt docs generation. If true, the linked docs
                    report will not be updated when the script runs. Defaults to false.
                - generate_profiles : bool
                    Whether to generate the profiles.yml file when running the script.
                    Defaults to false.
            - repo_http_uri : str
                The URL of the git repository (e.g.,
                https://github.com/organization/repo_name.git).
            - repo_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, a tag, or the full or shortened SHA of a commit. Defaults
                to 'main'.
            - target_database : :class:`civis.Response`
                - remote_host_id : int
                    The remote host ID that this script will connect to.
                - credential_id : int
                    The credential that this script will use.
        """
        ...

    def patch_dbt(
        self,
        id: int,
        *,
        name: str | None = ...,
        parent_id: int | None = ...,
        user_context: str | None = ...,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        next_run_at: str | None = ...,
        time_zone: str | None = ...,
        target_project_id: int | None = ...,
        required_resources: dict | None = ...,
        instance_type: str | None = ...,
        cancel_timeout: int | None = ...,
        docker_image_tag: str | None = ...,
        partition_label: str | None = ...,
        running_as_id: int | None = ...,
        dbt_project: dict | None = ...,
        repo_http_uri: str | None = ...,
        repo_ref: str | None = ...,
        target_database: dict | None = ...,
    ) -> _ResponseScriptsPatchDbt:
        """Update some attributes of this dbt Script

        API URL: ``PATCH /scripts/dbt/{id}``

        Parameters
        ----------
        id : int
            The ID for the script.
        name : str, optional
            The name of the script.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        user_context : str, optional
            "runner" or "author", who to execute the script as when run as a template.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        next_run_at : str (time), optional
            The time of the next scheduled run.
        time_zone : str, optional
            The time zone of this script.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        required_resources : dict, optional
            - cpu : int
                The number of CPU shares to allocate for the container. Each core has
                1000 shares. Must be at least 2 shares.
            - memory : int
                The amount of RAM to allocate for the container (in MB). Must be at
                least 4 MB.
            - disk_space : float (float)
                The amount of disk space, in GB, to allocate for the container. This
                space will be used to hold the git repo configured for the container
                and anything your container writes to /tmp or /data. Fractional values
                (e.g. 0.25) are supported.
        instance_type : str, optional
            The EC2 instance type to deploy to. Only available for jobs running on
            kubernetes.
        cancel_timeout : int, optional
            The amount of time (in seconds) to wait before forcibly terminating the
            script. When the script is cancelled, it is first sent a TERM signal. If
            the script is still running after the timeout, it is sent a KILL signal.
            Defaults to 0.
        docker_image_tag : str, optional
            The tag of the docker image to pull from DockerHub.
        partition_label : str, optional
            The partition label used to run this object.
        running_as_id : int, optional
            The ID of the runner of this script.
        dbt_project : dict, optional
            - target : str
                Which profile target to use. Ignored when used in conjunction with
                generate_profiles.
            - schema : str
                The output schema for dbt to use.
            - project_dir : str
                The path to dbt_project.yml. Defaults to the root of the repository.
                Generates 'DBT_PROJECT_DIR' environment variable.
            - profiles_dir : str
                The path to the profiles.yml file to be used by dbt. Ignored when used
                in conjunction with generate_profiles. Generates 'DBT_PROFILES_DIR'
                environment variable.
            - dbt_version : str
                The version of dbt to use. Generates 'DBT_VERSION' environment
                variable.
            - dbt_command : str
                The primary dbt command to run. Valid commands are build, run, test,
                compile, and retry.
            - dbt_command_line_args : str
                Additional command line arguments to pass to dbt. Ignored when dbt
                retry command is selected.
            - docs_report_id : str
                The ID of the HTML report hosting the static dbt docs for this job.
                Updates every time a run succeeds. This report will be automatically
                shared with all users who are shared on the job.
            - skip_docs_generation : bool
                Whether to skip dbt docs generation. If true, the linked docs report
                will not be updated when the script runs. Defaults to false.
            - generate_profiles : bool
                Whether to generate the profiles.yml file when running the script.
                Defaults to false.
        repo_http_uri : str, optional
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        repo_ref : str, optional
            A git reference specifying an unambiguous version of the file. Can be a
            branch name, a tag, or the full or shortened SHA of a commit. Defaults to
            'main'.
        target_database : dict, optional
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - partition_label : str
                The partition label used to run this object.
            - running_as_id : int
                The ID of the runner of this script.
            - dbt_project : :class:`civis.Response`
                - target : str
                    Which profile target to use. Ignored when used in conjunction with
                    generate_profiles.
                - schema : str
                    The output schema for dbt to use.
                - project_dir : str
                    The path to dbt_project.yml. Defaults to the root of the
                    repository. Generates 'DBT_PROJECT_DIR' environment variable.
                - profiles_dir : str
                    The path to the profiles.yml file to be used by dbt. Ignored when
                    used in conjunction with generate_profiles. Generates
                    'DBT_PROFILES_DIR' environment variable.
                - dbt_version : str
                    The version of dbt to use. Generates 'DBT_VERSION' environment
                    variable.
                - dbt_command : str
                    The primary dbt command to run. Valid commands are build, run,
                    test, compile, and retry.
                - dbt_command_line_args : str
                    Additional command line arguments to pass to dbt. Ignored when dbt
                    retry command is selected.
                - docs_report_id : str
                    The ID of the HTML report hosting the static dbt docs for this job.
                    Updates every time a run succeeds. This report will be
                    automatically shared with all users who are shared on the job.
                - skip_docs_generation : bool
                    Whether to skip dbt docs generation. If true, the linked docs
                    report will not be updated when the script runs. Defaults to false.
                - generate_profiles : bool
                    Whether to generate the profiles.yml file when running the script.
                    Defaults to false.
            - repo_http_uri : str
                The URL of the git repository (e.g.,
                https://github.com/organization/repo_name.git).
            - repo_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, a tag, or the full or shortened SHA of a commit. Defaults
                to 'main'.
            - target_database : :class:`civis.Response`
                - remote_host_id : int
                    The remote host ID that this script will connect to.
                - credential_id : int
                    The credential that this script will use.
        """
        ...

    def post_javascript(
        self,
        name: str,
        source: str,
        remote_host_id: int,
        credential_id: int,
        *,
        parent_id: int | None = ...,
        user_context: str | None = ...,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        next_run_at: str | None = ...,
        time_zone: str | None = ...,
        hidden: bool | None = ...,
        target_project_id: int | None = ...,
        running_as_id: int | None = ...,
    ) -> _ResponseScriptsPostJavascript:
        """Create a JavaScript Script

        API URL: ``POST /scripts/javascript``

        Parameters
        ----------
        name : str
            The name of the script.
        source : str
            The body/text of the script.
        remote_host_id : int
            The remote host ID that this script will connect to.
        credential_id : int
            The credential that this script will use.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        user_context : str, optional
            "runner" or "author", who to execute the script as when run as a template.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        next_run_at : str (time), optional
            The time of the next scheduled run.
        time_zone : str, optional
            The time zone of this script.
        hidden : bool, optional
            The hidden status of the item.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        running_as_id : int, optional
            The ID of the runner of this script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - source : str
                The body/text of the script.
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def get_javascript(
        self,
        id: int,
    ) -> _ResponseScriptsGetJavascript:
        """Get a JavaScript Script

        API URL: ``GET /scripts/javascript/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - source : str
                The body/text of the script.
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def put_javascript(
        self,
        id: int,
        name: str,
        source: str,
        remote_host_id: int,
        credential_id: int,
        *,
        parent_id: int | None = ...,
        user_context: str | None = ...,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        next_run_at: str | None = ...,
        time_zone: str | None = ...,
        target_project_id: int | None = ...,
        running_as_id: int | None = ...,
    ) -> _ResponseScriptsPutJavascript:
        """Replace all attributes of this JavaScript Script

        API URL: ``PUT /scripts/javascript/{id}``

        Parameters
        ----------
        id : int
            The ID for the script.
        name : str
            The name of the script.
        source : str
            The body/text of the script.
        remote_host_id : int
            The remote host ID that this script will connect to.
        credential_id : int
            The credential that this script will use.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        user_context : str, optional
            "runner" or "author", who to execute the script as when run as a template.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        next_run_at : str (time), optional
            The time of the next scheduled run.
        time_zone : str, optional
            The time zone of this script.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        running_as_id : int, optional
            The ID of the runner of this script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - source : str
                The body/text of the script.
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def patch_javascript(
        self,
        id: int,
        *,
        name: str | None = ...,
        parent_id: int | None = ...,
        user_context: str | None = ...,
        params: List[dict] | None = ...,
        arguments: dict | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        next_run_at: str | None = ...,
        time_zone: str | None = ...,
        target_project_id: int | None = ...,
        source: str | None = ...,
        remote_host_id: int | None = ...,
        credential_id: int | None = ...,
        running_as_id: int | None = ...,
    ) -> _ResponseScriptsPatchJavascript:
        """Update some attributes of this JavaScript Script

        API URL: ``PATCH /scripts/javascript/{id}``

        Parameters
        ----------
        id : int
            The ID for the script.
        name : str, optional
            The name of the script.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        user_context : str, optional
            "runner" or "author", who to execute the script as when run as a template.
        params : List[dict], optional
            A definition of the parameters this script accepts in the arguments field.

            - name : str
                The variable's name as used within your code.
            - label : str
                The label to present to users when asking them for the value.
            - description : str
                A short sentence or fragment describing this parameter to the end user.
            - type : str
                The type of parameter. Valid options: string, multi_line_string,
                integer, float, bool, file, table, database, credential_aws,
                credential_redshift, or credential_custom
            - required : bool
                Whether this param is required.
            - value : object
                The value you would like to set this param to. Setting this value makes
                this parameter a fixed param.
            - default : str
                If an argument for this parameter is not defined, it will use this
                default value. Use true, True, t, y, yes, or 1 for true bool's or
                false, False, f, n, no, or 0 for false bool's. Cannot be used for
                parameters that are required or a credential type.
            - allowed_values : List[dict]
                The possible values this parameter can take, effectively making this an
                enumerable parameter. Allowed values is an array of hashes of the
                following format: `{label: 'Import', 'value': 'import'}`
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        next_run_at : str (time), optional
            The time of the next scheduled run.
        time_zone : str, optional
            The time zone of this script.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        source : str, optional
            The body/text of the script.
        remote_host_id : int, optional
            The remote host ID that this script will connect to.
        credential_id : int, optional
            The credential that this script will use.
        running_as_id : int, optional
            The ID of the runner of this script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - source : str
                The body/text of the script.
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def list_custom(
        self,
        *,
        from_template_id: str | None = ...,
        author: str | None = ...,
        status: str | None = ...,
        hidden: bool | None = ...,
        archived: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseScriptsListCustom]:
        """List Custom Scripts

        API URL: ``GET /scripts/custom``

        Parameters
        ----------
        from_template_id : str, optional
            If specified, return scripts based on the template with this ID. Specify
            multiple IDs as a comma-separated list.
        author : str, optional
            If specified, return items from any of these authors. It accepts a comma-
            separated list of user IDs.
        status : str, optional
            If specified, returns items with one of these statuses. It accepts a comma-
            separated list, possible values are 'running', 'failed', 'succeeded',
            'idle', 'scheduled'.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.
        archived : str, optional
            The archival status of the requested item(s).
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to updated_at. Must be
            one of: updated_at, name, created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to asc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g Custom)
            - backing_script_type : str
                The type of the script backing this template (e.g Python)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - from_template_id : int
                The ID of the template script.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - archived : str
                The archival status of the requested item(s).
            - last_successful_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
        """
        ...

    def post_custom(
        self,
        from_template_id: int,
        *,
        name: str | None = ...,
        parent_id: int | None = ...,
        arguments: dict | None = ...,
        remote_host_id: int | None = ...,
        credential_id: int | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        time_zone: str | None = ...,
        hidden: bool | None = ...,
        target_project_id: int | None = ...,
        required_resources: dict | None = ...,
        partition_label: str | None = ...,
        running_as_id: int | None = ...,
    ) -> _ResponseScriptsPostCustom:
        """Create a Custom Script

        API URL: ``POST /scripts/custom``

        Parameters
        ----------
        from_template_id : int
            The ID of the template script.
        name : str, optional
            The name of the script.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        remote_host_id : int, optional
            The remote host ID that this script will connect to.
        credential_id : int, optional
            The credential that this script will use.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        time_zone : str, optional
            The time zone of this script.
        hidden : bool, optional
            The hidden status of the item.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        required_resources : dict, optional
            - cpu : int
                The number of CPU shares to allocate for the container. Each core has
                1000 shares.
            - memory : int
                The amount of RAM to allocate for the container (in MB).
            - disk_space : float (float)
                The amount of disk space, in GB, to allocate for the container. This
                space will be used to hold the git repo configured for the container
                and anything your container writes to /tmp or /data. Fractional values
                (e.g. 0.25) are supported.
        partition_label : str, optional
            The partition label used to run this object. Only applicable for jobs using
            Docker.
        running_as_id : int, optional
            The ID of the runner of this script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - from_template_aliases : List[:class:`civis.Response`]
                An array of the aliases of the template script.

                - id : int
                    The id of the Alias object.
                - object_id : int
                    The id of the object
                - alias : str
                    The alias of the object
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g Custom)
            - backing_script_type : str
                The type of the script backing this template (e.g Python)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template script.
            - ui_report_url : int
                The url of the custom HTML.
            - ui_report_id : int
                The id of the report with the custom HTML.
            - ui_report_provide_api_key : bool
                Whether the ui report requests an API Key from the report viewer.
            - template_script_name : str
                The name of the template script.
            - template_note : str
                The template's note.
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.
            - code_preview : str
                The code that this script will run with arguments inserted.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - target_project_id : int
                Target project to which script outputs will be added.
            - last_successful_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB).
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - partition_label : str
                The partition label used to run this object. Only applicable for jobs
                using Docker.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def get_custom(
        self,
        id: int,
    ) -> _ResponseScriptsGetCustom:
        """Get a Custom Script

        API URL: ``GET /scripts/custom/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - from_template_aliases : List[:class:`civis.Response`]
                An array of the aliases of the template script.

                - id : int
                    The id of the Alias object.
                - object_id : int
                    The id of the object
                - alias : str
                    The alias of the object
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g Custom)
            - backing_script_type : str
                The type of the script backing this template (e.g Python)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template script.
            - ui_report_url : int
                The url of the custom HTML.
            - ui_report_id : int
                The id of the report with the custom HTML.
            - ui_report_provide_api_key : bool
                Whether the ui report requests an API Key from the report viewer.
            - template_script_name : str
                The name of the template script.
            - template_note : str
                The template's note.
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.
            - code_preview : str
                The code that this script will run with arguments inserted.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - target_project_id : int
                Target project to which script outputs will be added.
            - last_successful_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB).
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - partition_label : str
                The partition label used to run this object. Only applicable for jobs
                using Docker.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def put_custom(
        self,
        id: int,
        *,
        name: str | None = ...,
        parent_id: int | None = ...,
        arguments: dict | None = ...,
        remote_host_id: int | None = ...,
        credential_id: int | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        time_zone: str | None = ...,
        target_project_id: int | None = ...,
        required_resources: dict | None = ...,
        partition_label: str | None = ...,
        running_as_id: int | None = ...,
    ) -> _ResponseScriptsPutCustom:
        """Replace all attributes of this Custom Script

        API URL: ``PUT /scripts/custom/{id}``

        Parameters
        ----------
        id : int
            The ID for the script.
        name : str, optional
            The name of the script.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        remote_host_id : int, optional
            The remote host ID that this script will connect to.
        credential_id : int, optional
            The credential that this script will use.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        time_zone : str, optional
            The time zone of this script.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        required_resources : dict, optional
            - cpu : int
                The number of CPU shares to allocate for the container. Each core has
                1000 shares.
            - memory : int
                The amount of RAM to allocate for the container (in MB).
            - disk_space : float (float)
                The amount of disk space, in GB, to allocate for the container. This
                space will be used to hold the git repo configured for the container
                and anything your container writes to /tmp or /data. Fractional values
                (e.g. 0.25) are supported.
        partition_label : str, optional
            The partition label used to run this object. Only applicable for jobs using
            Docker.
        running_as_id : int, optional
            The ID of the runner of this script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - from_template_aliases : List[:class:`civis.Response`]
                An array of the aliases of the template script.

                - id : int
                    The id of the Alias object.
                - object_id : int
                    The id of the object
                - alias : str
                    The alias of the object
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g Custom)
            - backing_script_type : str
                The type of the script backing this template (e.g Python)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template script.
            - ui_report_url : int
                The url of the custom HTML.
            - ui_report_id : int
                The id of the report with the custom HTML.
            - ui_report_provide_api_key : bool
                Whether the ui report requests an API Key from the report viewer.
            - template_script_name : str
                The name of the template script.
            - template_note : str
                The template's note.
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.
            - code_preview : str
                The code that this script will run with arguments inserted.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - target_project_id : int
                Target project to which script outputs will be added.
            - last_successful_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB).
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - partition_label : str
                The partition label used to run this object. Only applicable for jobs
                using Docker.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def patch_custom(
        self,
        id: int,
        *,
        name: str | None = ...,
        parent_id: int | None = ...,
        arguments: dict | None = ...,
        remote_host_id: int | None = ...,
        credential_id: int | None = ...,
        schedule: dict | None = ...,
        notifications: dict | None = ...,
        time_zone: str | None = ...,
        target_project_id: int | None = ...,
        required_resources: dict | None = ...,
        partition_label: str | None = ...,
        running_as_id: int | None = ...,
    ) -> _ResponseScriptsPatchCustom:
        """Update some attributes of this Custom Script

        API URL: ``PATCH /scripts/custom/{id}``

        Parameters
        ----------
        id : int
            The ID for the script.
        name : str, optional
            The name of the script.
        parent_id : int, optional
            The ID of the parent job that will trigger this script
        arguments : dict, optional
            Parameter-value pairs to use when running this script. Only settable if
            this script has defined parameters.
        remote_host_id : int, optional
            The remote host ID that this script will connect to.
        credential_id : int, optional
            The credential that this script will use.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - success_email_from_name : str
                Name from which success emails are sent; defaults to "Civis."
            - success_email_reply_to : str
                Address for replies to success emails; defaults to the author of the
                job.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on. Defaults to user's preferences.
            - failure_on : bool
                If failure email notifications are on. Defaults to user's preferences.
        time_zone : str, optional
            The time zone of this script.
        target_project_id : int, optional
            Target project to which script outputs will be added.
        required_resources : dict, optional
            - cpu : int
                The number of CPU shares to allocate for the container. Each core has
                1000 shares.
            - memory : int
                The amount of RAM to allocate for the container (in MB).
            - disk_space : float (float)
                The amount of disk space, in GB, to allocate for the container. This
                space will be used to hold the git repo configured for the container
                and anything your container writes to /tmp or /data. Fractional values
                (e.g. 0.25) are supported.
        partition_label : str, optional
            The partition label used to run this object. Only applicable for jobs using
            Docker.
        running_as_id : int, optional
            The ID of the runner of this script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - from_template_aliases : List[:class:`civis.Response`]
                An array of the aliases of the template script.

                - id : int
                    The id of the Alias object.
                - object_id : int
                    The id of the object
                - alias : str
                    The alias of the object
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g Custom)
            - backing_script_type : str
                The type of the script backing this template (e.g Python)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template script.
            - ui_report_url : int
                The url of the custom HTML.
            - ui_report_id : int
                The id of the report with the custom HTML.
            - ui_report_provide_api_key : bool
                Whether the ui report requests an API Key from the report viewer.
            - template_script_name : str
                The name of the template script.
            - template_note : str
                The template's note.
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.
            - code_preview : str
                The code that this script will run with arguments inserted.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - target_project_id : int
                Target project to which script outputs will be added.
            - last_successful_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB).
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - partition_label : str
                The partition label used to run this object. Only applicable for jobs
                using Docker.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def post_sql_runs(
        self,
        id: int,
    ) -> _ResponseScriptsPostSqlRuns:
        """Start a run

        API URL: ``POST /scripts/sql/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the SQL job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - sql_id : int
                The ID of the SQL job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - output : List[:class:`civis.Response`]
                A list of the outputs of this script.

                - output_name : str
                    The name of the output file.
                - file_id : int
                    The unique ID of the output file.
                - path : str
                    The temporary link to download this output file, valid for 36
                    hours.
            - output_cached_on : str (time)
                The time that the output was originally exported, if a cache entry was
                used by the run.
        """
        ...

    def list_sql_runs(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseScriptsListSqlRuns]:
        """List runs for the given SQL job

        API URL: ``GET /scripts/sql/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the SQL job.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the run.
            - sql_id : int
                The ID of the SQL job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - output : List[:class:`civis.Response`]
                A list of the outputs of this script.

                - output_name : str
                    The name of the output file.
                - file_id : int
                    The unique ID of the output file.
                - path : str
                    The temporary link to download this output file, valid for 36
                    hours.
            - output_cached_on : str (time)
                The time that the output was originally exported, if a cache entry was
                used by the run.
        """
        ...

    def get_sql_runs(
        self,
        id: int,
        run_id: int,
    ) -> _ResponseScriptsGetSqlRuns:
        """Check status of a run

        API URL: ``GET /scripts/sql/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the SQL job.
        run_id : int
            The ID of the run.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - sql_id : int
                The ID of the SQL job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - output : List[:class:`civis.Response`]
                A list of the outputs of this script.

                - output_name : str
                    The name of the output file.
                - file_id : int
                    The unique ID of the output file.
                - path : str
                    The temporary link to download this output file, valid for 36
                    hours.
            - output_cached_on : str (time)
                The time that the output was originally exported, if a cache entry was
                used by the run.
        """
        ...

    def delete_sql_runs(
        self,
        id: int,
        run_id: int,
    ) -> Response:
        """Cancel a run

        API URL: ``DELETE /scripts/sql/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the SQL job.
        run_id : int
            The ID of the run.

        Returns
        -------
        None
            Response code 202: success
        """
        ...

    def patch_sql_runs(
        self,
        id: int,
        run_id: int,
        *,
        error: str | None = ...,
    ) -> Response:
        """Update the given run

        API URL: ``PATCH /scripts/sql/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            ID of the Job
        run_id : int
            ID of the Run
        error : str, optional
            The error message to update

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_sql_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseScriptsListSqlRunsLogs]:
        """Get the logs for a run

        API URL: ``GET /scripts/sql/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the SQL job.
        run_id : int
            The ID of the run.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def post_containers_runs(
        self,
        id: int,
    ) -> _ResponseScriptsPostContainersRuns:
        """Start a run

        API URL: ``POST /scripts/containers/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Container job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - container_id : int
                The ID of the Container job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - max_memory_usage : float (float)
                If the run has finished, the maximum amount of memory used during the
                run, in MB.
            - max_cpu_usage : float (float)
                If the run has finished, the maximum amount of cpu used during the run,
                in millicores.
        """
        ...

    def list_containers_runs(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseScriptsListContainersRuns]:
        """List runs for the given Container job

        API URL: ``GET /scripts/containers/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Container job.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the run.
            - container_id : int
                The ID of the Container job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - max_memory_usage : float (float)
                If the run has finished, the maximum amount of memory used during the
                run, in MB.
            - max_cpu_usage : float (float)
                If the run has finished, the maximum amount of cpu used during the run,
                in millicores.
        """
        ...

    def get_containers_runs(
        self,
        id: int,
        run_id: int,
    ) -> _ResponseScriptsGetContainersRuns:
        """Check status of a run

        API URL: ``GET /scripts/containers/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Container job.
        run_id : int
            The ID of the run.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - container_id : int
                The ID of the Container job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - max_memory_usage : float (float)
                If the run has finished, the maximum amount of memory used during the
                run, in MB.
            - max_cpu_usage : float (float)
                If the run has finished, the maximum amount of cpu used during the run,
                in millicores.
        """
        ...

    def delete_containers_runs(
        self,
        id: int,
        run_id: int,
    ) -> Response:
        """Cancel a run

        API URL: ``DELETE /scripts/containers/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Container job.
        run_id : int
            The ID of the run.

        Returns
        -------
        None
            Response code 202: success
        """
        ...

    def post_python3_runs(
        self,
        id: int,
    ) -> _ResponseScriptsPostPython3Runs:
        """Start a run

        API URL: ``POST /scripts/python3/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Python job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - python_id : int
                The ID of the Python job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - max_memory_usage : float (float)
                If the run has finished, the maximum amount of memory used during the
                run, in MB.
            - max_cpu_usage : float (float)
                If the run has finished, the maximum amount of cpu used during the run,
                in millicores.
        """
        ...

    def list_python3_runs(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseScriptsListPython3Runs]:
        """List runs for the given Python job

        API URL: ``GET /scripts/python3/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Python job.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the run.
            - python_id : int
                The ID of the Python job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - max_memory_usage : float (float)
                If the run has finished, the maximum amount of memory used during the
                run, in MB.
            - max_cpu_usage : float (float)
                If the run has finished, the maximum amount of cpu used during the run,
                in millicores.
        """
        ...

    def get_python3_runs(
        self,
        id: int,
        run_id: int,
    ) -> _ResponseScriptsGetPython3Runs:
        """Check status of a run

        API URL: ``GET /scripts/python3/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Python job.
        run_id : int
            The ID of the run.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - python_id : int
                The ID of the Python job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - max_memory_usage : float (float)
                If the run has finished, the maximum amount of memory used during the
                run, in MB.
            - max_cpu_usage : float (float)
                If the run has finished, the maximum amount of cpu used during the run,
                in millicores.
        """
        ...

    def delete_python3_runs(
        self,
        id: int,
        run_id: int,
    ) -> Response:
        """Cancel a run

        API URL: ``DELETE /scripts/python3/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Python job.
        run_id : int
            The ID of the run.

        Returns
        -------
        None
            Response code 202: success
        """
        ...

    def patch_python3_runs(
        self,
        id: int,
        run_id: int,
        *,
        error: str | None = ...,
    ) -> Response:
        """Update the given run

        API URL: ``PATCH /scripts/python3/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            ID of the Job
        run_id : int
            ID of the Run
        error : str, optional
            The error message to update

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_python3_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseScriptsListPython3RunsLogs]:
        """Get the logs for a run

        API URL: ``GET /scripts/python3/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the Python job.
        run_id : int
            The ID of the run.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def post_r_runs(
        self,
        id: int,
    ) -> _ResponseScriptsPostRRuns:
        """Start a run

        API URL: ``POST /scripts/r/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the R job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - r_id : int
                The ID of the R job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - max_memory_usage : float (float)
                If the run has finished, the maximum amount of memory used during the
                run, in MB.
            - max_cpu_usage : float (float)
                If the run has finished, the maximum amount of cpu used during the run,
                in millicores.
        """
        ...

    def list_r_runs(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseScriptsListRRuns]:
        """List runs for the given R job

        API URL: ``GET /scripts/r/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the R job.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the run.
            - r_id : int
                The ID of the R job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - max_memory_usage : float (float)
                If the run has finished, the maximum amount of memory used during the
                run, in MB.
            - max_cpu_usage : float (float)
                If the run has finished, the maximum amount of cpu used during the run,
                in millicores.
        """
        ...

    def get_r_runs(
        self,
        id: int,
        run_id: int,
    ) -> _ResponseScriptsGetRRuns:
        """Check status of a run

        API URL: ``GET /scripts/r/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the R job.
        run_id : int
            The ID of the run.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - r_id : int
                The ID of the R job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - max_memory_usage : float (float)
                If the run has finished, the maximum amount of memory used during the
                run, in MB.
            - max_cpu_usage : float (float)
                If the run has finished, the maximum amount of cpu used during the run,
                in millicores.
        """
        ...

    def delete_r_runs(
        self,
        id: int,
        run_id: int,
    ) -> Response:
        """Cancel a run

        API URL: ``DELETE /scripts/r/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the R job.
        run_id : int
            The ID of the run.

        Returns
        -------
        None
            Response code 202: success
        """
        ...

    def patch_r_runs(
        self,
        id: int,
        run_id: int,
        *,
        error: str | None = ...,
    ) -> Response:
        """Update the given run

        API URL: ``PATCH /scripts/r/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            ID of the Job
        run_id : int
            ID of the Run
        error : str, optional
            The error message to update

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_r_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseScriptsListRRunsLogs]:
        """Get the logs for a run

        API URL: ``GET /scripts/r/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the R job.
        run_id : int
            The ID of the run.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def post_dbt_runs(
        self,
        id: int,
    ) -> _ResponseScriptsPostDbtRuns:
        """Start a run

        API URL: ``POST /scripts/dbt/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the dbt job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - dbt_id : int
                The ID of the dbt job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - max_memory_usage : float (float)
                If the run has finished, the maximum amount of memory used during the
                run, in MB.
            - max_cpu_usage : float (float)
                If the run has finished, the maximum amount of cpu used during the run,
                in millicores.
        """
        ...

    def list_dbt_runs(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseScriptsListDbtRuns]:
        """List runs for the given dbt job

        API URL: ``GET /scripts/dbt/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the dbt job.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the run.
            - dbt_id : int
                The ID of the dbt job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - max_memory_usage : float (float)
                If the run has finished, the maximum amount of memory used during the
                run, in MB.
            - max_cpu_usage : float (float)
                If the run has finished, the maximum amount of cpu used during the run,
                in millicores.
        """
        ...

    def get_dbt_runs(
        self,
        id: int,
        run_id: int,
    ) -> _ResponseScriptsGetDbtRuns:
        """Check status of a run

        API URL: ``GET /scripts/dbt/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the dbt job.
        run_id : int
            The ID of the run.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - dbt_id : int
                The ID of the dbt job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - max_memory_usage : float (float)
                If the run has finished, the maximum amount of memory used during the
                run, in MB.
            - max_cpu_usage : float (float)
                If the run has finished, the maximum amount of cpu used during the run,
                in millicores.
        """
        ...

    def delete_dbt_runs(
        self,
        id: int,
        run_id: int,
    ) -> Response:
        """Cancel a run

        API URL: ``DELETE /scripts/dbt/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the dbt job.
        run_id : int
            The ID of the run.

        Returns
        -------
        None
            Response code 202: success
        """
        ...

    def patch_dbt_runs(
        self,
        id: int,
        run_id: int,
        *,
        error: str | None = ...,
    ) -> Response:
        """Update the given run

        API URL: ``PATCH /scripts/dbt/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            ID of the Job
        run_id : int
            ID of the Run
        error : str, optional
            The error message to update

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_dbt_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseScriptsListDbtRunsLogs]:
        """Get the logs for a run

        API URL: ``GET /scripts/dbt/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the dbt job.
        run_id : int
            The ID of the run.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def post_javascript_runs(
        self,
        id: int,
    ) -> _ResponseScriptsPostJavascriptRuns:
        """Start a run

        API URL: ``POST /scripts/javascript/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Javascript job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - javascript_id : int
                The ID of the Javascript job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def list_javascript_runs(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseScriptsListJavascriptRuns]:
        """List runs for the given Javascript job

        API URL: ``GET /scripts/javascript/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Javascript job.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the run.
            - javascript_id : int
                The ID of the Javascript job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def get_javascript_runs(
        self,
        id: int,
        run_id: int,
    ) -> _ResponseScriptsGetJavascriptRuns:
        """Check status of a run

        API URL: ``GET /scripts/javascript/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Javascript job.
        run_id : int
            The ID of the run.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - javascript_id : int
                The ID of the Javascript job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
        """
        ...

    def delete_javascript_runs(
        self,
        id: int,
        run_id: int,
    ) -> Response:
        """Cancel a run

        API URL: ``DELETE /scripts/javascript/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Javascript job.
        run_id : int
            The ID of the run.

        Returns
        -------
        None
            Response code 202: success
        """
        ...

    def patch_javascript_runs(
        self,
        id: int,
        run_id: int,
        *,
        error: str | None = ...,
    ) -> Response:
        """Update the given run

        API URL: ``PATCH /scripts/javascript/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            ID of the Job
        run_id : int
            ID of the Run
        error : str, optional
            The error message to update

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_javascript_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseScriptsListJavascriptRunsLogs]:
        """Get the logs for a run

        API URL: ``GET /scripts/javascript/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the Javascript job.
        run_id : int
            The ID of the run.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def post_custom_runs(
        self,
        id: int,
    ) -> _ResponseScriptsPostCustomRuns:
        """Start a run

        API URL: ``POST /scripts/custom/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Custom job.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - custom_id : int
                The ID of the Custom job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - max_memory_usage : float (float)
                If the run has finished, the maximum amount of memory used during the
                run, in MB. Only available if the backing script is a Python, R, or
                container script.
            - max_cpu_usage : float (float)
                If the run has finished, the maximum amount of cpu used during the run,
                in millicores. Only available if the backing script is a Python, R, or
                container script.
        """
        ...

    def list_custom_runs(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseScriptsListCustomRuns]:
        """List runs for the given Custom job

        API URL: ``GET /scripts/custom/{id}/runs``

        Parameters
        ----------
        id : int
            The ID of the Custom job.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 100.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the run.
            - custom_id : int
                The ID of the Custom job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - max_memory_usage : float (float)
                If the run has finished, the maximum amount of memory used during the
                run, in MB. Only available if the backing script is a Python, R, or
                container script.
            - max_cpu_usage : float (float)
                If the run has finished, the maximum amount of cpu used during the run,
                in millicores. Only available if the backing script is a Python, R, or
                container script.
        """
        ...

    def get_custom_runs(
        self,
        id: int,
        run_id: int,
    ) -> _ResponseScriptsGetCustomRuns:
        """Check status of a run

        API URL: ``GET /scripts/custom/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Custom job.
        run_id : int
            The ID of the run.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the run.
            - custom_id : int
                The ID of the Custom job.
            - state : str
                The state of the run, one of 'queued' 'running' 'succeeded' 'failed' or
                'cancelled'.
            - is_cancel_requested : bool
                True if run cancel requested, else false.
            - created_at : str (time)
                The time the run was created.
            - started_at : str (time)
                The time the run started at.
            - finished_at : str (time)
                The time the run completed.
            - error : str
                The error, if any, returned by the run.
            - max_memory_usage : float (float)
                If the run has finished, the maximum amount of memory used during the
                run, in MB. Only available if the backing script is a Python, R, or
                container script.
            - max_cpu_usage : float (float)
                If the run has finished, the maximum amount of cpu used during the run,
                in millicores. Only available if the backing script is a Python, R, or
                container script.
        """
        ...

    def delete_custom_runs(
        self,
        id: int,
        run_id: int,
    ) -> Response:
        """Cancel a run

        API URL: ``DELETE /scripts/custom/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            The ID of the Custom job.
        run_id : int
            The ID of the run.

        Returns
        -------
        None
            Response code 202: success
        """
        ...

    def list_custom_runs_logs(
        self,
        id: int,
        run_id: int,
        *,
        last_id: int | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseScriptsListCustomRunsLogs]:
        """Get the logs for a run

        API URL: ``GET /scripts/custom/{id}/runs/{run_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the Custom job.
        run_id : int
            The ID of the run.
        last_id : int, optional
            The ID of the last log message received. Log entries with this ID value or
            lower will be omitted.Logs are sorted by ID if this value is provided, and
            are otherwise sorted by createdAt.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the log.
            - created_at : str (date-time)
                The time the log was created.
            - message : str
                The log message.
            - level : str
                The level of the log. One of unknown,fatal,error,warn,info,debug.
        """
        ...

    def list_sql_runs_outputs(
        self,
        id: int,
        run_id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseScriptsListSqlRunsOutputs]:
        """List the outputs for a run

        API URL: ``GET /scripts/sql/{id}/runs/{run_id}/outputs``

        Parameters
        ----------
        id : int
            The ID of the sql script.
        run_id : int
            The ID of the run.
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to created_at. Must be
            one of: created_at, id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - object_type : str
                The type of the output. Valid values are File, Table, Report, Project,
                Credential, or JSONValue
            - object_id : int
                The ID of the output.
            - name : str
                The name of the output.
            - link : str
                The hypermedia link to the output.
            - value : object
        """
        ...

    def list_containers_runs_outputs(
        self,
        id: int,
        run_id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseScriptsListContainersRunsOutputs]:
        """List the outputs for a run

        API URL: ``GET /scripts/containers/{id}/runs/{run_id}/outputs``

        Parameters
        ----------
        id : int
            The ID of the container script.
        run_id : int
            The ID of the run.
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to created_at. Must be
            one of: created_at, id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - object_type : str
                The type of the output. Valid values are File, Table, Report, Project,
                Credential, or JSONValue
            - object_id : int
                The ID of the output.
            - name : str
                The name of the output.
            - link : str
                The hypermedia link to the output.
            - value : object
        """
        ...

    def post_containers_runs_outputs(
        self,
        id: int,
        run_id: int,
        object_type: str,
        object_id: int,
    ) -> _ResponseScriptsPostContainersRunsOutputs:
        """Add an output for a run

        API URL: ``POST /scripts/containers/{id}/runs/{run_id}/outputs``

        Parameters
        ----------
        id : int
            The ID of the container script.
        run_id : int
            The ID of the run.
        object_type : str
            The type of the output. Valid values are File, Table, Report, Project,
            Credential, or JSONValue
        object_id : int
            The ID of the output.

        Returns
        -------
        :class:`civis.Response`
            - object_type : str
                The type of the output. Valid values are File, Table, Report, Project,
                Credential, or JSONValue
            - object_id : int
                The ID of the output.
            - name : str
                The name of the output.
            - link : str
                The hypermedia link to the output.
            - value : object
        """
        ...

    def list_python3_runs_outputs(
        self,
        id: int,
        run_id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseScriptsListPython3RunsOutputs]:
        """List the outputs for a run

        API URL: ``GET /scripts/python3/{id}/runs/{run_id}/outputs``

        Parameters
        ----------
        id : int
            The ID of the python script.
        run_id : int
            The ID of the run.
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to created_at. Must be
            one of: created_at, id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - object_type : str
                The type of the output. Valid values are File, Table, Report, Project,
                Credential, or JSONValue
            - object_id : int
                The ID of the output.
            - name : str
                The name of the output.
            - link : str
                The hypermedia link to the output.
            - value : object
        """
        ...

    def post_python3_runs_outputs(
        self,
        id: int,
        run_id: int,
        object_type: str,
        object_id: int,
    ) -> _ResponseScriptsPostPython3RunsOutputs:
        """Add an output for a run

        API URL: ``POST /scripts/python3/{id}/runs/{run_id}/outputs``

        Parameters
        ----------
        id : int
            The ID of the python script.
        run_id : int
            The ID of the run.
        object_type : str
            The type of the output. Valid values are File, Table, Report, Project,
            Credential, or JSONValue
        object_id : int
            The ID of the output.

        Returns
        -------
        :class:`civis.Response`
            - object_type : str
                The type of the output. Valid values are File, Table, Report, Project,
                Credential, or JSONValue
            - object_id : int
                The ID of the output.
            - name : str
                The name of the output.
            - link : str
                The hypermedia link to the output.
            - value : object
        """
        ...

    def list_r_runs_outputs(
        self,
        id: int,
        run_id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseScriptsListRRunsOutputs]:
        """List the outputs for a run

        API URL: ``GET /scripts/r/{id}/runs/{run_id}/outputs``

        Parameters
        ----------
        id : int
            The ID of the r script.
        run_id : int
            The ID of the run.
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to created_at. Must be
            one of: created_at, id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - object_type : str
                The type of the output. Valid values are File, Table, Report, Project,
                Credential, or JSONValue
            - object_id : int
                The ID of the output.
            - name : str
                The name of the output.
            - link : str
                The hypermedia link to the output.
            - value : object
        """
        ...

    def post_r_runs_outputs(
        self,
        id: int,
        run_id: int,
        object_type: str,
        object_id: int,
    ) -> _ResponseScriptsPostRRunsOutputs:
        """Add an output for a run

        API URL: ``POST /scripts/r/{id}/runs/{run_id}/outputs``

        Parameters
        ----------
        id : int
            The ID of the r script.
        run_id : int
            The ID of the run.
        object_type : str
            The type of the output. Valid values are File, Table, Report, Project,
            Credential, or JSONValue
        object_id : int
            The ID of the output.

        Returns
        -------
        :class:`civis.Response`
            - object_type : str
                The type of the output. Valid values are File, Table, Report, Project,
                Credential, or JSONValue
            - object_id : int
                The ID of the output.
            - name : str
                The name of the output.
            - link : str
                The hypermedia link to the output.
            - value : object
        """
        ...

    def list_dbt_runs_outputs(
        self,
        id: int,
        run_id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseScriptsListDbtRunsOutputs]:
        """List the outputs for a run

        API URL: ``GET /scripts/dbt/{id}/runs/{run_id}/outputs``

        Parameters
        ----------
        id : int
            The ID of the dbt script.
        run_id : int
            The ID of the run.
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to created_at. Must be
            one of: created_at, id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - object_type : str
                The type of the output. Valid values are File, Table, Report, Project,
                Credential, or JSONValue
            - object_id : int
                The ID of the output.
            - name : str
                The name of the output.
            - link : str
                The hypermedia link to the output.
            - value : object
        """
        ...

    def post_dbt_runs_outputs(
        self,
        id: int,
        run_id: int,
        object_type: str,
        object_id: int,
    ) -> _ResponseScriptsPostDbtRunsOutputs:
        """Add an output for a run

        API URL: ``POST /scripts/dbt/{id}/runs/{run_id}/outputs``

        Parameters
        ----------
        id : int
            The ID of the dbt script.
        run_id : int
            The ID of the run.
        object_type : str
            The type of the output. Valid values are File, Table, Report, Project,
            Credential, or JSONValue
        object_id : int
            The ID of the output.

        Returns
        -------
        :class:`civis.Response`
            - object_type : str
                The type of the output. Valid values are File, Table, Report, Project,
                Credential, or JSONValue
            - object_id : int
                The ID of the output.
            - name : str
                The name of the output.
            - link : str
                The hypermedia link to the output.
            - value : object
        """
        ...

    def list_javascript_runs_outputs(
        self,
        id: int,
        run_id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseScriptsListJavascriptRunsOutputs]:
        """List the outputs for a run

        API URL: ``GET /scripts/javascript/{id}/runs/{run_id}/outputs``

        Parameters
        ----------
        id : int
            The ID of the javascript script.
        run_id : int
            The ID of the run.
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to created_at. Must be
            one of: created_at, id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - object_type : str
                The type of the output. Valid values are File, Table, Report, Project,
                Credential, or JSONValue
            - object_id : int
                The ID of the output.
            - name : str
                The name of the output.
            - link : str
                The hypermedia link to the output.
            - value : object
        """
        ...

    def post_javascript_runs_outputs(
        self,
        id: int,
        run_id: int,
        object_type: str,
        object_id: int,
    ) -> _ResponseScriptsPostJavascriptRunsOutputs:
        """Add an output for a run

        API URL: ``POST /scripts/javascript/{id}/runs/{run_id}/outputs``

        Parameters
        ----------
        id : int
            The ID of the javascript script.
        run_id : int
            The ID of the run.
        object_type : str
            The type of the output. Valid values are File, Table, Report, Project,
            Credential, or JSONValue
        object_id : int
            The ID of the output.

        Returns
        -------
        :class:`civis.Response`
            - object_type : str
                The type of the output. Valid values are File, Table, Report, Project,
                Credential, or JSONValue
            - object_id : int
                The ID of the output.
            - name : str
                The name of the output.
            - link : str
                The hypermedia link to the output.
            - value : object
        """
        ...

    def list_custom_runs_outputs(
        self,
        id: int,
        run_id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseScriptsListCustomRunsOutputs]:
        """List the outputs for a run

        API URL: ``GET /scripts/custom/{id}/runs/{run_id}/outputs``

        Parameters
        ----------
        id : int
            The ID of the custom script.
        run_id : int
            The ID of the run.
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to created_at. Must be
            one of: created_at, id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - object_type : str
                The type of the output. Valid values are File, Table, Report, Project,
                Credential, or JSONValue
            - object_id : int
                The ID of the output.
            - name : str
                The name of the output.
            - link : str
                The hypermedia link to the output.
            - value : object
        """
        ...

    def post_custom_runs_outputs(
        self,
        id: int,
        run_id: int,
        object_type: str,
        object_id: int,
    ) -> _ResponseScriptsPostCustomRunsOutputs:
        """Add an output for a run

        API URL: ``POST /scripts/custom/{id}/runs/{run_id}/outputs``

        Parameters
        ----------
        id : int
            The ID of the custom script.
        run_id : int
            The ID of the run.
        object_type : str
            The type of the output. Valid values are File, Table, Report, Project,
            Credential, or JSONValue
        object_id : int
            The ID of the output.

        Returns
        -------
        :class:`civis.Response`
            - object_type : str
                The type of the output. Valid values are File, Table, Report, Project,
                Credential, or JSONValue
            - object_id : int
                The ID of the output.
            - name : str
                The name of the output.
            - link : str
                The hypermedia link to the output.
            - value : object
        """
        ...

    def patch_container_runs(
        self,
        id: int,
        run_id: int,
        *,
        error: str | None = ...,
    ) -> Response:
        """Update the given run

        API URL: ``PATCH /scripts/container/{id}/runs/{run_id}``

        Parameters
        ----------
        id : int
            ID of the Job
        run_id : int
            ID of the Run
        error : str, optional
            The error message to update

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_sql_git(
        self,
        id: int,
    ) -> List[_ResponseScriptsListSqlGit]:
        """Get the git metadata attached to an item

        API URL: ``GET /scripts/sql/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.ListResponse`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def put_sql_git(
        self,
        id: int,
        *,
        git_ref: str | None = ...,
        git_branch: str | None = ...,
        git_path: str | None = ...,
        git_repo_url: str | None = ...,
        git_ref_type: str | None = ...,
        pull_from_git: bool | None = ...,
    ) -> _ResponseScriptsPutSqlGit:
        """Attach an item to a file in a git repo

        API URL: ``PUT /scripts/sql/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.
        git_ref : str, optional
            A git reference specifying an unambiguous version of the file. Can be a
            branch name, or the full or shortened SHA of a commit.
        git_branch : str, optional
            The git branch that the file is on.
        git_path : str, optional
            The path of the file in the repository.
        git_repo_url : str, optional
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        git_ref_type : str, optional
            Specifies if the file is versioned by branch or tag.
        pull_from_git : bool, optional
            Automatically pull latest commit from git. Only works for scripts.

        Returns
        -------
        :class:`civis.Response`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def patch_sql_git(
        self,
        id: int,
        *,
        git_ref: str | None = ...,
        git_branch: str | None = ...,
        git_path: str | None = ...,
        git_repo_url: str | None = ...,
        git_ref_type: str | None = ...,
        pull_from_git: bool | None = ...,
    ) -> _ResponseScriptsPatchSqlGit:
        """Update an attached git file

        API URL: ``PATCH /scripts/sql/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.
        git_ref : str, optional
            A git reference specifying an unambiguous version of the file. Can be a
            branch name, or the full or shortened SHA of a commit.
        git_branch : str, optional
            The git branch that the file is on.
        git_path : str, optional
            The path of the file in the repository.
        git_repo_url : str, optional
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        git_ref_type : str, optional
            Specifies if the file is versioned by branch or tag.
        pull_from_git : bool, optional
            Automatically pull latest commit from git. Only works for scripts.

        Returns
        -------
        :class:`civis.Response`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def list_sql_git_commits(
        self,
        id: int,
    ) -> List[_ResponseScriptsListSqlGitCommits]:
        """Get the git commits for an item on the current branch

        API URL: ``GET /scripts/sql/{id}/git/commits``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.ListResponse`
            - commit_hash : str
                The SHA of the commit.
            - author_name : str
                The name of the commit's author.
            - date : str (time)
                The commit's timestamp.
            - message : str
                The commit message.
        """
        ...

    def post_sql_git_commits(
        self,
        id: int,
        content: str,
        message: str,
        file_hash: str,
    ) -> _ResponseScriptsPostSqlGitCommits:
        """Commit and push a new version of the file

        API URL: ``POST /scripts/sql/{id}/git/commits``

        Parameters
        ----------
        id : int
            The ID of the item.
        content : str
            The contents to commit to the file.
        message : str
            A commit message describing the changes being made.
        file_hash : str
            The full SHA of the file being replaced.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def get_sql_git_commits(
        self,
        id: int,
        commit_hash: str,
    ) -> _ResponseScriptsGetSqlGitCommits:
        """Get file contents at git ref

        API URL: ``GET /scripts/sql/{id}/git/commits/{commit_hash}``

        Parameters
        ----------
        id : int
            The ID of the item.
        commit_hash : str
            The SHA (full or shortened) of the desired git commit.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def post_sql_git_checkout_latest(
        self,
        id: int,
    ) -> _ResponseScriptsPostSqlGitCheckoutLatest:
        """Checkout latest commit on the current branch of a script or workflow

        API URL: ``POST /scripts/sql/{id}/git/checkout-latest``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def post_sql_git_checkout(
        self,
        id: int,
    ) -> _ResponseScriptsPostSqlGitCheckout:
        """Checkout content that the existing git_ref points to and save to the object

        API URL: ``POST /scripts/sql/{id}/git/checkout``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def list_javascript_git(
        self,
        id: int,
    ) -> List[_ResponseScriptsListJavascriptGit]:
        """Get the git metadata attached to an item

        API URL: ``GET /scripts/javascript/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.ListResponse`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def put_javascript_git(
        self,
        id: int,
        *,
        git_ref: str | None = ...,
        git_branch: str | None = ...,
        git_path: str | None = ...,
        git_repo_url: str | None = ...,
        git_ref_type: str | None = ...,
        pull_from_git: bool | None = ...,
    ) -> _ResponseScriptsPutJavascriptGit:
        """Attach an item to a file in a git repo

        API URL: ``PUT /scripts/javascript/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.
        git_ref : str, optional
            A git reference specifying an unambiguous version of the file. Can be a
            branch name, or the full or shortened SHA of a commit.
        git_branch : str, optional
            The git branch that the file is on.
        git_path : str, optional
            The path of the file in the repository.
        git_repo_url : str, optional
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        git_ref_type : str, optional
            Specifies if the file is versioned by branch or tag.
        pull_from_git : bool, optional
            Automatically pull latest commit from git. Only works for scripts.

        Returns
        -------
        :class:`civis.Response`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def patch_javascript_git(
        self,
        id: int,
        *,
        git_ref: str | None = ...,
        git_branch: str | None = ...,
        git_path: str | None = ...,
        git_repo_url: str | None = ...,
        git_ref_type: str | None = ...,
        pull_from_git: bool | None = ...,
    ) -> _ResponseScriptsPatchJavascriptGit:
        """Update an attached git file

        API URL: ``PATCH /scripts/javascript/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.
        git_ref : str, optional
            A git reference specifying an unambiguous version of the file. Can be a
            branch name, or the full or shortened SHA of a commit.
        git_branch : str, optional
            The git branch that the file is on.
        git_path : str, optional
            The path of the file in the repository.
        git_repo_url : str, optional
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        git_ref_type : str, optional
            Specifies if the file is versioned by branch or tag.
        pull_from_git : bool, optional
            Automatically pull latest commit from git. Only works for scripts.

        Returns
        -------
        :class:`civis.Response`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def list_javascript_git_commits(
        self,
        id: int,
    ) -> List[_ResponseScriptsListJavascriptGitCommits]:
        """Get the git commits for an item on the current branch

        API URL: ``GET /scripts/javascript/{id}/git/commits``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.ListResponse`
            - commit_hash : str
                The SHA of the commit.
            - author_name : str
                The name of the commit's author.
            - date : str (time)
                The commit's timestamp.
            - message : str
                The commit message.
        """
        ...

    def post_javascript_git_commits(
        self,
        id: int,
        content: str,
        message: str,
        file_hash: str,
    ) -> _ResponseScriptsPostJavascriptGitCommits:
        """Commit and push a new version of the file

        API URL: ``POST /scripts/javascript/{id}/git/commits``

        Parameters
        ----------
        id : int
            The ID of the item.
        content : str
            The contents to commit to the file.
        message : str
            A commit message describing the changes being made.
        file_hash : str
            The full SHA of the file being replaced.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def get_javascript_git_commits(
        self,
        id: int,
        commit_hash: str,
    ) -> _ResponseScriptsGetJavascriptGitCommits:
        """Get file contents at git ref

        API URL: ``GET /scripts/javascript/{id}/git/commits/{commit_hash}``

        Parameters
        ----------
        id : int
            The ID of the item.
        commit_hash : str
            The SHA (full or shortened) of the desired git commit.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def post_javascript_git_checkout_latest(
        self,
        id: int,
    ) -> _ResponseScriptsPostJavascriptGitCheckoutLatest:
        """Checkout latest commit on the current branch of a script or workflow

        API URL: ``POST /scripts/javascript/{id}/git/checkout-latest``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def post_javascript_git_checkout(
        self,
        id: int,
    ) -> _ResponseScriptsPostJavascriptGitCheckout:
        """Checkout content that the existing git_ref points to and save to the object

        API URL: ``POST /scripts/javascript/{id}/git/checkout``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def list_python3_git(
        self,
        id: int,
    ) -> List[_ResponseScriptsListPython3Git]:
        """Get the git metadata attached to an item

        API URL: ``GET /scripts/python3/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.ListResponse`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def put_python3_git(
        self,
        id: int,
        *,
        git_ref: str | None = ...,
        git_branch: str | None = ...,
        git_path: str | None = ...,
        git_repo_url: str | None = ...,
        git_ref_type: str | None = ...,
        pull_from_git: bool | None = ...,
    ) -> _ResponseScriptsPutPython3Git:
        """Attach an item to a file in a git repo

        API URL: ``PUT /scripts/python3/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.
        git_ref : str, optional
            A git reference specifying an unambiguous version of the file. Can be a
            branch name, or the full or shortened SHA of a commit.
        git_branch : str, optional
            The git branch that the file is on.
        git_path : str, optional
            The path of the file in the repository.
        git_repo_url : str, optional
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        git_ref_type : str, optional
            Specifies if the file is versioned by branch or tag.
        pull_from_git : bool, optional
            Automatically pull latest commit from git. Only works for scripts.

        Returns
        -------
        :class:`civis.Response`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def patch_python3_git(
        self,
        id: int,
        *,
        git_ref: str | None = ...,
        git_branch: str | None = ...,
        git_path: str | None = ...,
        git_repo_url: str | None = ...,
        git_ref_type: str | None = ...,
        pull_from_git: bool | None = ...,
    ) -> _ResponseScriptsPatchPython3Git:
        """Update an attached git file

        API URL: ``PATCH /scripts/python3/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.
        git_ref : str, optional
            A git reference specifying an unambiguous version of the file. Can be a
            branch name, or the full or shortened SHA of a commit.
        git_branch : str, optional
            The git branch that the file is on.
        git_path : str, optional
            The path of the file in the repository.
        git_repo_url : str, optional
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        git_ref_type : str, optional
            Specifies if the file is versioned by branch or tag.
        pull_from_git : bool, optional
            Automatically pull latest commit from git. Only works for scripts.

        Returns
        -------
        :class:`civis.Response`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def list_python3_git_commits(
        self,
        id: int,
    ) -> List[_ResponseScriptsListPython3GitCommits]:
        """Get the git commits for an item on the current branch

        API URL: ``GET /scripts/python3/{id}/git/commits``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.ListResponse`
            - commit_hash : str
                The SHA of the commit.
            - author_name : str
                The name of the commit's author.
            - date : str (time)
                The commit's timestamp.
            - message : str
                The commit message.
        """
        ...

    def post_python3_git_commits(
        self,
        id: int,
        content: str,
        message: str,
        file_hash: str,
    ) -> _ResponseScriptsPostPython3GitCommits:
        """Commit and push a new version of the file

        API URL: ``POST /scripts/python3/{id}/git/commits``

        Parameters
        ----------
        id : int
            The ID of the item.
        content : str
            The contents to commit to the file.
        message : str
            A commit message describing the changes being made.
        file_hash : str
            The full SHA of the file being replaced.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def get_python3_git_commits(
        self,
        id: int,
        commit_hash: str,
    ) -> _ResponseScriptsGetPython3GitCommits:
        """Get file contents at git ref

        API URL: ``GET /scripts/python3/{id}/git/commits/{commit_hash}``

        Parameters
        ----------
        id : int
            The ID of the item.
        commit_hash : str
            The SHA (full or shortened) of the desired git commit.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def post_python3_git_checkout_latest(
        self,
        id: int,
    ) -> _ResponseScriptsPostPython3GitCheckoutLatest:
        """Checkout latest commit on the current branch of a script or workflow

        API URL: ``POST /scripts/python3/{id}/git/checkout-latest``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def post_python3_git_checkout(
        self,
        id: int,
    ) -> _ResponseScriptsPostPython3GitCheckout:
        """Checkout content that the existing git_ref points to and save to the object

        API URL: ``POST /scripts/python3/{id}/git/checkout``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def list_r_git(
        self,
        id: int,
    ) -> List[_ResponseScriptsListRGit]:
        """Get the git metadata attached to an item

        API URL: ``GET /scripts/r/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.ListResponse`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def put_r_git(
        self,
        id: int,
        *,
        git_ref: str | None = ...,
        git_branch: str | None = ...,
        git_path: str | None = ...,
        git_repo_url: str | None = ...,
        git_ref_type: str | None = ...,
        pull_from_git: bool | None = ...,
    ) -> _ResponseScriptsPutRGit:
        """Attach an item to a file in a git repo

        API URL: ``PUT /scripts/r/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.
        git_ref : str, optional
            A git reference specifying an unambiguous version of the file. Can be a
            branch name, or the full or shortened SHA of a commit.
        git_branch : str, optional
            The git branch that the file is on.
        git_path : str, optional
            The path of the file in the repository.
        git_repo_url : str, optional
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        git_ref_type : str, optional
            Specifies if the file is versioned by branch or tag.
        pull_from_git : bool, optional
            Automatically pull latest commit from git. Only works for scripts.

        Returns
        -------
        :class:`civis.Response`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def patch_r_git(
        self,
        id: int,
        *,
        git_ref: str | None = ...,
        git_branch: str | None = ...,
        git_path: str | None = ...,
        git_repo_url: str | None = ...,
        git_ref_type: str | None = ...,
        pull_from_git: bool | None = ...,
    ) -> _ResponseScriptsPatchRGit:
        """Update an attached git file

        API URL: ``PATCH /scripts/r/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.
        git_ref : str, optional
            A git reference specifying an unambiguous version of the file. Can be a
            branch name, or the full or shortened SHA of a commit.
        git_branch : str, optional
            The git branch that the file is on.
        git_path : str, optional
            The path of the file in the repository.
        git_repo_url : str, optional
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        git_ref_type : str, optional
            Specifies if the file is versioned by branch or tag.
        pull_from_git : bool, optional
            Automatically pull latest commit from git. Only works for scripts.

        Returns
        -------
        :class:`civis.Response`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def list_r_git_commits(
        self,
        id: int,
    ) -> List[_ResponseScriptsListRGitCommits]:
        """Get the git commits for an item on the current branch

        API URL: ``GET /scripts/r/{id}/git/commits``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.ListResponse`
            - commit_hash : str
                The SHA of the commit.
            - author_name : str
                The name of the commit's author.
            - date : str (time)
                The commit's timestamp.
            - message : str
                The commit message.
        """
        ...

    def post_r_git_commits(
        self,
        id: int,
        content: str,
        message: str,
        file_hash: str,
    ) -> _ResponseScriptsPostRGitCommits:
        """Commit and push a new version of the file

        API URL: ``POST /scripts/r/{id}/git/commits``

        Parameters
        ----------
        id : int
            The ID of the item.
        content : str
            The contents to commit to the file.
        message : str
            A commit message describing the changes being made.
        file_hash : str
            The full SHA of the file being replaced.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def get_r_git_commits(
        self,
        id: int,
        commit_hash: str,
    ) -> _ResponseScriptsGetRGitCommits:
        """Get file contents at git ref

        API URL: ``GET /scripts/r/{id}/git/commits/{commit_hash}``

        Parameters
        ----------
        id : int
            The ID of the item.
        commit_hash : str
            The SHA (full or shortened) of the desired git commit.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def post_r_git_checkout_latest(
        self,
        id: int,
    ) -> _ResponseScriptsPostRGitCheckoutLatest:
        """Checkout latest commit on the current branch of a script or workflow

        API URL: ``POST /scripts/r/{id}/git/checkout-latest``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def post_r_git_checkout(
        self,
        id: int,
    ) -> _ResponseScriptsPostRGitCheckout:
        """Checkout content that the existing git_ref points to and save to the object

        API URL: ``POST /scripts/r/{id}/git/checkout``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def list_sql_shares(
        self,
        id: int,
    ) -> List[_ResponseScriptsListSqlShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /scripts/sql/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_sql_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseScriptsPutSqlSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /scripts/sql/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_sql_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /scripts/sql/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_sql_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseScriptsPutSqlSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /scripts/sql/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_sql_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /scripts/sql/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_sql_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseScriptsListSqlDependencies]:
        """List dependent objects for this object

        API URL: ``GET /scripts/sql/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_sql_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseScriptsPutSqlTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /scripts/sql/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list_sql_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseScriptsListSqlProjects]:
        """List the projects a SQL Script belongs to

        API URL: ``GET /scripts/sql/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the SQL Script.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_sql_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a SQL Script to a project

        API URL: ``PUT /scripts/sql/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the SQL Script.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_sql_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a SQL Script from a project

        API URL: ``DELETE /scripts/sql/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the SQL Script.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_sql_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseScriptsPutSqlArchive:
        """Update the archive status of this object

        API URL: ``PUT /scripts/sql/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - sql : str
                The raw SQL query for the script.
            - expanded_arguments : :class:`civis.Response`
                Expanded arguments for use in injecting into different environments.
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.
            - code_preview : str
                The code that this script will run with arguments inserted.
            - csv_settings : :class:`civis.Response`
                - include_header : bool
                    Whether or not to include headers in the output data. Default: true
                - compression : str
                    The type of compression to use, if any, one of "none", "zip", or
                    "gzip". Default: gzip
                - column_delimiter : str
                    Which delimiter to use, one of "comma", "tab", or "pipe". Default:
                    comma
                - unquoted : bool
                    Whether or not to quote fields. Default: false
                - force_multifile : bool
                    Whether or not the csv should be split into multiple files.
                    Default: false
                - filename_prefix : str
                    A user specified filename prefix for the output file to have.
                    Default: null
                - max_file_size : int
                    The max file size, in MB, created files will be. Only available
                    when force_multifile is true.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def list_containers_shares(
        self,
        id: int,
    ) -> List[_ResponseScriptsListContainersShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /scripts/containers/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_containers_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseScriptsPutContainersSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /scripts/containers/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_containers_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /scripts/containers/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_containers_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseScriptsPutContainersSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /scripts/containers/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_containers_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /scripts/containers/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_containers_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseScriptsListContainersDependencies]:
        """List dependent objects for this object

        API URL: ``GET /scripts/containers/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_containers_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseScriptsPutContainersTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /scripts/containers/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list_containers_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseScriptsListContainersProjects]:
        """List the projects a Container Script belongs to

        API URL: ``GET /scripts/containers/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the Container Script.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_containers_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a Container Script to a project

        API URL: ``PUT /scripts/containers/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Container Script.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_containers_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a Container Script from a project

        API URL: ``DELETE /scripts/containers/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Container Script.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_containers_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseScriptsPutContainersArchive:
        """Update the archive status of this object

        API URL: ``PUT /scripts/containers/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - from_template_aliases : List[:class:`civis.Response`]
                An array of the aliases of the template script.

                - id : int
                    The id of the Alias object.
                - object_id : int
                    The id of the object
                - alias : str
                    The alias of the object
            - name : str
                The name of the container.
            - type : str
                The type of the script (e.g Container)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template script.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - repo_http_uri : str
                The location of a github repo to clone into the container, e.g.
                github.com/my-user/my-repo.git.
            - repo_ref : str
                The tag or branch of the github repo to clone into the container.
            - remote_host_credential_id : int
                The id of the database credentials to pass into the environment of the
                container.
            - git_credential_id : int
                The id of the git credential to be used when checking out the specified
                git repo. If not supplied, the first git credential you've submitted
                will be used. Unnecessary if no git repo is specified or the git repo
                is public.
            - docker_command : str
                The command to run on the container. Will be run via sh as: ["sh",
                "-c", dockerCommand]. Defaults to the Docker image's ENTRYPOINT/CMD.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - time_zone : str
                The time zone of this script.
            - partition_label : str
                The partition label used to run this object.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - target_project_id : int
                Target project to which script outputs will be added.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def list_python3_shares(
        self,
        id: int,
    ) -> List[_ResponseScriptsListPython3Shares]:
        """List users and groups permissioned on this object

        API URL: ``GET /scripts/python3/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_python3_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseScriptsPutPython3SharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /scripts/python3/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_python3_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /scripts/python3/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_python3_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseScriptsPutPython3SharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /scripts/python3/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_python3_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /scripts/python3/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_python3_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseScriptsListPython3Dependencies]:
        """List dependent objects for this object

        API URL: ``GET /scripts/python3/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_python3_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseScriptsPutPython3Transfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /scripts/python3/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list_python3_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseScriptsListPython3Projects]:
        """List the projects a Python Script belongs to

        API URL: ``GET /scripts/python3/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the Python Script.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_python3_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a Python Script to a project

        API URL: ``PUT /scripts/python3/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Python Script.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_python3_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a Python Script from a project

        API URL: ``DELETE /scripts/python3/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Python Script.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_python3_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseScriptsPutPython3Archive:
        """Update the archive status of this object

        API URL: ``PUT /scripts/python3/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - partition_label : str
                The partition label used to run this object.
            - running_as_id : int
                The ID of the runner of this script.
            - source : str
                The body/text of the script.
        """
        ...

    def list_r_shares(
        self,
        id: int,
    ) -> List[_ResponseScriptsListRShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /scripts/r/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_r_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseScriptsPutRSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /scripts/r/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_r_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /scripts/r/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_r_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseScriptsPutRSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /scripts/r/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_r_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /scripts/r/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_r_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseScriptsListRDependencies]:
        """List dependent objects for this object

        API URL: ``GET /scripts/r/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_r_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseScriptsPutRTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /scripts/r/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list_r_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseScriptsListRProjects]:
        """List the projects an R Script belongs to

        API URL: ``GET /scripts/r/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the R Script.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_r_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add an R Script to a project

        API URL: ``PUT /scripts/r/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the R Script.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_r_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove an R Script from a project

        API URL: ``DELETE /scripts/r/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the R Script.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_r_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseScriptsPutRArchive:
        """Update the archive status of this object

        API URL: ``PUT /scripts/r/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - partition_label : str
                The partition label used to run this object.
            - running_as_id : int
                The ID of the runner of this script.
            - source : str
                The body/text of the script.
        """
        ...

    def list_dbt_shares(
        self,
        id: int,
    ) -> List[_ResponseScriptsListDbtShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /scripts/dbt/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_dbt_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseScriptsPutDbtSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /scripts/dbt/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_dbt_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /scripts/dbt/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_dbt_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseScriptsPutDbtSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /scripts/dbt/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_dbt_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /scripts/dbt/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_dbt_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseScriptsListDbtDependencies]:
        """List dependent objects for this object

        API URL: ``GET /scripts/dbt/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_dbt_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseScriptsPutDbtTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /scripts/dbt/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list_dbt_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseScriptsListDbtProjects]:
        """List the projects a dbt Script belongs to

        API URL: ``GET /scripts/dbt/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the dbt Script.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_dbt_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a dbt Script to a project

        API URL: ``PUT /scripts/dbt/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the dbt Script.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_dbt_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a dbt Script from a project

        API URL: ``DELETE /scripts/dbt/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the dbt Script.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_dbt_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseScriptsPutDbtArchive:
        """Update the archive status of this object

        API URL: ``PUT /scripts/dbt/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - partition_label : str
                The partition label used to run this object.
            - running_as_id : int
                The ID of the runner of this script.
            - dbt_project : :class:`civis.Response`
                - target : str
                    Which profile target to use. Ignored when used in conjunction with
                    generate_profiles.
                - schema : str
                    The output schema for dbt to use.
                - project_dir : str
                    The path to dbt_project.yml. Defaults to the root of the
                    repository. Generates 'DBT_PROJECT_DIR' environment variable.
                - profiles_dir : str
                    The path to the profiles.yml file to be used by dbt. Ignored when
                    used in conjunction with generate_profiles. Generates
                    'DBT_PROFILES_DIR' environment variable.
                - dbt_version : str
                    The version of dbt to use. Generates 'DBT_VERSION' environment
                    variable.
                - dbt_command : str
                    The primary dbt command to run. Valid commands are build, run,
                    test, compile, and retry.
                - dbt_command_line_args : str
                    Additional command line arguments to pass to dbt. Ignored when dbt
                    retry command is selected.
                - docs_report_id : str
                    The ID of the HTML report hosting the static dbt docs for this job.
                    Updates every time a run succeeds. This report will be
                    automatically shared with all users who are shared on the job.
                - skip_docs_generation : bool
                    Whether to skip dbt docs generation. If true, the linked docs
                    report will not be updated when the script runs. Defaults to false.
                - generate_profiles : bool
                    Whether to generate the profiles.yml file when running the script.
                    Defaults to false.
            - repo_http_uri : str
                The URL of the git repository (e.g.,
                https://github.com/organization/repo_name.git).
            - repo_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, a tag, or the full or shortened SHA of a commit. Defaults
                to 'main'.
            - target_database : :class:`civis.Response`
                - remote_host_id : int
                    The remote host ID that this script will connect to.
                - credential_id : int
                    The credential that this script will use.
        """
        ...

    def list_javascript_shares(
        self,
        id: int,
    ) -> List[_ResponseScriptsListJavascriptShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /scripts/javascript/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_javascript_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseScriptsPutJavascriptSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /scripts/javascript/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_javascript_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /scripts/javascript/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_javascript_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseScriptsPutJavascriptSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /scripts/javascript/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_javascript_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /scripts/javascript/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_javascript_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseScriptsListJavascriptDependencies]:
        """List dependent objects for this object

        API URL: ``GET /scripts/javascript/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_javascript_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseScriptsPutJavascriptTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /scripts/javascript/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list_javascript_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseScriptsListJavascriptProjects]:
        """List the projects a JavaScript Script belongs to

        API URL: ``GET /scripts/javascript/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the JavaScript Script.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_javascript_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a JavaScript Script to a project

        API URL: ``PUT /scripts/javascript/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the JavaScript Script.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_javascript_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a JavaScript Script from a project

        API URL: ``DELETE /scripts/javascript/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the JavaScript Script.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_javascript_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseScriptsPutJavascriptArchive:
        """Update the archive status of this object

        API URL: ``PUT /scripts/javascript/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - source : str
                The body/text of the script.
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def list_custom_shares(
        self,
        id: int,
    ) -> List[_ResponseScriptsListCustomShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /scripts/custom/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_custom_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseScriptsPutCustomSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /scripts/custom/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_custom_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /scripts/custom/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_custom_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseScriptsPutCustomSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /scripts/custom/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_custom_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /scripts/custom/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_custom_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseScriptsListCustomDependencies]:
        """List dependent objects for this object

        API URL: ``GET /scripts/custom/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_custom_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseScriptsPutCustomTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /scripts/custom/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list_custom_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseScriptsListCustomProjects]:
        """List the projects a Custom Script belongs to

        API URL: ``GET /scripts/custom/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the Custom Script.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_custom_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a Custom Script to a project

        API URL: ``PUT /scripts/custom/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Custom Script.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_custom_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a Custom Script from a project

        API URL: ``DELETE /scripts/custom/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Custom Script.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_custom_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseScriptsPutCustomArchive:
        """Update the archive status of this object

        API URL: ``PUT /scripts/custom/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - from_template_aliases : List[:class:`civis.Response`]
                An array of the aliases of the template script.

                - id : int
                    The id of the Alias object.
                - object_id : int
                    The id of the object
                - alias : str
                    The alias of the object
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g Custom)
            - backing_script_type : str
                The type of the script backing this template (e.g Python)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template script.
            - ui_report_url : int
                The url of the custom HTML.
            - ui_report_id : int
                The id of the report with the custom HTML.
            - ui_report_provide_api_key : bool
                Whether the ui report requests an API Key from the report viewer.
            - template_script_name : str
                The name of the template script.
            - template_note : str
                The template's note.
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.
            - code_preview : str
                The code that this script will run with arguments inserted.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - target_project_id : int
                Target project to which script outputs will be added.
            - last_successful_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB).
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - partition_label : str
                The partition label used to run this object. Only applicable for jobs
                using Docker.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def post_sql_clone(
        self,
        id: int,
        *,
        clone_schedule: bool | None = ...,
        clone_triggers: bool | None = ...,
        clone_notifications: bool | None = ...,
    ) -> _ResponseScriptsPostSqlClone:
        """Clone this SQL Script

        API URL: ``POST /scripts/sql/{id}/clone``

        Parameters
        ----------
        id : int
            The ID for the script.
        clone_schedule : bool, optional
            If true, also copy the schedule to the new script.
        clone_triggers : bool, optional
            If true, also copy the triggers to the new script.
        clone_notifications : bool, optional
            If true, also copy the notifications to the new script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - sql : str
                The raw SQL query for the script.
            - expanded_arguments : :class:`civis.Response`
                Expanded arguments for use in injecting into different environments.
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.
            - code_preview : str
                The code that this script will run with arguments inserted.
            - csv_settings : :class:`civis.Response`
                - include_header : bool
                    Whether or not to include headers in the output data. Default: true
                - compression : str
                    The type of compression to use, if any, one of "none", "zip", or
                    "gzip". Default: gzip
                - column_delimiter : str
                    Which delimiter to use, one of "comma", "tab", or "pipe". Default:
                    comma
                - unquoted : bool
                    Whether or not to quote fields. Default: false
                - force_multifile : bool
                    Whether or not the csv should be split into multiple files.
                    Default: false
                - filename_prefix : str
                    A user specified filename prefix for the output file to have.
                    Default: null
                - max_file_size : int
                    The max file size, in MB, created files will be. Only available
                    when force_multifile is true.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def post_javascript_clone(
        self,
        id: int,
        *,
        clone_schedule: bool | None = ...,
        clone_triggers: bool | None = ...,
        clone_notifications: bool | None = ...,
    ) -> _ResponseScriptsPostJavascriptClone:
        """Clone this JavaScript Script

        API URL: ``POST /scripts/javascript/{id}/clone``

        Parameters
        ----------
        id : int
            The ID for the script.
        clone_schedule : bool, optional
            If true, also copy the schedule to the new script.
        clone_triggers : bool, optional
            If true, also copy the triggers to the new script.
        clone_notifications : bool, optional
            If true, also copy the notifications to the new script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - source : str
                The body/text of the script.
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def post_python3_clone(
        self,
        id: int,
        *,
        clone_schedule: bool | None = ...,
        clone_triggers: bool | None = ...,
        clone_notifications: bool | None = ...,
    ) -> _ResponseScriptsPostPython3Clone:
        """Clone this Python Script

        API URL: ``POST /scripts/python3/{id}/clone``

        Parameters
        ----------
        id : int
            The ID for the script.
        clone_schedule : bool, optional
            If true, also copy the schedule to the new script.
        clone_triggers : bool, optional
            If true, also copy the triggers to the new script.
        clone_notifications : bool, optional
            If true, also copy the notifications to the new script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - partition_label : str
                The partition label used to run this object.
            - running_as_id : int
                The ID of the runner of this script.
            - source : str
                The body/text of the script.
        """
        ...

    def post_r_clone(
        self,
        id: int,
        *,
        clone_schedule: bool | None = ...,
        clone_triggers: bool | None = ...,
        clone_notifications: bool | None = ...,
    ) -> _ResponseScriptsPostRClone:
        """Clone this R Script

        API URL: ``POST /scripts/r/{id}/clone``

        Parameters
        ----------
        id : int
            The ID for the script.
        clone_schedule : bool, optional
            If true, also copy the schedule to the new script.
        clone_triggers : bool, optional
            If true, also copy the triggers to the new script.
        clone_notifications : bool, optional
            If true, also copy the notifications to the new script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - partition_label : str
                The partition label used to run this object.
            - running_as_id : int
                The ID of the runner of this script.
            - source : str
                The body/text of the script.
        """
        ...

    def post_containers_clone(
        self,
        id: int,
        *,
        clone_schedule: bool | None = ...,
        clone_triggers: bool | None = ...,
        clone_notifications: bool | None = ...,
    ) -> _ResponseScriptsPostContainersClone:
        """Clone this Container Script

        API URL: ``POST /scripts/containers/{id}/clone``

        Parameters
        ----------
        id : int
            The ID for the script.
        clone_schedule : bool, optional
            If true, also copy the schedule to the new script.
        clone_triggers : bool, optional
            If true, also copy the triggers to the new script.
        clone_notifications : bool, optional
            If true, also copy the notifications to the new script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - from_template_aliases : List[:class:`civis.Response`]
                An array of the aliases of the template script.

                - id : int
                    The id of the Alias object.
                - object_id : int
                    The id of the object
                - alias : str
                    The alias of the object
            - name : str
                The name of the container.
            - type : str
                The type of the script (e.g Container)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template script.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - repo_http_uri : str
                The location of a github repo to clone into the container, e.g.
                github.com/my-user/my-repo.git.
            - repo_ref : str
                The tag or branch of the github repo to clone into the container.
            - remote_host_credential_id : int
                The id of the database credentials to pass into the environment of the
                container.
            - git_credential_id : int
                The id of the git credential to be used when checking out the specified
                git repo. If not supplied, the first git credential you've submitted
                will be used. Unnecessary if no git repo is specified or the git repo
                is public.
            - docker_command : str
                The command to run on the container. Will be run via sh as: ["sh",
                "-c", dockerCommand]. Defaults to the Docker image's ENTRYPOINT/CMD.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - time_zone : str
                The time zone of this script.
            - partition_label : str
                The partition label used to run this object.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - target_project_id : int
                Target project to which script outputs will be added.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

    def post_dbt_clone(
        self,
        id: int,
        *,
        clone_schedule: bool | None = ...,
        clone_triggers: bool | None = ...,
        clone_notifications: bool | None = ...,
    ) -> _ResponseScriptsPostDbtClone:
        """Clone this dbt Script

        API URL: ``POST /scripts/dbt/{id}/clone``

        Parameters
        ----------
        id : int
            The ID for the script.
        clone_schedule : bool, optional
            If true, also copy the schedule to the new script.
        clone_triggers : bool, optional
            If true, also copy the triggers to the new script.
        clone_notifications : bool, optional
            If true, also copy the notifications to the new script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g SQL, Container, Python, R, JavaScript, dbt)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
                The category of the script.
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - user_context : str
                "runner" or "author", who to execute the script as when run as a
                template.
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template this script uses, if any.
            - template_dependents_count : int
                How many other scripts use this one as a template.
            - template_script_name : str
                The name of the template script.
            - links : :class:`civis.Response`
                - details : str
                    The details link to get more information about the script.
                - runs : str
                    The runs link to get the run information list for this script.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - next_run_at : str (time)
                The time of the next scheduled run.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - target_project_id : int
                Target project to which script outputs will be added.
            - archived : str
                The archival status of the requested item(s).
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares. Must be at least 2 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB). Must be at
                    least 4 MB.
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - instance_type : str
                The EC2 instance type to deploy to. Only available for jobs running on
                kubernetes.
            - cancel_timeout : int
                The amount of time (in seconds) to wait before forcibly terminating the
                script. When the script is cancelled, it is first sent a TERM signal.
                If the script is still running after the timeout, it is sent a KILL
                signal. Defaults to 0.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub.
            - partition_label : str
                The partition label used to run this object.
            - running_as_id : int
                The ID of the runner of this script.
            - dbt_project : :class:`civis.Response`
                - target : str
                    Which profile target to use. Ignored when used in conjunction with
                    generate_profiles.
                - schema : str
                    The output schema for dbt to use.
                - project_dir : str
                    The path to dbt_project.yml. Defaults to the root of the
                    repository. Generates 'DBT_PROJECT_DIR' environment variable.
                - profiles_dir : str
                    The path to the profiles.yml file to be used by dbt. Ignored when
                    used in conjunction with generate_profiles. Generates
                    'DBT_PROFILES_DIR' environment variable.
                - dbt_version : str
                    The version of dbt to use. Generates 'DBT_VERSION' environment
                    variable.
                - dbt_command : str
                    The primary dbt command to run. Valid commands are build, run,
                    test, compile, and retry.
                - dbt_command_line_args : str
                    Additional command line arguments to pass to dbt. Ignored when dbt
                    retry command is selected.
                - docs_report_id : str
                    The ID of the HTML report hosting the static dbt docs for this job.
                    Updates every time a run succeeds. This report will be
                    automatically shared with all users who are shared on the job.
                - skip_docs_generation : bool
                    Whether to skip dbt docs generation. If true, the linked docs
                    report will not be updated when the script runs. Defaults to false.
                - generate_profiles : bool
                    Whether to generate the profiles.yml file when running the script.
                    Defaults to false.
            - repo_http_uri : str
                The URL of the git repository (e.g.,
                https://github.com/organization/repo_name.git).
            - repo_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, a tag, or the full or shortened SHA of a commit. Defaults
                to 'main'.
            - target_database : :class:`civis.Response`
                - remote_host_id : int
                    The remote host ID that this script will connect to.
                - credential_id : int
                    The credential that this script will use.
        """
        ...

    def post_custom_clone(
        self,
        id: int,
        *,
        clone_schedule: bool | None = ...,
        clone_triggers: bool | None = ...,
        clone_notifications: bool | None = ...,
    ) -> _ResponseScriptsPostCustomClone:
        """Clone this Custom Script

        API URL: ``POST /scripts/custom/{id}/clone``

        Parameters
        ----------
        id : int
            The ID for the script.
        clone_schedule : bool, optional
            If true, also copy the schedule to the new script.
        clone_triggers : bool, optional
            If true, also copy the triggers to the new script.
        clone_notifications : bool, optional
            If true, also copy the notifications to the new script.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the script.
            - from_template_aliases : List[:class:`civis.Response`]
                An array of the aliases of the template script.

                - id : int
                    The id of the Alias object.
                - object_id : int
                    The id of the object
                - alias : str
                    The alias of the object
            - name : str
                The name of the script.
            - type : str
                The type of the script (e.g Custom)
            - backing_script_type : str
                The type of the script backing this template (e.g Python)
            - created_at : str (time)
                The time this script was created.
            - updated_at : str (time)
                The time the script was last updated.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The status of the script's last run.
            - finished_at : str (time)
                The time that the script's last run finished.
            - category : str
            - projects : List[:class:`civis.Response`]
                A list of projects containing the script.

                - id : int
                    The ID for the project.
                - name : str
                    The name of the project.
            - parent_id : int
                The ID of the parent job that will trigger this script
            - params : List[:class:`civis.Response`]
                A definition of the parameters this script accepts in the arguments
                field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - arguments : :class:`civis.Response`
                Parameter-value pairs to use when running this script. Only settable if
                this script has defined parameters.
            - is_template : bool
                Whether others scripts use this one as a template.
            - published_as_template_id : int
                The ID of the template that this script is backing.
            - from_template_id : int
                The ID of the template script.
            - ui_report_url : int
                The url of the custom HTML.
            - ui_report_id : int
                The id of the report with the custom HTML.
            - ui_report_provide_api_key : bool
                Whether the ui report requests an API Key from the report viewer.
            - template_script_name : str
                The name of the template script.
            - template_note : str
                The template's note.
            - remote_host_id : int
                The remote host ID that this script will connect to.
            - credential_id : int
                The credential that this script will use.
            - code_preview : str
                The code that this script will run with arguments inserted.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - success_email_from_name : str
                    Name from which success emails are sent; defaults to "Civis."
                - success_email_reply_to : str
                    Address for replies to success emails; defaults to the author of
                    the job.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on. Defaults to user's
                    preferences.
                - failure_on : bool
                    If failure email notifications are on. Defaults to user's
                    preferences.
            - running_as : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - time_zone : str
                The time zone of this script.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - hidden : bool
                The hidden status of the item.
            - archived : str
                The archival status of the requested item(s).
            - target_project_id : int
                Target project to which script outputs will be added.
            - last_successful_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - required_resources : :class:`civis.Response`
                - cpu : int
                    The number of CPU shares to allocate for the container. Each core
                    has 1000 shares.
                - memory : int
                    The amount of RAM to allocate for the container (in MB).
                - disk_space : float (float)
                    The amount of disk space, in GB, to allocate for the container.
                    This space will be used to hold the git repo configured for the
                    container and anything your container writes to /tmp or /data.
                    Fractional values (e.g. 0.25) are supported.
            - partition_label : str
                The partition label used to run this object. Only applicable for jobs
                using Docker.
            - running_as_id : int
                The ID of the runner of this script.
        """
        ...

class _Search:
    def list(
        self,
        *,
        query: str | None = ...,
        type: str | None = ...,
        offset: int | None = ...,
        order: str | None = ...,
        owner: str | None = ...,
        limit: int | None = ...,
        archived: str | None = ...,
        last_run_state: str | None = ...,
    ) -> List[_ResponseSearchList]:
        """Perform a search

        API URL: ``GET /search``

        Parameters
        ----------
        query : str, optional
            The search query.
        type : str, optional
            The type for the search. It accepts a comma-separated list. Valid arguments
            are listed on the "GET /search/types" endpoint.
        offset : int, optional
            The offset for the search results.
        order : str, optional
            The field on which to order the result set.
        owner : str, optional
            The owner for the search.
        limit : int, optional
            Defaults to 10. Maximum allowed is 1000.
        archived : str, optional
            If specified, return only results with the chosen archived status; either
            'true', 'false', or 'all'. Defaults to 'false'.
        last_run_state : str, optional
            The last run state of the job being searched for; either: 'queued',
            'running', 'succeeded', 'failed', or 'cancelled'.

        Returns
        -------
        :class:`civis.ListResponse`
            - total_results : int
                The number of items matching the search query.
            - aggregations : :class:`civis.Response`
                Aggregations by owner and type for the search results.
            - results : List[:class:`civis.Response`]
                The items returned by the search.

                - score : float (float)
                    The relevance score from the search request.
                - type : str
                    The type of the item.
                - id : int
                    The ID of the item.
                - name : str
                    The name of the item.
                - type_name : str
                    The verbose name of the type.
                - updated_at : str (time)
                    The time the item was last updated.
                - owner : str
                    The owner of the item.
                - use_count : int
                    The use count of the item, if the item is a template.
                - last_run_id : int
                    The last run id of the item, if the item is a job.
                - last_run_state : str
                    The last run state of the item, if the item is a job.
                - last_run_start : str (time)
                    The last run start time of the item, if the item is a job.
                - last_run_finish : str (time)
                    The last run finish time of the item, if the item is a job.
                - public : bool
                    The flag that indicates a template is available to all users.
                - last_run_exception : str
                    The exception of the item after the last run, if the item is a job.
                - auto_share : bool
                    The flag that indicates if a project has Auto-Share enabled.
        """
        ...

    def list_types(
        self,
    ) -> List[_ResponseSearchListTypes]:
        """List available search types

        API URL: ``GET /search/types``

        Returns
        -------
        :class:`civis.ListResponse`
            - type : str
                The name of the item type.
        """
        ...

    def list_queries(
        self,
        *,
        search_string: str | None = ...,
        database_id: int | None = ...,
        credential_id: int | None = ...,
        author_id: int | None = ...,
        archived: bool | None = ...,
        state: List[str] | None = ...,
        started_before: str | None = ...,
        started_after: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseSearchListQueries]:
        """Search queries that are not hidden

        API URL: ``GET /search/queries``

        Parameters
        ----------
        search_string : str, optional
            Space delimited search terms for searching queries by their SQL. Supports
            wild card characters "?" for any single character, and "*" for zero or more
            characters.
        database_id : int, optional
            The database ID.
        credential_id : int, optional
            The credential ID.
        author_id : int, optional
            The author of the query.
        archived : bool, optional
            The archival status of the requested item(s). Defaults to false.
        state : List[str], optional
            The state of the last run. One or more of queued, running, succeeded,
            failed, and cancelled.
        started_before : str, optional
            An upper bound for the start date of the last run.
        started_after : str, optional
            A lower bound for the start date of the last run.
        limit : int, optional
            Number of results to return. Defaults to 10. Maximum allowed is 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to
            last_run_started_at. Must be one of: last_run_started_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The query ID.
            - database : int
                The database ID.
            - credential : int
                The credential ID.
            - sql : str
                The SQL executed by the query.
            - author_id : int
                The author of the query.
            - archived : bool
                The archival status of the requested item(s).
            - created_at : str (time)
            - updated_at : str (time)
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                    The state of the run. One of queued, running, succeeded, failed,
                    and cancelled.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
        """
        ...

class _Services:
    def list(
        self,
        *,
        hidden: bool | None = ...,
        archived: str | None = ...,
        author: str | None = ...,
        status: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseServicesList]:
        """List Services

        API URL: ``GET /services``

        Parameters
        ----------
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.
        archived : str, optional
            The archival status of the requested item(s).
        author : str, optional
            If specified, return items from any of these authors. It accepts a comma-
            separated list of user IDs.
        status : str, optional
            If specified, returns Services with one of these statuses. It accepts a
            comma-separated list, possible values are 'running', 'idle'.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to updated_at. Must be
            one of: updated_at, name, created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID for this Service.
            - name : str
                The name of this Service.
            - description : str
                The description of this Service.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - type : str
                The type of this Service
            - created_at : str (time)
            - updated_at : str (time)
            - git_repo_url : str
                The url for the git repo where the Service code lives.
            - git_repo_ref : str
                The git reference to use when pulling code from the repo.
            - git_path_dir : str
                The path to the Service code within the git repo. If unspecified, the
                root directory will be used.
            - current_deployment : :class:`civis.Response`
                - deployment_id : int
                    The ID for this deployment.
                - user_id : int
                    The ID of the owner.
                - host : str
                    Domain of the deployment.
                - name : str
                    Name of the deployment.
                - docker_image_name : str
                    The name of the docker image to pull from DockerHub.
                - docker_image_tag : str
                    The tag of the docker image to pull from DockerHub (default:
                    latest).
                - instance_type : str
                    The EC2 instance type requested for the deployment.
                - memory : int
                    The memory allocated to the deployment, in MB.
                - cpu : int
                    The cpu allocated to the deployment, in millicores.
                - state : str
                    The state of the deployment.
                - state_message : str
                    A detailed description of the state.
                - max_memory_usage : float (float)
                    If the deployment has finished, the maximum amount of memory used
                    during the deployment, in MB.
                - max_cpu_usage : float (float)
                    If the deployment has finished, the maximum amount of cpu used
                    during the deployment, in millicores.
                - created_at : str (time)
                - updated_at : str (time)
                - service_id : int
                    The ID of owning Service
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def post(
        self,
        *,
        name: str | None = ...,
        description: str | None = ...,
        type: str | None = ...,
        docker_image_name: str | None = ...,
        docker_image_tag: str | None = ...,
        schedule: dict | None = ...,
        replicas: int | None = ...,
        max_replicas: int | None = ...,
        instance_type: str | None = ...,
        memory: int | None = ...,
        cpu: int | None = ...,
        credentials: List[int] | None = ...,
        permission_set_id: int | None = ...,
        git_repo_url: str | None = ...,
        git_repo_ref: str | None = ...,
        git_path_dir: str | None = ...,
        environment_variables: dict | None = ...,
        notifications: dict | None = ...,
        partition_label: str | None = ...,
        hidden: bool | None = ...,
    ) -> _ResponseServicesPost:
        """Create a Service

        API URL: ``POST /services``

        Parameters
        ----------
        name : str, optional
            The name of this Service.
        description : str, optional
            The description of this Service.
        type : str, optional
            The type of this Service
        docker_image_name : str, optional
            The name of the docker image to pull from DockerHub.
        docker_image_tag : str, optional
            The tag of the docker image to pull from DockerHub (default: latest).
        schedule : dict, optional
            - runtime_plan : str
                Only affects the service when deployed. On Demand means that the
                service will be turned on when viewed and automatically turned off
                after periods of inactivity.  Specific Times means the service will be
                on when scheduled. Always On means the deployed service will always be
                on.
            - recurrences : List[dict]
                List of day-hour combinations this item is scheduled for

                - scheduled_days : List[int]
                    Days it is scheduled on, based on numeric value starting at 0 for
                    Sunday
                - scheduled_hours : List[int]
                    Hours it is scheduled on
        replicas : int, optional
            The number of Service replicas to deploy. When maxReplicas is set,
            this field defines the minimum number of replicas to deploy.
        max_replicas : int, optional
            The maximum number of Service replicas to deploy. Defining this field
            enables autoscaling.
        instance_type : str, optional
            The EC2 instance type to deploy to.
        memory : int, optional
            The amount of memory allocated to each replica of the Service.
        cpu : int, optional
            The amount of cpu allocated to each replica of the the Service.
        credentials : List[int], optional
            A list of credential IDs to pass to the Service.
        permission_set_id : int, optional
            The ID of the associated permission set, if any.
        git_repo_url : str, optional
            The url for the git repo where the Service code lives.
        git_repo_ref : str, optional
            The git reference to use when pulling code from the repo.
        git_path_dir : str, optional
            The path to the Service code within the git repo. If unspecified, the root
            directory will be used.
        environment_variables : dict, optional
            Environment Variables to be passed into the Service.
        notifications : dict, optional
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the service fails.
            - failure_on : bool
                If failure email notifications are on
        partition_label : str, optional
            The partition label used to run this object.
        hidden : bool, optional
            The hidden status of the item.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this Service.
            - name : str
                The name of this Service.
            - description : str
                The description of this Service.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - type : str
                The type of this Service
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - schedule : :class:`civis.Response`
                - runtime_plan : str
                    Only affects the service when deployed. On Demand means that the
                    service will be turned on when viewed and automatically turned off
                    after periods of inactivity.  Specific Times means the service will
                    be on when scheduled. Always On means the deployed service will
                    always be on.
                - recurrences : List[:class:`civis.Response`]
                    List of day-hour combinations this item is scheduled for

                    - scheduled_days : List[int]
                        Days it is scheduled on, based on numeric value starting at 0
                        for Sunday
                    - scheduled_hours : List[int]
                        Hours it is scheduled on
            - time_zone : str
            - replicas : int
                The number of Service replicas to deploy. When maxReplicas is set,
                this field defines the minimum number of replicas to deploy.
            - max_replicas : int
                The maximum number of Service replicas to deploy. Defining this field
                enables autoscaling.
            - instance_type : str
                The EC2 instance type to deploy to.
            - memory : int
                The amount of memory allocated to each replica of the Service.
            - cpu : int
                The amount of cpu allocated to each replica of the the Service.
            - created_at : str (time)
            - updated_at : str (time)
            - credentials : List[int]
                A list of credential IDs to pass to the Service.
            - permission_set_id : int
                The ID of the associated permission set, if any.
            - git_repo_url : str
                The url for the git repo where the Service code lives.
            - git_repo_ref : str
                The git reference to use when pulling code from the repo.
            - git_path_dir : str
                The path to the Service code within the git repo. If unspecified, the
                root directory will be used.
            - report_id : int
                The ID of the associated report.
            - current_deployment : :class:`civis.Response`
                - deployment_id : int
                    The ID for this deployment.
                - user_id : int
                    The ID of the owner.
                - host : str
                    Domain of the deployment.
                - name : str
                    Name of the deployment.
                - docker_image_name : str
                    The name of the docker image to pull from DockerHub.
                - docker_image_tag : str
                    The tag of the docker image to pull from DockerHub (default:
                    latest).
                - display_url : str
                    A signed URL for viewing the deployed item.
                - instance_type : str
                    The EC2 instance type requested for the deployment.
                - memory : int
                    The memory allocated to the deployment, in MB.
                - cpu : int
                    The cpu allocated to the deployment, in millicores.
                - state : str
                    The state of the deployment.
                - state_message : str
                    A detailed description of the state.
                - max_memory_usage : float (float)
                    If the deployment has finished, the maximum amount of memory used
                    during the deployment, in MB.
                - max_cpu_usage : float (float)
                    If the deployment has finished, the maximum amount of cpu used
                    during the deployment, in millicores.
                - created_at : str (time)
                - updated_at : str (time)
                - service_id : int
                    The ID of owning Service
            - current_url : str
                The URL that the service is hosted at.
            - environment_variables : :class:`civis.Response`
                Environment Variables to be passed into the Service.
            - notifications : :class:`civis.Response`
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the service fails.
                - failure_on : bool
                    If failure email notifications are on
            - partition_label : str
                The partition label used to run this object.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseServicesGet:
        """Get a Service

        API URL: ``GET /services/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this Service.
            - name : str
                The name of this Service.
            - description : str
                The description of this Service.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - type : str
                The type of this Service
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - schedule : :class:`civis.Response`
                - runtime_plan : str
                    Only affects the service when deployed. On Demand means that the
                    service will be turned on when viewed and automatically turned off
                    after periods of inactivity.  Specific Times means the service will
                    be on when scheduled. Always On means the deployed service will
                    always be on.
                - recurrences : List[:class:`civis.Response`]
                    List of day-hour combinations this item is scheduled for

                    - scheduled_days : List[int]
                        Days it is scheduled on, based on numeric value starting at 0
                        for Sunday
                    - scheduled_hours : List[int]
                        Hours it is scheduled on
            - time_zone : str
            - replicas : int
                The number of Service replicas to deploy. When maxReplicas is set,
                this field defines the minimum number of replicas to deploy.
            - max_replicas : int
                The maximum number of Service replicas to deploy. Defining this field
                enables autoscaling.
            - instance_type : str
                The EC2 instance type to deploy to.
            - memory : int
                The amount of memory allocated to each replica of the Service.
            - cpu : int
                The amount of cpu allocated to each replica of the the Service.
            - created_at : str (time)
            - updated_at : str (time)
            - credentials : List[int]
                A list of credential IDs to pass to the Service.
            - permission_set_id : int
                The ID of the associated permission set, if any.
            - git_repo_url : str
                The url for the git repo where the Service code lives.
            - git_repo_ref : str
                The git reference to use when pulling code from the repo.
            - git_path_dir : str
                The path to the Service code within the git repo. If unspecified, the
                root directory will be used.
            - report_id : int
                The ID of the associated report.
            - current_deployment : :class:`civis.Response`
                - deployment_id : int
                    The ID for this deployment.
                - user_id : int
                    The ID of the owner.
                - host : str
                    Domain of the deployment.
                - name : str
                    Name of the deployment.
                - docker_image_name : str
                    The name of the docker image to pull from DockerHub.
                - docker_image_tag : str
                    The tag of the docker image to pull from DockerHub (default:
                    latest).
                - display_url : str
                    A signed URL for viewing the deployed item.
                - instance_type : str
                    The EC2 instance type requested for the deployment.
                - memory : int
                    The memory allocated to the deployment, in MB.
                - cpu : int
                    The cpu allocated to the deployment, in millicores.
                - state : str
                    The state of the deployment.
                - state_message : str
                    A detailed description of the state.
                - max_memory_usage : float (float)
                    If the deployment has finished, the maximum amount of memory used
                    during the deployment, in MB.
                - max_cpu_usage : float (float)
                    If the deployment has finished, the maximum amount of cpu used
                    during the deployment, in millicores.
                - created_at : str (time)
                - updated_at : str (time)
                - service_id : int
                    The ID of owning Service
            - current_url : str
                The URL that the service is hosted at.
            - environment_variables : :class:`civis.Response`
                Environment Variables to be passed into the Service.
            - notifications : :class:`civis.Response`
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the service fails.
                - failure_on : bool
                    If failure email notifications are on
            - partition_label : str
                The partition label used to run this object.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def put(
        self,
        id: int,
        *,
        name: str | None = ...,
        description: str | None = ...,
        docker_image_name: str | None = ...,
        docker_image_tag: str | None = ...,
        schedule: dict | None = ...,
        replicas: int | None = ...,
        max_replicas: int | None = ...,
        instance_type: str | None = ...,
        memory: int | None = ...,
        cpu: int | None = ...,
        credentials: List[int] | None = ...,
        permission_set_id: int | None = ...,
        git_repo_url: str | None = ...,
        git_repo_ref: str | None = ...,
        git_path_dir: str | None = ...,
        environment_variables: dict | None = ...,
        notifications: dict | None = ...,
        partition_label: str | None = ...,
    ) -> _ResponseServicesPut:
        """Replace all attributes of this Service

        API URL: ``PUT /services/{id}``

        Parameters
        ----------
        id : int
            The ID for this Service.
        name : str, optional
            The name of this Service.
        description : str, optional
            The description of this Service.
        docker_image_name : str, optional
            The name of the docker image to pull from DockerHub.
        docker_image_tag : str, optional
            The tag of the docker image to pull from DockerHub (default: latest).
        schedule : dict, optional
            - runtime_plan : str
                Only affects the service when deployed. On Demand means that the
                service will be turned on when viewed and automatically turned off
                after periods of inactivity.  Specific Times means the service will be
                on when scheduled. Always On means the deployed service will always be
                on.
            - recurrences : List[dict]
                List of day-hour combinations this item is scheduled for

                - scheduled_days : List[int]
                    Days it is scheduled on, based on numeric value starting at 0 for
                    Sunday
                - scheduled_hours : List[int]
                    Hours it is scheduled on
        replicas : int, optional
            The number of Service replicas to deploy. When maxReplicas is set,
            this field defines the minimum number of replicas to deploy.
        max_replicas : int, optional
            The maximum number of Service replicas to deploy. Defining this field
            enables autoscaling.
        instance_type : str, optional
            The EC2 instance type to deploy to.
        memory : int, optional
            The amount of memory allocated to each replica of the Service.
        cpu : int, optional
            The amount of cpu allocated to each replica of the the Service.
        credentials : List[int], optional
            A list of credential IDs to pass to the Service.
        permission_set_id : int, optional
            The ID of the associated permission set, if any.
        git_repo_url : str, optional
            The url for the git repo where the Service code lives.
        git_repo_ref : str, optional
            The git reference to use when pulling code from the repo.
        git_path_dir : str, optional
            The path to the Service code within the git repo. If unspecified, the root
            directory will be used.
        environment_variables : dict, optional
            Environment Variables to be passed into the Service.
        notifications : dict, optional
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the service fails.
            - failure_on : bool
                If failure email notifications are on
        partition_label : str, optional
            The partition label used to run this object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this Service.
            - name : str
                The name of this Service.
            - description : str
                The description of this Service.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - type : str
                The type of this Service
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - schedule : :class:`civis.Response`
                - runtime_plan : str
                    Only affects the service when deployed. On Demand means that the
                    service will be turned on when viewed and automatically turned off
                    after periods of inactivity.  Specific Times means the service will
                    be on when scheduled. Always On means the deployed service will
                    always be on.
                - recurrences : List[:class:`civis.Response`]
                    List of day-hour combinations this item is scheduled for

                    - scheduled_days : List[int]
                        Days it is scheduled on, based on numeric value starting at 0
                        for Sunday
                    - scheduled_hours : List[int]
                        Hours it is scheduled on
            - time_zone : str
            - replicas : int
                The number of Service replicas to deploy. When maxReplicas is set,
                this field defines the minimum number of replicas to deploy.
            - max_replicas : int
                The maximum number of Service replicas to deploy. Defining this field
                enables autoscaling.
            - instance_type : str
                The EC2 instance type to deploy to.
            - memory : int
                The amount of memory allocated to each replica of the Service.
            - cpu : int
                The amount of cpu allocated to each replica of the the Service.
            - created_at : str (time)
            - updated_at : str (time)
            - credentials : List[int]
                A list of credential IDs to pass to the Service.
            - permission_set_id : int
                The ID of the associated permission set, if any.
            - git_repo_url : str
                The url for the git repo where the Service code lives.
            - git_repo_ref : str
                The git reference to use when pulling code from the repo.
            - git_path_dir : str
                The path to the Service code within the git repo. If unspecified, the
                root directory will be used.
            - report_id : int
                The ID of the associated report.
            - current_deployment : :class:`civis.Response`
                - deployment_id : int
                    The ID for this deployment.
                - user_id : int
                    The ID of the owner.
                - host : str
                    Domain of the deployment.
                - name : str
                    Name of the deployment.
                - docker_image_name : str
                    The name of the docker image to pull from DockerHub.
                - docker_image_tag : str
                    The tag of the docker image to pull from DockerHub (default:
                    latest).
                - display_url : str
                    A signed URL for viewing the deployed item.
                - instance_type : str
                    The EC2 instance type requested for the deployment.
                - memory : int
                    The memory allocated to the deployment, in MB.
                - cpu : int
                    The cpu allocated to the deployment, in millicores.
                - state : str
                    The state of the deployment.
                - state_message : str
                    A detailed description of the state.
                - max_memory_usage : float (float)
                    If the deployment has finished, the maximum amount of memory used
                    during the deployment, in MB.
                - max_cpu_usage : float (float)
                    If the deployment has finished, the maximum amount of cpu used
                    during the deployment, in millicores.
                - created_at : str (time)
                - updated_at : str (time)
                - service_id : int
                    The ID of owning Service
            - current_url : str
                The URL that the service is hosted at.
            - environment_variables : :class:`civis.Response`
                Environment Variables to be passed into the Service.
            - notifications : :class:`civis.Response`
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the service fails.
                - failure_on : bool
                    If failure email notifications are on
            - partition_label : str
                The partition label used to run this object.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def patch(
        self,
        id: int,
        *,
        name: str | None = ...,
        description: str | None = ...,
        docker_image_name: str | None = ...,
        docker_image_tag: str | None = ...,
        schedule: dict | None = ...,
        replicas: int | None = ...,
        max_replicas: int | None = ...,
        instance_type: str | None = ...,
        memory: int | None = ...,
        cpu: int | None = ...,
        credentials: List[int] | None = ...,
        permission_set_id: int | None = ...,
        git_repo_url: str | None = ...,
        git_repo_ref: str | None = ...,
        git_path_dir: str | None = ...,
        environment_variables: dict | None = ...,
        notifications: dict | None = ...,
        partition_label: str | None = ...,
    ) -> _ResponseServicesPatch:
        """Update some attributes of this Service

        API URL: ``PATCH /services/{id}``

        Parameters
        ----------
        id : int
            The ID for this Service.
        name : str, optional
            The name of this Service.
        description : str, optional
            The description of this Service.
        docker_image_name : str, optional
            The name of the docker image to pull from DockerHub.
        docker_image_tag : str, optional
            The tag of the docker image to pull from DockerHub (default: latest).
        schedule : dict, optional
            - runtime_plan : str
                Only affects the service when deployed. On Demand means that the
                service will be turned on when viewed and automatically turned off
                after periods of inactivity.  Specific Times means the service will be
                on when scheduled. Always On means the deployed service will always be
                on.
            - recurrences : List[dict]
                List of day-hour combinations this item is scheduled for

                - scheduled_days : List[int]
                    Days it is scheduled on, based on numeric value starting at 0 for
                    Sunday
                - scheduled_hours : List[int]
                    Hours it is scheduled on
        replicas : int, optional
            The number of Service replicas to deploy. When maxReplicas is set,
            this field defines the minimum number of replicas to deploy.
        max_replicas : int, optional
            The maximum number of Service replicas to deploy. Defining this field
            enables autoscaling.
        instance_type : str, optional
            The EC2 instance type to deploy to.
        memory : int, optional
            The amount of memory allocated to each replica of the Service.
        cpu : int, optional
            The amount of cpu allocated to each replica of the the Service.
        credentials : List[int], optional
            A list of credential IDs to pass to the Service.
        permission_set_id : int, optional
            The ID of the associated permission set, if any.
        git_repo_url : str, optional
            The url for the git repo where the Service code lives.
        git_repo_ref : str, optional
            The git reference to use when pulling code from the repo.
        git_path_dir : str, optional
            The path to the Service code within the git repo. If unspecified, the root
            directory will be used.
        environment_variables : dict, optional
            Environment Variables to be passed into the Service.
        notifications : dict, optional
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the service fails.
            - failure_on : bool
                If failure email notifications are on
        partition_label : str, optional
            The partition label used to run this object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this Service.
            - name : str
                The name of this Service.
            - description : str
                The description of this Service.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - type : str
                The type of this Service
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - schedule : :class:`civis.Response`
                - runtime_plan : str
                    Only affects the service when deployed. On Demand means that the
                    service will be turned on when viewed and automatically turned off
                    after periods of inactivity.  Specific Times means the service will
                    be on when scheduled. Always On means the deployed service will
                    always be on.
                - recurrences : List[:class:`civis.Response`]
                    List of day-hour combinations this item is scheduled for

                    - scheduled_days : List[int]
                        Days it is scheduled on, based on numeric value starting at 0
                        for Sunday
                    - scheduled_hours : List[int]
                        Hours it is scheduled on
            - time_zone : str
            - replicas : int
                The number of Service replicas to deploy. When maxReplicas is set,
                this field defines the minimum number of replicas to deploy.
            - max_replicas : int
                The maximum number of Service replicas to deploy. Defining this field
                enables autoscaling.
            - instance_type : str
                The EC2 instance type to deploy to.
            - memory : int
                The amount of memory allocated to each replica of the Service.
            - cpu : int
                The amount of cpu allocated to each replica of the the Service.
            - created_at : str (time)
            - updated_at : str (time)
            - credentials : List[int]
                A list of credential IDs to pass to the Service.
            - permission_set_id : int
                The ID of the associated permission set, if any.
            - git_repo_url : str
                The url for the git repo where the Service code lives.
            - git_repo_ref : str
                The git reference to use when pulling code from the repo.
            - git_path_dir : str
                The path to the Service code within the git repo. If unspecified, the
                root directory will be used.
            - report_id : int
                The ID of the associated report.
            - current_deployment : :class:`civis.Response`
                - deployment_id : int
                    The ID for this deployment.
                - user_id : int
                    The ID of the owner.
                - host : str
                    Domain of the deployment.
                - name : str
                    Name of the deployment.
                - docker_image_name : str
                    The name of the docker image to pull from DockerHub.
                - docker_image_tag : str
                    The tag of the docker image to pull from DockerHub (default:
                    latest).
                - display_url : str
                    A signed URL for viewing the deployed item.
                - instance_type : str
                    The EC2 instance type requested for the deployment.
                - memory : int
                    The memory allocated to the deployment, in MB.
                - cpu : int
                    The cpu allocated to the deployment, in millicores.
                - state : str
                    The state of the deployment.
                - state_message : str
                    A detailed description of the state.
                - max_memory_usage : float (float)
                    If the deployment has finished, the maximum amount of memory used
                    during the deployment, in MB.
                - max_cpu_usage : float (float)
                    If the deployment has finished, the maximum amount of cpu used
                    during the deployment, in millicores.
                - created_at : str (time)
                - updated_at : str (time)
                - service_id : int
                    The ID of owning Service
            - current_url : str
                The URL that the service is hosted at.
            - environment_variables : :class:`civis.Response`
                Environment Variables to be passed into the Service.
            - notifications : :class:`civis.Response`
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the service fails.
                - failure_on : bool
                    If failure email notifications are on
            - partition_label : str
                The partition label used to run this object.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def list_shares(
        self,
        id: int,
    ) -> List[_ResponseServicesListShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /services/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseServicesPutSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /services/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /services/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseServicesPutSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /services/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /services/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseServicesListDependencies]:
        """List dependent objects for this object

        API URL: ``GET /services/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseServicesPutTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /services/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def put_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseServicesPutArchive:
        """Update the archive status of this object

        API URL: ``PUT /services/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this Service.
            - name : str
                The name of this Service.
            - description : str
                The description of this Service.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - type : str
                The type of this Service
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - schedule : :class:`civis.Response`
                - runtime_plan : str
                    Only affects the service when deployed. On Demand means that the
                    service will be turned on when viewed and automatically turned off
                    after periods of inactivity.  Specific Times means the service will
                    be on when scheduled. Always On means the deployed service will
                    always be on.
                - recurrences : List[:class:`civis.Response`]
                    List of day-hour combinations this item is scheduled for

                    - scheduled_days : List[int]
                        Days it is scheduled on, based on numeric value starting at 0
                        for Sunday
                    - scheduled_hours : List[int]
                        Hours it is scheduled on
            - time_zone : str
            - replicas : int
                The number of Service replicas to deploy. When maxReplicas is set,
                this field defines the minimum number of replicas to deploy.
            - max_replicas : int
                The maximum number of Service replicas to deploy. Defining this field
                enables autoscaling.
            - instance_type : str
                The EC2 instance type to deploy to.
            - memory : int
                The amount of memory allocated to each replica of the Service.
            - cpu : int
                The amount of cpu allocated to each replica of the the Service.
            - created_at : str (time)
            - updated_at : str (time)
            - credentials : List[int]
                A list of credential IDs to pass to the Service.
            - permission_set_id : int
                The ID of the associated permission set, if any.
            - git_repo_url : str
                The url for the git repo where the Service code lives.
            - git_repo_ref : str
                The git reference to use when pulling code from the repo.
            - git_path_dir : str
                The path to the Service code within the git repo. If unspecified, the
                root directory will be used.
            - report_id : int
                The ID of the associated report.
            - current_deployment : :class:`civis.Response`
                - deployment_id : int
                    The ID for this deployment.
                - user_id : int
                    The ID of the owner.
                - host : str
                    Domain of the deployment.
                - name : str
                    Name of the deployment.
                - docker_image_name : str
                    The name of the docker image to pull from DockerHub.
                - docker_image_tag : str
                    The tag of the docker image to pull from DockerHub (default:
                    latest).
                - display_url : str
                    A signed URL for viewing the deployed item.
                - instance_type : str
                    The EC2 instance type requested for the deployment.
                - memory : int
                    The memory allocated to the deployment, in MB.
                - cpu : int
                    The cpu allocated to the deployment, in millicores.
                - state : str
                    The state of the deployment.
                - state_message : str
                    A detailed description of the state.
                - max_memory_usage : float (float)
                    If the deployment has finished, the maximum amount of memory used
                    during the deployment, in MB.
                - max_cpu_usage : float (float)
                    If the deployment has finished, the maximum amount of cpu used
                    during the deployment, in millicores.
                - created_at : str (time)
                - updated_at : str (time)
                - service_id : int
                    The ID of owning Service
            - current_url : str
                The URL that the service is hosted at.
            - environment_variables : :class:`civis.Response`
                Environment Variables to be passed into the Service.
            - notifications : :class:`civis.Response`
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the service fails.
                - failure_on : bool
                    If failure email notifications are on
            - partition_label : str
                The partition label used to run this object.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def list_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseServicesListProjects]:
        """List the projects a Service belongs to

        API URL: ``GET /services/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the Service.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a Service to a project

        API URL: ``PUT /services/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Service.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a Service from a project

        API URL: ``DELETE /services/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Service.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_deployments(
        self,
        service_id: int,
        *,
        deployment_id: int | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseServicesListDeployments]:
        """List deployments for a Service

        API URL: ``GET /services/{service_id}/deployments``

        Parameters
        ----------
        service_id : int
            The ID of the owning Service
        deployment_id : int, optional
            The ID for this deployment
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to created_at. Must be
            one of: created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - deployment_id : int
                The ID for this deployment.
            - user_id : int
                The ID of the owner.
            - host : str
                Domain of the deployment.
            - name : str
                Name of the deployment.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - instance_type : str
                The EC2 instance type requested for the deployment.
            - memory : int
                The memory allocated to the deployment, in MB.
            - cpu : int
                The cpu allocated to the deployment, in millicores.
            - state : str
                The state of the deployment.
            - state_message : str
                A detailed description of the state.
            - max_memory_usage : float (float)
                If the deployment has finished, the maximum amount of memory used
                during the deployment, in MB.
            - max_cpu_usage : float (float)
                If the deployment has finished, the maximum amount of cpu used during
                the deployment, in millicores.
            - created_at : str (time)
            - updated_at : str (time)
            - service_id : int
                The ID of owning Service
        """
        ...

    def post_deployments(
        self,
        service_id: int,
        *,
        deployment_id: int | None = ...,
    ) -> _ResponseServicesPostDeployments:
        """Deploy a Service

        API URL: ``POST /services/{service_id}/deployments``

        Parameters
        ----------
        service_id : int
            The ID of the owning Service
        deployment_id : int, optional
            The ID for this deployment

        Returns
        -------
        :class:`civis.Response`
            - deployment_id : int
                The ID for this deployment.
            - user_id : int
                The ID of the owner.
            - host : str
                Domain of the deployment.
            - name : str
                Name of the deployment.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - display_url : str
                A signed URL for viewing the deployed item.
            - instance_type : str
                The EC2 instance type requested for the deployment.
            - memory : int
                The memory allocated to the deployment, in MB.
            - cpu : int
                The cpu allocated to the deployment, in millicores.
            - state : str
                The state of the deployment.
            - state_message : str
                A detailed description of the state.
            - max_memory_usage : float (float)
                If the deployment has finished, the maximum amount of memory used
                during the deployment, in MB.
            - max_cpu_usage : float (float)
                If the deployment has finished, the maximum amount of cpu used during
                the deployment, in millicores.
            - created_at : str (time)
            - updated_at : str (time)
            - service_id : int
                The ID of owning Service
        """
        ...

    def get_deployments(
        self,
        service_id: int,
        deployment_id: int,
    ) -> _ResponseServicesGetDeployments:
        """Get details about a Service deployment

        API URL: ``GET /services/{service_id}/deployments/{deployment_id}``

        Parameters
        ----------
        service_id : int
            The ID of the owning Service
        deployment_id : int
            The ID for this deployment

        Returns
        -------
        :class:`civis.Response`
            - deployment_id : int
                The ID for this deployment.
            - user_id : int
                The ID of the owner.
            - host : str
                Domain of the deployment.
            - name : str
                Name of the deployment.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - display_url : str
                A signed URL for viewing the deployed item.
            - instance_type : str
                The EC2 instance type requested for the deployment.
            - memory : int
                The memory allocated to the deployment, in MB.
            - cpu : int
                The cpu allocated to the deployment, in millicores.
            - state : str
                The state of the deployment.
            - state_message : str
                A detailed description of the state.
            - max_memory_usage : float (float)
                If the deployment has finished, the maximum amount of memory used
                during the deployment, in MB.
            - max_cpu_usage : float (float)
                If the deployment has finished, the maximum amount of cpu used during
                the deployment, in millicores.
            - created_at : str (time)
            - updated_at : str (time)
            - service_id : int
                The ID of owning Service
        """
        ...

    def delete_deployments(
        self,
        service_id: int,
        deployment_id: int,
    ) -> Response:
        """Delete a Service deployment

        API URL: ``DELETE /services/{service_id}/deployments/{deployment_id}``

        Parameters
        ----------
        service_id : int
            The ID of the owning Service
        deployment_id : int
            The ID for this deployment

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def post_redeploy(
        self,
        service_id: int,
        *,
        deployment_id: int | None = ...,
    ) -> _ResponseServicesPostRedeploy:
        """Redeploy a Service

        API URL: ``POST /services/{service_id}/redeploy``

        Parameters
        ----------
        service_id : int
            The ID of the owning Service
        deployment_id : int, optional
            The ID for this deployment

        Returns
        -------
        :class:`civis.Response`
            - deployment_id : int
                The ID for this deployment.
            - user_id : int
                The ID of the owner.
            - host : str
                Domain of the deployment.
            - name : str
                Name of the deployment.
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - display_url : str
                A signed URL for viewing the deployed item.
            - instance_type : str
                The EC2 instance type requested for the deployment.
            - memory : int
                The memory allocated to the deployment, in MB.
            - cpu : int
                The cpu allocated to the deployment, in millicores.
            - state : str
                The state of the deployment.
            - state_message : str
                A detailed description of the state.
            - max_memory_usage : float (float)
                If the deployment has finished, the maximum amount of memory used
                during the deployment, in MB.
            - max_cpu_usage : float (float)
                If the deployment has finished, the maximum amount of cpu used during
                the deployment, in millicores.
            - created_at : str (time)
            - updated_at : str (time)
            - service_id : int
                The ID of owning Service
        """
        ...

    def list_deployments_logs(
        self,
        id: int,
        deployment_id: int,
        *,
        start_at: str | None = ...,
        end_at: str | None = ...,
        limit: int | None = ...,
    ) -> List[_ResponseServicesListDeploymentsLogs]:
        """Get the logs for a Service deployment

        API URL: ``GET /services/{id}/deployments/{deployment_id}/logs``

        Parameters
        ----------
        id : int
            The ID of the owning Service.
        deployment_id : int
            The ID for this deployment.
        start_at : str, optional
            Log entries with a lower timestamp will be omitted.
        end_at : str, optional
            Log entries with a higher timestamp will be omitted.
        limit : int, optional
            The maximum number of log messages to return. Default of 10000.

        Returns
        -------
        :class:`civis.ListResponse`
            - message : str
                The log message.
            - stream : str
                The stream of the log. One of "stdout", "stderr".
            - created_at : str (date-time)
                The time the log was created.
            - source : str
                The source of the log. One of "system", "user".
        """
        ...

    def post_clone(
        self,
        id: int,
    ) -> _ResponseServicesPostClone:
        """Clone this Service

        API URL: ``POST /services/{id}/clone``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this Service.
            - name : str
                The name of this Service.
            - description : str
                The description of this Service.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - type : str
                The type of this Service
            - docker_image_name : str
                The name of the docker image to pull from DockerHub.
            - docker_image_tag : str
                The tag of the docker image to pull from DockerHub (default: latest).
            - schedule : :class:`civis.Response`
                - runtime_plan : str
                    Only affects the service when deployed. On Demand means that the
                    service will be turned on when viewed and automatically turned off
                    after periods of inactivity.  Specific Times means the service will
                    be on when scheduled. Always On means the deployed service will
                    always be on.
                - recurrences : List[:class:`civis.Response`]
                    List of day-hour combinations this item is scheduled for

                    - scheduled_days : List[int]
                        Days it is scheduled on, based on numeric value starting at 0
                        for Sunday
                    - scheduled_hours : List[int]
                        Hours it is scheduled on
            - time_zone : str
            - replicas : int
                The number of Service replicas to deploy. When maxReplicas is set,
                this field defines the minimum number of replicas to deploy.
            - max_replicas : int
                The maximum number of Service replicas to deploy. Defining this field
                enables autoscaling.
            - instance_type : str
                The EC2 instance type to deploy to.
            - memory : int
                The amount of memory allocated to each replica of the Service.
            - cpu : int
                The amount of cpu allocated to each replica of the the Service.
            - created_at : str (time)
            - updated_at : str (time)
            - credentials : List[int]
                A list of credential IDs to pass to the Service.
            - permission_set_id : int
                The ID of the associated permission set, if any.
            - git_repo_url : str
                The url for the git repo where the Service code lives.
            - git_repo_ref : str
                The git reference to use when pulling code from the repo.
            - git_path_dir : str
                The path to the Service code within the git repo. If unspecified, the
                root directory will be used.
            - report_id : int
                The ID of the associated report.
            - current_deployment : :class:`civis.Response`
                - deployment_id : int
                    The ID for this deployment.
                - user_id : int
                    The ID of the owner.
                - host : str
                    Domain of the deployment.
                - name : str
                    Name of the deployment.
                - docker_image_name : str
                    The name of the docker image to pull from DockerHub.
                - docker_image_tag : str
                    The tag of the docker image to pull from DockerHub (default:
                    latest).
                - display_url : str
                    A signed URL for viewing the deployed item.
                - instance_type : str
                    The EC2 instance type requested for the deployment.
                - memory : int
                    The memory allocated to the deployment, in MB.
                - cpu : int
                    The cpu allocated to the deployment, in millicores.
                - state : str
                    The state of the deployment.
                - state_message : str
                    A detailed description of the state.
                - max_memory_usage : float (float)
                    If the deployment has finished, the maximum amount of memory used
                    during the deployment, in MB.
                - max_cpu_usage : float (float)
                    If the deployment has finished, the maximum amount of cpu used
                    during the deployment, in millicores.
                - created_at : str (time)
                - updated_at : str (time)
                - service_id : int
                    The ID of owning Service
            - current_url : str
                The URL that the service is hosted at.
            - environment_variables : :class:`civis.Response`
                Environment Variables to be passed into the Service.
            - notifications : :class:`civis.Response`
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the service fails.
                - failure_on : bool
                    If failure email notifications are on
            - partition_label : str
                The partition label used to run this object.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - archived : str
                The archival status of the requested item(s).
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def post_tokens(
        self,
        id: int,
        name: str,
        *,
        machine_token: bool | None = ...,
        expires_in: int | None = ...,
    ) -> _ResponseServicesPostTokens:
        """Create a new long-lived service token

        API URL: ``POST /services/{id}/tokens``

        Parameters
        ----------
        id : int
            The ID of the service.
        name : str
            The name of the token.
        machine_token : bool, optional
            If true, create a compact token with no user information.
        expires_in : int, optional
            The number of seconds until the token should expire

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the token.
            - name : str
                The name of the token.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - machine_token : bool
                If true, this token is not tied to a particular user.
            - expires_at : str (date-time)
                The date and time when the token expires.
            - created_at : str (time)
                The date and time when the token was created.
            - token : str
                The value of the token. Only returned when the token is first created.
        """
        ...

    def list_tokens(
        self,
        id: int,
    ) -> List[_ResponseServicesListTokens]:
        """List tokens

        API URL: ``GET /services/{id}/tokens``

        Parameters
        ----------
        id : int
            The ID of the service.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the token.
            - name : str
                The name of the token.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - machine_token : bool
                If true, this token is not tied to a particular user.
            - expires_at : str (date-time)
                The date and time when the token expires.
            - created_at : str (time)
                The date and time when the token was created.
        """
        ...

    def delete_tokens(
        self,
        id: int,
        token_id: int,
    ) -> Response:
        """Revoke a token by id

        API URL: ``DELETE /services/{id}/tokens/{token_id}``

        Parameters
        ----------
        id : int
            The ID of the service.
        token_id : int
            The ID of the token.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

class _Storage_Hosts:
    def list(
        self,
    ) -> List[_ResponseStorageHostsList]:
        """List the storage hosts

        API URL: ``GET /storage_hosts``

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the storage host.
            - owner : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The human readable name for the storage host.
            - provider : str
                The storage provider.One of: s3.
            - bucket : str
                The bucket for this storage host.
            - s3_options : :class:`civis.Response`
                - region : str
                    The region for this storage host (ex. "us-east-1")
        """
        ...

    def post(
        self,
        provider: str,
        bucket: str,
        name: str,
        *,
        s3_options: dict | None = ...,
    ) -> _ResponseStorageHostsPost:
        """Create a new storage host

        API URL: ``POST /storage_hosts``

        Parameters
        ----------
        provider : str
            The storage provider.One of: s3.
        bucket : str
            The bucket for this storage host.
        name : str
            The human readable name for the storage host.
        s3_options : dict, optional
            - region : str
                The region for this storage host (ex. "us-east-1")

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the storage host.
            - owner : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The human readable name for the storage host.
            - provider : str
                The storage provider.One of: s3.
            - bucket : str
                The bucket for this storage host.
            - s3_options : :class:`civis.Response`
                - region : str
                    The region for this storage host (ex. "us-east-1")
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseStorageHostsGet:
        """Get a storage host

        API URL: ``GET /storage_hosts/{id}``

        Parameters
        ----------
        id : int
            The ID of the storage host.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the storage host.
            - owner : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The human readable name for the storage host.
            - provider : str
                The storage provider.One of: s3.
            - bucket : str
                The bucket for this storage host.
            - s3_options : :class:`civis.Response`
                - region : str
                    The region for this storage host (ex. "us-east-1")
        """
        ...

    def put(
        self,
        id: int,
        name: str,
        provider: str,
        bucket: str,
        *,
        s3_options: dict | None = ...,
    ) -> _ResponseStorageHostsPut:
        """Replace all attributes of this storage host

        API URL: ``PUT /storage_hosts/{id}``

        Parameters
        ----------
        id : int
            The ID of the storage host.
        name : str
            The human readable name for the storage host.
        provider : str
            The storage provider.One of: s3.
        bucket : str
            The bucket for this storage host.
        s3_options : dict, optional
            - region : str
                The region for this storage host (ex. "us-east-1")

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the storage host.
            - owner : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The human readable name for the storage host.
            - provider : str
                The storage provider.One of: s3.
            - bucket : str
                The bucket for this storage host.
            - s3_options : :class:`civis.Response`
                - region : str
                    The region for this storage host (ex. "us-east-1")
        """
        ...

    def patch(
        self,
        id: int,
        *,
        name: str | None = ...,
        provider: str | None = ...,
        bucket: str | None = ...,
        s3_options: dict | None = ...,
    ) -> _ResponseStorageHostsPatch:
        """Update some attributes of this storage host

        API URL: ``PATCH /storage_hosts/{id}``

        Parameters
        ----------
        id : int
            The ID of the storage host.
        name : str, optional
            The human readable name for the storage host.
        provider : str, optional
            The storage provider.One of: s3.
        bucket : str, optional
            The bucket for this storage host.
        s3_options : dict, optional
            - region : str
                The region for this storage host (ex. "us-east-1")

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the storage host.
            - owner : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The human readable name for the storage host.
            - provider : str
                The storage provider.One of: s3.
            - bucket : str
                The bucket for this storage host.
            - s3_options : :class:`civis.Response`
                - region : str
                    The region for this storage host (ex. "us-east-1")
        """
        ...

    def list_shares(
        self,
        id: int,
    ) -> List[_ResponseStorageHostsListShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /storage_hosts/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseStorageHostsPutSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /storage_hosts/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /storage_hosts/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseStorageHostsPutSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /storage_hosts/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /storage_hosts/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseStorageHostsListDependencies]:
        """List dependent objects for this object

        API URL: ``GET /storage_hosts/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseStorageHostsPutTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /storage_hosts/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

class _Table_Tags:
    def list(
        self,
        *,
        name: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseTableTagsList]:
        """List Table Tags

        API URL: ``GET /table_tags``

        Parameters
        ----------
        name : str, optional
            Name of the tag. If it is provided, the results will be filtered by name
        limit : int, optional
            Number of results to return. Defaults to 50. Maximum allowed is 1000.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to name. Must be one
            of: name, user, table_count.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to asc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                Table Tag ID
            - name : str
                Table Tag Name
            - table_count : int
                The total number of tables associated with the tag.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
        """
        ...

    def post(
        self,
        name: str,
    ) -> _ResponseTableTagsPost:
        """Create a Table Tag

        API URL: ``POST /table_tags``

        Parameters
        ----------
        name : str
            Table Tag Name

        Returns
        -------
        :class:`civis.Response`
            - id : int
                Table Tag ID
            - name : str
                Table Tag Name
            - created_at : str (date-time)
                The date the tag was created.
            - updated_at : str (date-time)
                The date the tag was recently updated on.
            - table_count : int
                The total number of tables associated with the tag.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseTableTagsGet:
        """Get a Table Tag

        API URL: ``GET /table_tags/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                Table Tag ID
            - name : str
                Table Tag Name
            - created_at : str (date-time)
                The date the tag was created.
            - updated_at : str (date-time)
                The date the tag was recently updated on.
            - table_count : int
                The total number of tables associated with the tag.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
        """
        ...

    def delete(
        self,
        id: int,
    ) -> Response:
        """Delete a Table Tag

        API URL: ``DELETE /table_tags/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        None
            Response code 204: success
        """
        ...

class _Tables:
    def post_enhancements_geocodings(
        self,
        source_table_id: int,
    ) -> _ResponseTablesPostEnhancementsGeocodings:
        """.. warning::

            Warning: The tables/:source_table_id/enhancements/geocodings endpoint is deprecated and will be removed after January 1, 2021.

        Geocode a table

        API URL: ``POST /tables/{source_table_id}/enhancements/geocodings``

        Parameters
        ----------
        source_table_id : int
            The ID of the table to be enhanced.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the enhancement.
            - source_table_id : int
                The ID of the table that was enhanced.
            - state : str
                The state of the enhancement, one of 'queued' 'running' 'succeeded'
                'failed' or 'cancelled'.
            - enhanced_table_schema : str
                The schema name of the table created by the enhancement.
            - enhanced_table_name : str
                The name of the table created by the enhancement.
        """
        ...

    def post_enhancements_cass_ncoa(
        self,
        source_table_id: int,
        *,
        perform_ncoa: bool | None = ...,
        ncoa_credential_id: int | None = ...,
        output_level: str | None = ...,
        batch_size: int | None = ...,
    ) -> _ResponseTablesPostEnhancementsCassNcoa:
        """.. warning::

            Warning: The tables/:source_table_id/enhancements/cass-ncoa endpoint is deprecated and will be removed after January 1, 2021.

        Standardize addresses in a table

        API URL: ``POST /tables/{source_table_id}/enhancements/cass-ncoa``

        Parameters
        ----------
        source_table_id : int
            The ID of the table to be enhanced.
        perform_ncoa : bool, optional
            Whether to update addresses for records matching the National Change of
            Address (NCOA) database.
        ncoa_credential_id : int, optional
            Credential to use when performing NCOA updates. Required if 'performNcoa'
            is true.
        output_level : str, optional
            The set of fields persisted by a CASS or NCOA enhancement.For CASS
            enhancements, one of 'cass' or 'all.'For NCOA enhancements, one of 'cass',
            'ncoa' , 'coalesced' or 'all'.By default, all fields will be returned.
        batch_size : int, optional
            The maximum number of records processed at a time. Note that this parameter
            is not available to all users.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the enhancement.
            - source_table_id : int
                The ID of the table that was enhanced.
            - state : str
                The state of the enhancement, one of 'queued' 'running' 'succeeded'
                'failed' or 'cancelled'.
            - enhanced_table_schema : str
                The schema name of the table created by the enhancement.
            - enhanced_table_name : str
                The name of the table created by the enhancement.
            - perform_ncoa : bool
                Whether to update addresses for records matching the National Change of
                Address (NCOA) database.
            - ncoa_credential_id : int
                Credential to use when performing NCOA updates. Required if
                'performNcoa' is true.
            - output_level : str
                The set of fields persisted by a CASS or NCOA enhancement.For CASS
                enhancements, one of 'cass' or 'all.'For NCOA enhancements, one of
                'cass', 'ncoa' , 'coalesced' or 'all'.By default, all fields will be
                returned.
            - batch_size : int
                The maximum number of records processed at a time. Note that this
                parameter is not available to all users.
        """
        ...

    def get_enhancements_geocodings(
        self,
        id: int,
        source_table_id: int,
    ) -> _ResponseTablesGetEnhancementsGeocodings:
        """.. warning::

            Warning: The tables/:source_table_id/enhancements/geocodings/:id endpoint is deprecated and will be removed after January 1, 2021.

        View the status of a geocoding table enhancement

        API URL: ``GET /tables/{source_table_id}/enhancements/geocodings/{id}``

        Parameters
        ----------
        id : int
            The ID of the enhancement.
        source_table_id : int
            The ID of the table that was enhanced.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the enhancement.
            - source_table_id : int
                The ID of the table that was enhanced.
            - state : str
                The state of the enhancement, one of 'queued' 'running' 'succeeded'
                'failed' or 'cancelled'.
            - enhanced_table_schema : str
                The schema name of the table created by the enhancement.
            - enhanced_table_name : str
                The name of the table created by the enhancement.
        """
        ...

    def get_enhancements_cass_ncoa(
        self,
        id: int,
        source_table_id: int,
    ) -> _ResponseTablesGetEnhancementsCassNcoa:
        """.. warning::

            Warning: The tables/:source_table_id/enhancements/cass-ncoa/:id endpoint is deprecated and will be removed after January 1, 2021.

        View the status of a CASS / NCOA table enhancement

        API URL: ``GET /tables/{source_table_id}/enhancements/cass-ncoa/{id}``

        Parameters
        ----------
        id : int
            The ID of the enhancement.
        source_table_id : int
            The ID of the table that was enhanced.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the enhancement.
            - source_table_id : int
                The ID of the table that was enhanced.
            - state : str
                The state of the enhancement, one of 'queued' 'running' 'succeeded'
                'failed' or 'cancelled'.
            - enhanced_table_schema : str
                The schema name of the table created by the enhancement.
            - enhanced_table_name : str
                The name of the table created by the enhancement.
            - perform_ncoa : bool
                Whether to update addresses for records matching the National Change of
                Address (NCOA) database.
            - ncoa_credential_id : int
                Credential to use when performing NCOA updates. Required if
                'performNcoa' is true.
            - output_level : str
                The set of fields persisted by a CASS or NCOA enhancement.For CASS
                enhancements, one of 'cass' or 'all.'For NCOA enhancements, one of
                'cass', 'ncoa' , 'coalesced' or 'all'.By default, all fields will be
                returned.
            - batch_size : int
                The maximum number of records processed at a time. Note that this
                parameter is not available to all users.
        """
        ...

    def post_scan(
        self,
        database_id: int,
        schema: str,
        table_name: str,
        *,
        stats_priority: str | None = ...,
    ) -> _ResponseTablesPostScan:
        """Creates and enqueues a single table scanner job on a new table

        API URL: ``POST /tables/scan``

        Parameters
        ----------
        database_id : int
            The ID of the database.
        schema : str
            The name of the schema containing the table.
        table_name : str
            The name of the table.
        stats_priority : str, optional
            When to sync table statistics. Valid Options are the following. Option:
            'flag' means to flag stats for the next scheduled run of a full table scan
            on the database. Option: 'block' means to block this job on stats syncing.
            Option: 'queue' means to queue a separate job for syncing stats and do not
            block this job on the queued job. Defaults to 'flag'

        Returns
        -------
        :class:`civis.Response`
            - job_id : int
                The ID of the job created.
            - run_id : int
                The ID of the run created.
        """
        ...

    def post_refresh(
        self,
        id: int,
    ) -> _ResponseTablesPostRefresh:
        """.. warning::

            Warning: The tables/:id/refresh endpoint is deprecated. Please use tables/scan from now on.

        Request a refresh for column and table statistics

        API URL: ``POST /tables/{id}/refresh``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the table.
            - database_id : int
                The ID of the database.
            - schema : str
                The name of the schema containing the table.
            - name : str
                Name of the table.
            - description : str
                The description of the table, as specified by the table owner
            - is_view : bool
                True if this table represents a view. False if it represents a regular
                table.
            - row_count : int
                The number of rows in the table.
            - column_count : int
                The number of columns in the table.
            - size_mb : float (float)
                The size of the table in megabytes.
            - owner : str
                The database username of the table's owner.
            - distkey : str
                The column used as the Amazon Redshift distkey.
            - sortkeys : str
                The column used as the Amazon Redshift sortkey.
            - refresh_status : str
                How up-to-date the table's statistics on row counts, null counts,
                distinct counts, and values distributions are. One of: refreshing,
                stale, or current.
            - last_refresh : str (date-time)
                The time of the last statistics refresh.
            - data_updated_at : str (date-time)
                The last time that Civis Platform captured a change in this table.Only
                applicable for Redshift tables; please see the Civis help desk for more
                info.
            - schema_updated_at : str (date-time)
                The last time that Civis Platform captured a change to the table
                attributes/structure.Only applicable for Redshift tables; please see
                the Civis help desk for more info.
            - refresh_id : str
                The ID of the most recent statistics refresh.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - primary_keys : List[str]
                The primary keys for this table.
            - last_modified_keys : List[str]
                The columns indicating an entry's modification status for this table.
            - table_tags : List[:class:`civis.Response`]
                The table tags associated with this table.

                - id : int
                    Table Tag ID
                - name : str
                    Table Tag Name
            - ontology_mapping : :class:`civis.Response`
                The ontology-key to column-name mapping.  See /ontology for the list of
                valid ontology keys.
            - columns : List[:class:`civis.Response`]
                - name : str
                    Name of the column.
                - civis_data_type : str
                    The generic data type of the column (ex. "string"). Since this is
                    database-agnostic, it may be helpful when loading data to R/Python.
                - sql_type : str
                    The database-specific SQL type of the column (ex. "varchar(30)").
                - sample_values : List[str]
                    A sample of values from the column.
                - encoding : str
                    The compression encoding for this columnSee: http://docs.aws.amazon
                    .com/redshift/latest/dg/c_Compression_encodings.html
                - description : str
                    The description of the column, as specified by the table owner
                - order : int
                    Relative position of the column in the table.
                - min_value : str
                    Smallest value in the column.
                - max_value : str
                    Largest value in the column.
                - avg_value : float (float)
                    This parameter is deprecated.
                - stddev : float (float)
                    This parameter is deprecated.
                - value_distribution_percent : :class:`civis.Response`
                    A mapping between each value in the column and the percentage of
                    rows with that value.Only present for tables with fewer than
                    approximately 25,000,000 rows and for columns with fewer than
                    twenty distinct values.
                - coverage_count : int
                    Number of non-null values in the column.
                - null_count : int
                    Number of null values in the column.
                - possible_dependent_variable_types : List[str]
                    Possible dependent variable types the column may be used to model.
                    Null if it may not be used as a dependent variable.
                - useable_as_independent_variable : bool
                    Whether the column may be used as an independent variable to train
                    a model.
                - useable_as_primary_key : bool
                    Whether the column may be used as an primary key to identify table
                    rows.
                - value_distribution : :class:`civis.Response`
                    An object mapping distinct values in the column to the number of
                    times they appear in the column
                - distinct_count : int
                    Number of distinct values in the column. NULL values are counted
                    and treated as a single distinct value.
            - joins : List[:class:`civis.Response`]
                - id : int
                - left_table_id : int
                - left_identifier : str
                - right_table_id : int
                - right_identifier : str
                - on : str
                - left_join : bool
                - created_at : str (time)
                - updated_at : str (time)
            - multipart_key : List[str]
            - enhancements : List[:class:`civis.Response`]
                - type : str
                - created_at : str (time)
                - updated_at : str (time)
                - join_id : int
            - view_def : str
            - table_def : str
            - outgoing_table_matches : List[:class:`civis.Response`]
                - source_table_id : int
                    Source table
                - target_type : str
                    Target type
                - target_id : int
                    Target ID
                - target : :class:`civis.Response`
                    - name : str
                - job : :class:`civis.Response`
                    - id : int
                    - name : str
                    - type : str
                    - from_template_id : int
                    - state : str
                        Whether the job is idle, queued, running, cancelled, or failed.
                    - created_at : str (date-time)
                    - updated_at : str (date-time)
                    - runs : List[:class:`civis.Response`]
                        Information about the most recent runs of the job.

                        - id : int
                        - state : str
                        - created_at : str (time)
                            The time that the run was queued.
                        - started_at : str (time)
                            The time that the run started.
                        - finished_at : str (time)
                            The time that the run completed.
                        - error : str
                            The error message for this run, if present.
                    - last_run : :class:`civis.Response`
                        - id : int
                        - state : str
                        - created_at : str (time)
                            The time that the run was queued.
                        - started_at : str (time)
                            The time that the run started.
                        - finished_at : str (time)
                            The time that the run completed.
                        - error : str
                            The error message for this run, if present.
                    - hidden : bool
                        The hidden status of the item.
                    - match_options : :class:`civis.Response`
                        - max_matches : int
                        - threshold : str
        """
        ...

    def list(
        self,
        *,
        database_id: int | None = ...,
        schema: str | None = ...,
        name: str | None = ...,
        search: str | None = ...,
        table_tag_ids: List[int] | None = ...,
        credential_id: int | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseTablesList]:
        """List tables

        API URL: ``GET /tables``

        Parameters
        ----------
        database_id : int, optional
            The ID of the database.
        schema : str, optional
            If specified, will be used to filter the tables returned. Substring
            matching is supported with "%" and "*" wildcards (e.g., "schema=%census%"
            will return both "client_census.table" and "census_2010.table").
        name : str, optional
            If specified, will be used to filter the tables returned. Substring
            matching is supported with "%" and "*" wildcards (e.g., "name=%table%" will
            return both "table1" and "my table").
        search : str, optional
            If specified, will be used to filter the tables returned. Will search
            across schema and name (in the full form schema.name) and will return any
            full name containing the search string.
        table_tag_ids : List[int], optional
            If specified, will be used to filter the tables returned. Will search
            across Table Tags and will return any tables that have one of the matching
            Table Tags.
        credential_id : int, optional
            If specified, will be used instead of the default credential to filter the
            tables returned.
        limit : int, optional
            Number of results to return. Defaults to 50. Maximum allowed is 1000.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to schema. Must be one
            of: schema, name, search, table_tag_ids, credential_id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to asc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the table.
            - database_id : int
                The ID of the database.
            - schema : str
                The name of the schema containing the table.
            - name : str
                Name of the table.
            - description : str
                The description of the table, as specified by the table owner
            - is_view : bool
                True if this table represents a view. False if it represents a regular
                table.
            - row_count : int
                The number of rows in the table.
            - column_count : int
                The number of columns in the table.
            - size_mb : float (float)
                The size of the table in megabytes.
            - owner : str
                The database username of the table's owner.
            - distkey : str
                The column used as the Amazon Redshift distkey.
            - sortkeys : str
                The column used as the Amazon Redshift sortkey.
            - refresh_status : str
                How up-to-date the table's statistics on row counts, null counts,
                distinct counts, and values distributions are. One of: refreshing,
                stale, or current.
            - last_refresh : str (date-time)
                The time of the last statistics refresh.
            - refresh_id : str
                The ID of the most recent statistics refresh.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - table_tags : List[:class:`civis.Response`]
                The table tags associated with this table.

                - id : int
                    Table Tag ID
                - name : str
                    Table Tag Name
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseTablesGet:
        """Show basic table info

        API URL: ``GET /tables/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the table.
            - database_id : int
                The ID of the database.
            - schema : str
                The name of the schema containing the table.
            - name : str
                Name of the table.
            - description : str
                The description of the table, as specified by the table owner
            - is_view : bool
                True if this table represents a view. False if it represents a regular
                table.
            - row_count : int
                The number of rows in the table.
            - column_count : int
                The number of columns in the table.
            - size_mb : float (float)
                The size of the table in megabytes.
            - owner : str
                The database username of the table's owner.
            - distkey : str
                The column used as the Amazon Redshift distkey.
            - sortkeys : str
                The column used as the Amazon Redshift sortkey.
            - refresh_status : str
                How up-to-date the table's statistics on row counts, null counts,
                distinct counts, and values distributions are. One of: refreshing,
                stale, or current.
            - last_refresh : str (date-time)
                The time of the last statistics refresh.
            - data_updated_at : str (date-time)
                The last time that Civis Platform captured a change in this table.Only
                applicable for Redshift tables; please see the Civis help desk for more
                info.
            - schema_updated_at : str (date-time)
                The last time that Civis Platform captured a change to the table
                attributes/structure.Only applicable for Redshift tables; please see
                the Civis help desk for more info.
            - refresh_id : str
                The ID of the most recent statistics refresh.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - primary_keys : List[str]
                The primary keys for this table.
            - last_modified_keys : List[str]
                The columns indicating an entry's modification status for this table.
            - table_tags : List[:class:`civis.Response`]
                The table tags associated with this table.

                - id : int
                    Table Tag ID
                - name : str
                    Table Tag Name
            - ontology_mapping : :class:`civis.Response`
                The ontology-key to column-name mapping.  See /ontology for the list of
                valid ontology keys.
            - columns : List[:class:`civis.Response`]
                - name : str
                    Name of the column.
                - civis_data_type : str
                    The generic data type of the column (ex. "string"). Since this is
                    database-agnostic, it may be helpful when loading data to R/Python.
                - sql_type : str
                    The database-specific SQL type of the column (ex. "varchar(30)").
                - sample_values : List[str]
                    A sample of values from the column.
                - encoding : str
                    The compression encoding for this columnSee: http://docs.aws.amazon
                    .com/redshift/latest/dg/c_Compression_encodings.html
                - description : str
                    The description of the column, as specified by the table owner
                - order : int
                    Relative position of the column in the table.
                - min_value : str
                    Smallest value in the column.
                - max_value : str
                    Largest value in the column.
                - avg_value : float (float)
                    This parameter is deprecated.
                - stddev : float (float)
                    This parameter is deprecated.
                - value_distribution_percent : :class:`civis.Response`
                    A mapping between each value in the column and the percentage of
                    rows with that value.Only present for tables with fewer than
                    approximately 25,000,000 rows and for columns with fewer than
                    twenty distinct values.
                - coverage_count : int
                    Number of non-null values in the column.
                - null_count : int
                    Number of null values in the column.
                - possible_dependent_variable_types : List[str]
                    Possible dependent variable types the column may be used to model.
                    Null if it may not be used as a dependent variable.
                - useable_as_independent_variable : bool
                    Whether the column may be used as an independent variable to train
                    a model.
                - useable_as_primary_key : bool
                    Whether the column may be used as an primary key to identify table
                    rows.
                - value_distribution : :class:`civis.Response`
                    An object mapping distinct values in the column to the number of
                    times they appear in the column
                - distinct_count : int
                    Number of distinct values in the column. NULL values are counted
                    and treated as a single distinct value.
            - joins : List[:class:`civis.Response`]
                - id : int
                - left_table_id : int
                - left_identifier : str
                - right_table_id : int
                - right_identifier : str
                - on : str
                - left_join : bool
                - created_at : str (time)
                - updated_at : str (time)
            - multipart_key : List[str]
            - enhancements : List[:class:`civis.Response`]
                - type : str
                - created_at : str (time)
                - updated_at : str (time)
                - join_id : int
            - view_def : str
            - table_def : str
            - outgoing_table_matches : List[:class:`civis.Response`]
                - source_table_id : int
                    Source table
                - target_type : str
                    Target type
                - target_id : int
                    Target ID
                - target : :class:`civis.Response`
                    - name : str
                - job : :class:`civis.Response`
                    - id : int
                    - name : str
                    - type : str
                    - from_template_id : int
                    - state : str
                        Whether the job is idle, queued, running, cancelled, or failed.
                    - created_at : str (date-time)
                    - updated_at : str (date-time)
                    - runs : List[:class:`civis.Response`]
                        Information about the most recent runs of the job.

                        - id : int
                        - state : str
                        - created_at : str (time)
                            The time that the run was queued.
                        - started_at : str (time)
                            The time that the run started.
                        - finished_at : str (time)
                            The time that the run completed.
                        - error : str
                            The error message for this run, if present.
                    - last_run : :class:`civis.Response`
                        - id : int
                        - state : str
                        - created_at : str (time)
                            The time that the run was queued.
                        - started_at : str (time)
                            The time that the run started.
                        - finished_at : str (time)
                            The time that the run completed.
                        - error : str
                            The error message for this run, if present.
                    - hidden : bool
                        The hidden status of the item.
                    - match_options : :class:`civis.Response`
                        - max_matches : int
                        - threshold : str
        """
        ...

    def patch(
        self,
        id: int,
        *,
        ontology_mapping: dict | None = ...,
        description: str | None = ...,
        primary_keys: List[str] | None = ...,
        last_modified_keys: List[str] | None = ...,
    ) -> _ResponseTablesPatch:
        """Update a table

        API URL: ``PATCH /tables/{id}``

        Parameters
        ----------
        id : int
            The ID of the table.
        ontology_mapping : dict, optional
            The ontology-key to column-name mapping.  See /ontology for the list of
            valid ontology keys.
        description : str, optional
            The user-defined description of the table.
        primary_keys : List[str], optional
            A list of column(s) which together uniquely identify a row in the
            data.These columns must not contain NULL values.
        last_modified_keys : List[str], optional
            The columns indicating when a row was last modified.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the table.
            - database_id : int
                The ID of the database.
            - schema : str
                The name of the schema containing the table.
            - name : str
                Name of the table.
            - description : str
                The description of the table, as specified by the table owner
            - is_view : bool
                True if this table represents a view. False if it represents a regular
                table.
            - row_count : int
                The number of rows in the table.
            - column_count : int
                The number of columns in the table.
            - size_mb : float (float)
                The size of the table in megabytes.
            - owner : str
                The database username of the table's owner.
            - distkey : str
                The column used as the Amazon Redshift distkey.
            - sortkeys : str
                The column used as the Amazon Redshift sortkey.
            - refresh_status : str
                How up-to-date the table's statistics on row counts, null counts,
                distinct counts, and values distributions are. One of: refreshing,
                stale, or current.
            - last_refresh : str (date-time)
                The time of the last statistics refresh.
            - data_updated_at : str (date-time)
                The last time that Civis Platform captured a change in this table.Only
                applicable for Redshift tables; please see the Civis help desk for more
                info.
            - schema_updated_at : str (date-time)
                The last time that Civis Platform captured a change to the table
                attributes/structure.Only applicable for Redshift tables; please see
                the Civis help desk for more info.
            - refresh_id : str
                The ID of the most recent statistics refresh.
            - last_run : :class:`civis.Response`
                - id : int
                - state : str
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
                - error : str
                    The error message for this run, if present.
            - primary_keys : List[str]
                The primary keys for this table.
            - last_modified_keys : List[str]
                The columns indicating an entry's modification status for this table.
            - table_tags : List[:class:`civis.Response`]
                The table tags associated with this table.

                - id : int
                    Table Tag ID
                - name : str
                    Table Tag Name
            - ontology_mapping : :class:`civis.Response`
                The ontology-key to column-name mapping.  See /ontology for the list of
                valid ontology keys.
        """
        ...

    def list_columns(
        self,
        id: int,
        *,
        name: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseTablesListColumns]:
        """List columns in the specified table

        API URL: ``GET /tables/{id}/columns``

        Parameters
        ----------
        id : int
        name : str, optional
            Search for columns with the given name, within the specified table.
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to name. Must be one
            of: name, order.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to asc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - name : str
                Name of the column.
            - civis_data_type : str
                The generic data type of the column (ex. "string"). Since this is
                database-agnostic, it may be helpful when loading data to R/Python.
            - sql_type : str
                The database-specific SQL type of the column (ex. "varchar(30)").
            - sample_values : List[str]
                A sample of values from the column.
            - encoding : str
                The compression encoding for this columnSee: http://docs.aws.amazon.com
                /redshift/latest/dg/c_Compression_encodings.html
            - description : str
                The description of the column, as specified by the table owner
            - order : int
                Relative position of the column in the table.
            - min_value : str
                Smallest value in the column.
            - max_value : str
                Largest value in the column.
            - avg_value : float (float)
                This parameter is deprecated.
            - stddev : float (float)
                This parameter is deprecated.
            - value_distribution_percent : :class:`civis.Response`
                A mapping between each value in the column and the percentage of rows
                with that value.Only present for tables with fewer than approximately
                25,000,000 rows and for columns with fewer than twenty distinct values.
            - coverage_count : int
                Number of non-null values in the column.
            - null_count : int
                Number of null values in the column.
            - possible_dependent_variable_types : List[str]
                Possible dependent variable types the column may be used to model.
                Null if it may not be used as a dependent variable.
            - useable_as_independent_variable : bool
                Whether the column may be used as an independent variable to train a
                model.
            - useable_as_primary_key : bool
                Whether the column may be used as an primary key to identify table
                rows.
            - value_distribution : :class:`civis.Response`
                An object mapping distinct values in the column to the number of times
                they appear in the column
            - distinct_count : int
                Number of distinct values in the column. NULL values are counted and
                treated as a single distinct value.
        """
        ...

    def put_tags(
        self,
        id: int,
        table_tag_id: int,
    ) -> _ResponseTablesPutTags:
        """Add a tag to a table

        API URL: ``PUT /tables/{id}/tags/{table_tag_id}``

        Parameters
        ----------
        id : int
            The ID of the table.
        table_tag_id : int
            The ID of the tag.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the table.
            - table_tag_id : int
                The ID of the tag.
        """
        ...

    def delete_tags(
        self,
        id: int,
        table_tag_id: int,
    ) -> Response:
        """Add a tag to a table

        API URL: ``DELETE /tables/{id}/tags/{table_tag_id}``

        Parameters
        ----------
        id : int
            The ID of the table.
        table_tag_id : int
            The ID of the tag.

        Returns
        -------
        None
            Response code 200: success
        """
        ...

    def list_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseTablesListProjects]:
        """List the projects a Table belongs to

        API URL: ``GET /tables/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the Table.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a Table to a project

        API URL: ``PUT /tables/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Table.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a Table from a project

        API URL: ``DELETE /tables/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Table.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

class _Templates:
    def list_reports_shares(
        self,
        id: int,
    ) -> List[_ResponseTemplatesListReportsShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /templates/reports/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_reports_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseTemplatesPutReportsSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /templates/reports/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_reports_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /templates/reports/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_reports_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseTemplatesPutReportsSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /templates/reports/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_reports_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /templates/reports/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_reports_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseTemplatesListReportsDependencies]:
        """List dependent objects for this object

        API URL: ``GET /templates/reports/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_reports_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseTemplatesPutReportsTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /templates/reports/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list_reports(
        self,
        *,
        hidden: bool | None = ...,
        author: str | None = ...,
        category: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseTemplatesListReports]:
        """List Report Templates

        API URL: ``GET /templates/reports``

        Parameters
        ----------
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.
        author : str, optional
            If specified, return items from any of these authors. It accepts a comma-
            separated list of user IDs.
        category : str, optional
            A category to filter results by, one of: dataset-viz
        limit : int, optional
            Number of results to return. Defaults to 50. Maximum allowed is 1000.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to name. Must be one
            of: name, updated_at, created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to asc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
            - name : str
                The name of the template.
            - category : str
                The category of this report template.  Can be left blank.  Acceptable
                values are: dataset-viz
            - created_at : str (time)
            - updated_at : str (time)
            - use_count : int
                The number of uses of this template.
            - archived : bool
                Whether the template has been archived.
            - tech_reviewed : bool
                Whether this template has been audited by Civis for security
                vulnerability and correctness.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
        """
        ...

    def post_reports(
        self,
        name: str,
        code_body: str,
        *,
        category: str | None = ...,
        archived: bool | None = ...,
        provide_api_key: bool | None = ...,
        hidden: bool | None = ...,
    ) -> _ResponseTemplatesPostReports:
        """Create a Report Template

        API URL: ``POST /templates/reports``

        Parameters
        ----------
        name : str
            The name of the template.
        code_body : str
            The code for the Template body.
        category : str, optional
            The category of this report template.  Can be left blank.  Acceptable
            values are: dataset-viz
        archived : bool, optional
            Whether the template has been archived.
        provide_api_key : bool, optional
            Whether reports based on this template request an API Key from the report
            viewer.
        hidden : bool, optional
            The hidden status of the item.

        Returns
        -------
        :class:`civis.Response`
            - id : int
            - name : str
                The name of the template.
            - category : str
                The category of this report template.  Can be left blank.  Acceptable
                values are: dataset-viz
            - created_at : str (time)
            - updated_at : str (time)
            - use_count : int
                The number of uses of this template.
            - archived : bool
                Whether the template has been archived.
            - tech_reviewed : bool
                Whether this template has been audited by Civis for security
                vulnerability and correctness.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auth_code_url : str
                A URL to the template's stored code body.
            - provide_api_key : bool
                Whether reports based on this template request an API Key from the
                report viewer.
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def get_reports(
        self,
        id: int,
    ) -> _ResponseTemplatesGetReports:
        """Get a Report Template

        API URL: ``GET /templates/reports/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
            - name : str
                The name of the template.
            - category : str
                The category of this report template.  Can be left blank.  Acceptable
                values are: dataset-viz
            - created_at : str (time)
            - updated_at : str (time)
            - use_count : int
                The number of uses of this template.
            - archived : bool
                Whether the template has been archived.
            - tech_reviewed : bool
                Whether this template has been audited by Civis for security
                vulnerability and correctness.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auth_code_url : str
                A URL to the template's stored code body.
            - provide_api_key : bool
                Whether reports based on this template request an API Key from the
                report viewer.
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def put_reports(
        self,
        id: int,
        name: str,
        code_body: str,
        *,
        category: str | None = ...,
        archived: bool | None = ...,
        provide_api_key: bool | None = ...,
    ) -> _ResponseTemplatesPutReports:
        """Replace all attributes of this Report Template

        API URL: ``PUT /templates/reports/{id}``

        Parameters
        ----------
        id : int
        name : str
            The name of the template.
        code_body : str
            The code for the Template body.
        category : str, optional
            The category of this report template.  Can be left blank.  Acceptable
            values are: dataset-viz
        archived : bool, optional
            Whether the template has been archived.
        provide_api_key : bool, optional
            Whether reports based on this template request an API Key from the report
            viewer.

        Returns
        -------
        :class:`civis.Response`
            - id : int
            - name : str
                The name of the template.
            - category : str
                The category of this report template.  Can be left blank.  Acceptable
                values are: dataset-viz
            - created_at : str (time)
            - updated_at : str (time)
            - use_count : int
                The number of uses of this template.
            - archived : bool
                Whether the template has been archived.
            - tech_reviewed : bool
                Whether this template has been audited by Civis for security
                vulnerability and correctness.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auth_code_url : str
                A URL to the template's stored code body.
            - provide_api_key : bool
                Whether reports based on this template request an API Key from the
                report viewer.
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def patch_reports(
        self,
        id: int,
        *,
        name: str | None = ...,
        category: str | None = ...,
        archived: bool | None = ...,
        code_body: str | None = ...,
        provide_api_key: bool | None = ...,
    ) -> _ResponseTemplatesPatchReports:
        """Update some attributes of this Report Template

        API URL: ``PATCH /templates/reports/{id}``

        Parameters
        ----------
        id : int
        name : str, optional
            The name of the template.
        category : str, optional
            The category of this report template.  Can be left blank.  Acceptable
            values are: dataset-viz
        archived : bool, optional
            Whether the template has been archived.
        code_body : str, optional
            The code for the Template body.
        provide_api_key : bool, optional
            Whether reports based on this template request an API Key from the report
            viewer.

        Returns
        -------
        :class:`civis.Response`
            - id : int
            - name : str
                The name of the template.
            - category : str
                The category of this report template.  Can be left blank.  Acceptable
                values are: dataset-viz
            - created_at : str (time)
            - updated_at : str (time)
            - use_count : int
                The number of uses of this template.
            - archived : bool
                Whether the template has been archived.
            - tech_reviewed : bool
                Whether this template has been audited by Civis for security
                vulnerability and correctness.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auth_code_url : str
                A URL to the template's stored code body.
            - provide_api_key : bool
                Whether reports based on this template request an API Key from the
                report viewer.
            - hidden : bool
                The hidden status of the item.
        """
        ...

    def list_scripts_shares(
        self,
        id: int,
    ) -> List[_ResponseTemplatesListScriptsShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /templates/scripts/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_scripts_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseTemplatesPutScriptsSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /templates/scripts/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_scripts_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /templates/scripts/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_scripts_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseTemplatesPutScriptsSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /templates/scripts/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_scripts_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /templates/scripts/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_scripts_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseTemplatesListScriptsDependencies]:
        """List dependent objects for this object

        API URL: ``GET /templates/scripts/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_scripts_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseTemplatesPutScriptsTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /templates/scripts/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def list_scripts_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseTemplatesListScriptsProjects]:
        """List the projects a Script Template belongs to

        API URL: ``GET /templates/scripts/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the Script Template.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_scripts_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a Script Template to a project

        API URL: ``PUT /templates/scripts/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Script Template.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_scripts_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a Script Template from a project

        API URL: ``DELETE /templates/scripts/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Script Template.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_scripts(
        self,
        *,
        hidden: bool | None = ...,
        author: str | None = ...,
        category: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseTemplatesListScripts]:
        """List Script Templates

        API URL: ``GET /templates/scripts``

        Parameters
        ----------
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.
        author : str, optional
            If specified, return items from any of these authors. It accepts a comma-
            separated list of user IDs.
        category : str, optional
            A category to filter results by, one of: import, export, enhancement,
            model, and script
        limit : int, optional
            Number of results to return. Defaults to 50. Maximum allowed is 1000.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to name. Must be one
            of: name, updated_at, created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to asc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
            - public : bool
                If the template is public or not.
            - script_id : int
                The id of the script that this template uses.
            - user_context : str
                The user context of the script that this template uses.
            - name : str
                The name of the template.
            - category : str
                The category of this template.
            - created_at : str (time)
            - updated_at : str (time)
            - use_count : int
                The number of uses of this template.
            - ui_report_id : int
                The id of the report that this template uses.
            - tech_reviewed : bool
                Whether this template has been audited by Civis for security
                vulnerability and correctness.
            - archived : bool
                Whether the template has been archived.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
        """
        ...

    def post_scripts(
        self,
        script_id: int,
        name: str,
        *,
        note: str | None = ...,
        ui_report_id: int | None = ...,
        archived: bool | None = ...,
        hidden: bool | None = ...,
    ) -> _ResponseTemplatesPostScripts:
        """Create a Script Template

        API URL: ``POST /templates/scripts``

        Parameters
        ----------
        script_id : int
            The id of the script that this template uses.
        name : str
            The name of the template.
        note : str, optional
            A note describing what this template is used for; custom scripts created
            off this template will display this description.
        ui_report_id : int, optional
            The id of the report that this template uses.
        archived : bool, optional
            Whether the template has been archived.
        hidden : bool, optional
            The hidden status of the item.

        Returns
        -------
        :class:`civis.Response`
            - id : int
            - public : bool
                If the template is public or not.
            - script_id : int
                The id of the script that this template uses.
            - script_type : str
                The type of the template's backing script (e.g SQL, Container, Python,
                R, JavaScript)
            - user_context : str
                The user context of the script that this template uses.
            - params : List[:class:`civis.Response`]
                A definition of the parameters that this template's backing script
                accepts in the arguments field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - name : str
                The name of the template.
            - category : str
                The category of this template.
            - note : str
                A note describing what this template is used for; custom scripts
                created off this template will display this description.
            - created_at : str (time)
            - updated_at : str (time)
            - use_count : int
                The number of uses of this template.
            - ui_report_id : int
                The id of the report that this template uses.
            - tech_reviewed : bool
                Whether this template has been audited by Civis for security
                vulnerability and correctness.
            - archived : bool
                Whether the template has been archived.
            - hidden : bool
                The hidden status of the item.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def get_scripts(
        self,
        id: int,
    ) -> _ResponseTemplatesGetScripts:
        """Get a Script Template

        API URL: ``GET /templates/scripts/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
            - public : bool
                If the template is public or not.
            - script_id : int
                The id of the script that this template uses.
            - script_type : str
                The type of the template's backing script (e.g SQL, Container, Python,
                R, JavaScript)
            - user_context : str
                The user context of the script that this template uses.
            - params : List[:class:`civis.Response`]
                A definition of the parameters that this template's backing script
                accepts in the arguments field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - name : str
                The name of the template.
            - category : str
                The category of this template.
            - note : str
                A note describing what this template is used for; custom scripts
                created off this template will display this description.
            - created_at : str (time)
            - updated_at : str (time)
            - use_count : int
                The number of uses of this template.
            - ui_report_id : int
                The id of the report that this template uses.
            - tech_reviewed : bool
                Whether this template has been audited by Civis for security
                vulnerability and correctness.
            - archived : bool
                Whether the template has been archived.
            - hidden : bool
                The hidden status of the item.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def put_scripts(
        self,
        id: int,
        name: str,
        *,
        note: str | None = ...,
        ui_report_id: int | None = ...,
        archived: bool | None = ...,
    ) -> _ResponseTemplatesPutScripts:
        """Replace all attributes of this Script Template

        API URL: ``PUT /templates/scripts/{id}``

        Parameters
        ----------
        id : int
        name : str
            The name of the template.
        note : str, optional
            A note describing what this template is used for; custom scripts created
            off this template will display this description.
        ui_report_id : int, optional
            The id of the report that this template uses.
        archived : bool, optional
            Whether the template has been archived.

        Returns
        -------
        :class:`civis.Response`
            - id : int
            - public : bool
                If the template is public or not.
            - script_id : int
                The id of the script that this template uses.
            - script_type : str
                The type of the template's backing script (e.g SQL, Container, Python,
                R, JavaScript)
            - user_context : str
                The user context of the script that this template uses.
            - params : List[:class:`civis.Response`]
                A definition of the parameters that this template's backing script
                accepts in the arguments field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - name : str
                The name of the template.
            - category : str
                The category of this template.
            - note : str
                A note describing what this template is used for; custom scripts
                created off this template will display this description.
            - created_at : str (time)
            - updated_at : str (time)
            - use_count : int
                The number of uses of this template.
            - ui_report_id : int
                The id of the report that this template uses.
            - tech_reviewed : bool
                Whether this template has been audited by Civis for security
                vulnerability and correctness.
            - archived : bool
                Whether the template has been archived.
            - hidden : bool
                The hidden status of the item.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

    def patch_scripts(
        self,
        id: int,
        *,
        name: str | None = ...,
        note: str | None = ...,
        ui_report_id: int | None = ...,
        archived: bool | None = ...,
    ) -> _ResponseTemplatesPatchScripts:
        """Update some attributes of this Script Template

        API URL: ``PATCH /templates/scripts/{id}``

        Parameters
        ----------
        id : int
        name : str, optional
            The name of the template.
        note : str, optional
            A note describing what this template is used for; custom scripts created
            off this template will display this description.
        ui_report_id : int, optional
            The id of the report that this template uses.
        archived : bool, optional
            Whether the template has been archived.

        Returns
        -------
        :class:`civis.Response`
            - id : int
            - public : bool
                If the template is public or not.
            - script_id : int
                The id of the script that this template uses.
            - script_type : str
                The type of the template's backing script (e.g SQL, Container, Python,
                R, JavaScript)
            - user_context : str
                The user context of the script that this template uses.
            - params : List[:class:`civis.Response`]
                A definition of the parameters that this template's backing script
                accepts in the arguments field.

                - name : str
                    The variable's name as used within your code.
                - label : str
                    The label to present to users when asking them for the value.
                - description : str
                    A short sentence or fragment describing this parameter to the end
                    user.
                - type : str
                    The type of parameter. Valid options: string, multi_line_string,
                    integer, float, bool, file, table, database, credential_aws,
                    credential_redshift, or credential_custom
                - required : bool
                    Whether this param is required.
                - value : object
                    The value you would like to set this param to. Setting this value
                    makes this parameter a fixed param.
                - default : str
                    If an argument for this parameter is not defined, it will use this
                    default value. Use true, True, t, y, yes, or 1 for true bool's or
                    false, False, f, n, no, or 0 for false bool's. Cannot be used for
                    parameters that are required or a credential type.
                - allowed_values : List[:class:`civis.Response`]
                    The possible values this parameter can take, effectively making
                    this an enumerable parameter. Allowed values is an array of hashes
                    of the following format: `{label: 'Import', 'value': 'import'}`
            - name : str
                The name of the template.
            - category : str
                The category of this template.
            - note : str
                A note describing what this template is used for; custom scripts
                created off this template will display this description.
            - created_at : str (time)
            - updated_at : str (time)
            - use_count : int
                The number of uses of this template.
            - ui_report_id : int
                The id of the report that this template uses.
            - tech_reviewed : bool
                Whether this template has been audited by Civis for security
                vulnerability and correctness.
            - archived : bool
                Whether the template has been archived.
            - hidden : bool
                The hidden status of the item.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
        """
        ...

class _Usage:
    def list_matching(
        self,
        *,
        org_id: int | None = ...,
        task: str | None = ...,
        start_date: str | None = ...,
        end_date: str | None = ...,
    ) -> List[_ResponseUsageListMatching]:
        """Get usage statistics for a given organization

        API URL: ``GET /usage/matching``

        Parameters
        ----------
        org_id : int, optional
            The ID of the organization to get usage statistics for.
        task : str, optional
            The type of matching job contributing to this usage. One of ["IDR", "CDM"].
        start_date : str, optional
            The start date of the range to get usage statistics for.
        end_date : str, optional
            The end date of the range to get usage statistics for.

        Returns
        -------
        :class:`civis.ListResponse`
            - run_id : int
                The ID of the run which contributed this usage.
            - job_id : int
                The ID of the job which contributed this usage.
            - user_id : int
                The ID of the user who contributed this usage.
            - organization_id : int
                The organization of the user who contributed this usage.
            - run_created_at : str (date-time)
                When the run was created at.
            - run_time : int
                The duration of the run in seconds.
            - num_records : int
                The number of records matched by the run.
            - task : str
                The type of matching job contributing to this usage. One of ["IDR",
                "CDM"].
        """
        ...

    def list_llm(
        self,
        *,
        org_id: int | None = ...,
        start_date: str | None = ...,
        end_date: str | None = ...,
    ) -> List[_ResponseUsageListLlm]:
        """Get a list of usage statistics for a given organization

        API URL: ``GET /usage/llm``

        Parameters
        ----------
        org_id : int, optional
            The ID of the organization to get usage statistics for.
        start_date : str, optional
            The start date of the range to get usage statistics for."\
            "Defaults to the start of the current month if neither start_date nor
            end_date is specified.
        end_date : str, optional
            The end date of the range to get usage statistics for."\
            "Defaults to the end of the current day if neither start_date nor end_date
            is specified.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of the usage statistic to get.
            - run_id : int
                The ID of the run which contributed this usage.
            - job_id : int
                The ID of the job which contributed this usage.
            - user_id : int
                The ID of the user who contributed this usage.
            - organization_id : int
                The organization of the user who contributed this usage.
            - run_created_at : str (date-time)
                When the run was created at.
            - run_time : int
                The duration of the run in seconds.
            - credits : float (float)
                The number of credits used.
            - input_tokens : int
                The number of tokens input to the run.
            - output_tokens : int
                The number of tokens output from the run.
            - model_id : str
                The ID of the LLM model used.
        """
        ...

    def get_llm(
        self,
        id: int,
    ) -> _ResponseUsageGetLlm:
        """Get an individual usage statistic for a given organization

        API URL: ``GET /usage/llm/{id}``

        Parameters
        ----------
        id : int
            The ID of the usage statistic to get.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the usage statistic to get.
            - run_id : int
                The ID of the run which contributed this usage.
            - job_id : int
                The ID of the job which contributed this usage.
            - user_id : int
                The ID of the user who contributed this usage.
            - organization_id : int
                The organization of the user who contributed this usage.
            - run_created_at : str (date-time)
                When the run was created at.
            - run_time : int
                The duration of the run in seconds.
            - credits : float (float)
                The number of credits used.
            - input_tokens : int
                The number of tokens input to the run.
            - output_tokens : int
                The number of tokens output from the run.
            - model_id : str
                The ID of the LLM model used.
        """
        ...

    def list_llm_organization_summary(
        self,
        org_id: int,
        *,
        start_date: str | None = ...,
        end_date: str | None = ...,
    ) -> List[_ResponseUsageListLlmOrganizationSummary]:
        """Get summarized usage statistics for a given organization

        API URL: ``GET /usage/llm/organization/{org_id}/summary``

        Parameters
        ----------
        org_id : int
            The ID of the organization to get usage statistics for.
        start_date : str, optional
            The start date of the range to get usage statistics for."\
            "Defaults to the start of the current month if neither start_date nor
            end_date is specified.
        end_date : str, optional
            The end date of the range to get usage statistics for."\
            "Defaults to the end of the current day if neither start_date nor end_date
            is specified.

        Returns
        -------
        :class:`civis.ListResponse`
            - credits : float (float)
                The number of credits used.
            - organization_id : int
                The organization for which LLM usage statistics are summarized.
        """
        ...

class _Usage_Limits:
    def list_matching(
        self,
        *,
        task: str | None = ...,
    ) -> List[_ResponseUsageLimitsListMatching]:
        """List Matching Usage Limits

        API URL: ``GET /usage_limits/matching``

        Parameters
        ----------
        task : str, optional
            If specified, return limits for this task type only. One of 'IDR' or 'CDM'.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for the limit.
            - organization_id : int
                The ID of the organization to which this limit belongs.
            - created_at : str (time)
                The time this limit was created.
            - updated_at : str (time)
                The time the limit was last updated.
            - hard_limit : int
                The limit value. One of 50000000, 200000000, 500000000, 1000000000, and
                2000000000.
            - task : str
                The category of this limit. One of 'IDR' or 'CDM'.
            - notification_emails : List[str]
                Addresses to notify by e-mail when the limit is reached.
        """
        ...

    def get_matching(
        self,
        id: int,
    ) -> _ResponseUsageLimitsGetMatching:
        """Get a Matching Usage Limit

        API URL: ``GET /usage_limits/matching/{id}``

        Parameters
        ----------
        id : int
            The ID for the limit.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the limit.
            - organization_id : int
                The ID of the organization to which this limit belongs.
            - created_at : str (time)
                The time this limit was created.
            - updated_at : str (time)
                The time the limit was last updated.
            - hard_limit : int
                The limit value. One of 50000000, 200000000, 500000000, 1000000000, and
                2000000000.
            - task : str
                The category of this limit. One of 'IDR' or 'CDM'.
            - notification_emails : List[str]
                Addresses to notify by e-mail when the limit is reached.
        """
        ...

    def list_llm(
        self,
        *,
        organization_id: int | None = ...,
    ) -> List[_ResponseUsageLimitsListLlm]:
        """List LLM Usage Limits

        API URL: ``GET /usage_limits/llm``

        Parameters
        ----------
        organization_id : int, optional
            If specified, return limits for this organization only.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for the limit.
            - organization_id : int
                The ID of the organization to which this limit belongs.
            - created_at : str (time)
                The time this limit was created.
            - updated_at : str (time)
                The time the limit was last updated.
            - hard_limit : int
                The limit value. One of 1000, 10000, 50000, and 100000.
        """
        ...

    def get_llm(
        self,
        id: int,
    ) -> _ResponseUsageLimitsGetLlm:
        """Get a LLM Usage Limit

        API URL: ``GET /usage_limits/llm/{id}``

        Parameters
        ----------
        id : int
            The ID for the limit.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for the limit.
            - organization_id : int
                The ID of the organization to which this limit belongs.
            - created_at : str (time)
                The time this limit was created.
            - updated_at : str (time)
                The time the limit was last updated.
            - hard_limit : int
                The limit value. One of 1000, 10000, 50000, and 100000.
        """
        ...

class _Users:
    def list(
        self,
        *,
        feature_flag: str | None = ...,
        account_status: str | None = ...,
        query: str | None = ...,
        group_id: int | None = ...,
        group_ids: List[int] | None = ...,
        organization_id: int | None = ...,
        exclude_groups: bool | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseUsersList]:
        """List users

        API URL: ``GET /users``

        Parameters
        ----------
        feature_flag : str, optional
            Return users that have a feature flag enabled.
        account_status : str, optional
            The account status by which to filter users. May be one of "active",
            "inactive", or "all". Defaults to active.
        query : str, optional
            Return users who match the given query, based on name, user, email, and id.
        group_id : int, optional
            The ID of the group by which to filter users. Cannot be present if
            group_ids is.
        group_ids : List[int], optional
            The IDs of the groups by which to filter users. Cannot be present if
            group_id is.
        organization_id : int, optional
            The ID of the organization by which to filter users.
        exclude_groups : bool, optional
            Whether or to exclude users' groups. Default: false.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 10000.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to name. Must be one
            of: name, user.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to asc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of this user.
            - user : str
                The username of this user.
            - name : str
                The name of this user.
            - email : str
                The email of this user.
            - active : bool
                Whether this user account is active or deactivated.
            - primary_group_id : int
                The ID of the primary group of this user.
            - groups : List[:class:`civis.Response`]
                An array of all the groups this user is in.

                - id : int
                    The ID of this group.
                - name : str
                    The name of this group.
                - slug : str
                    The slug of this group.
                - organization_id : int
                    The ID of the organization associated with this group.
                - organization_name : str
                    The name of the organization associated with this group.
            - created_at : str (date-time)
                The date and time when the user was created.
            - current_sign_in_at : str (date-time)
                The date and time when the user's current session began.
            - updated_at : str (date-time)
                The date and time when the user was last updated.
            - last_seen_at : str (date-time)
                The date and time when the user last visited Platform.
            - suspended : bool
                Whether the user is suspended due to inactivity.
            - created_by_id : int
                The ID of the user who created this user.
            - last_updated_by_id : int
                The ID of the user who last updated this user.
        """
        ...

    def post(
        self,
        name: str,
        email: str,
        primary_group_id: int,
        user: str,
        *,
        active: bool | None = ...,
        city: str | None = ...,
        state: str | None = ...,
        time_zone: str | None = ...,
        initials: str | None = ...,
        department: str | None = ...,
        title: str | None = ...,
        prefers_sms_otp: bool | None = ...,
        group_ids: List[int] | None = ...,
        vpn_enabled: bool | None = ...,
        sso_disabled: bool | None = ...,
        otp_required_for_login: bool | None = ...,
        exempt_from_org_sms_otp_disabled: bool | None = ...,
        robot: bool | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseUsersPost:
        """Create a new user (must be a team or org admin)

        API URL: ``POST /users``

        Parameters
        ----------
        name : str
            The name of this user.
        email : str
            The email of this user.
        primary_group_id : int
            The ID of the primary group of this user.
        user : str
            The username of this user.
        active : bool, optional
            Whether this user account is active or deactivated.
        city : str, optional
            The city of this user.
        state : str, optional
            The state of this user.
        time_zone : str, optional
            The time zone of this user.
        initials : str, optional
            The initials of this user.
        department : str, optional
            The department of this user.
        title : str, optional
            The title of this user.
        prefers_sms_otp : bool, optional
            The preference for phone authorization of this user
        group_ids : List[int], optional
            An array of ids of all the groups this user is in.
        vpn_enabled : bool, optional
            The availability of vpn for this user.
        sso_disabled : bool, optional
            The availability of SSO for this user.
        otp_required_for_login : bool, optional
            The two factor authentication requirement for this user.
        exempt_from_org_sms_otp_disabled : bool, optional
            Whether the user has SMS OTP enabled on an individual level. This field
            does not matter if the org does not have SMS OTP disabled.
        robot : bool, optional
            Whether the user is a robot.
        send_email : bool, optional
            Whether the user will receive a welcome email. Defaults to false.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this user.
            - user : str
                The username of this user.
            - name : str
                The name of this user.
            - email : str
                The email of this user.
            - active : bool
                Whether this user account is active or deactivated.
            - primary_group_id : int
                The ID of the primary group of this user.
            - groups : List[:class:`civis.Response`]
                An array of all the groups this user is in.

                - id : int
                    The ID of this group.
                - name : str
                    The name of this group.
                - slug : str
                    The slug of this group.
                - organization_id : int
                    The ID of the organization associated with this group.
                - organization_name : str
                    The name of the organization associated with this group.
            - city : str
                The city of this user.
            - state : str
                The state of this user.
            - time_zone : str
                The time zone of this user.
            - initials : str
                The initials of this user.
            - department : str
                The department of this user.
            - title : str
                The title of this user.
            - github_username : str
                The GitHub username of this user.
            - prefers_sms_otp : bool
                The preference for phone authorization of this user
            - vpn_enabled : bool
                The availability of vpn for this user.
            - sso_disabled : bool
                The availability of SSO for this user.
            - otp_required_for_login : bool
                The two factor authentication requirement for this user.
            - exempt_from_org_sms_otp_disabled : bool
                Whether the user has SMS OTP enabled on an individual level. This field
                does not matter if the org does not have SMS OTP disabled.
            - sms_otp_allowed : bool
                Whether the user is allowed to receive two factor authentication codes
                via SMS.
            - robot : bool
                Whether the user is a robot.
            - phone : str
                The phone number of this user.
            - organization_slug : str
                The slug of the organization the user belongs to.
            - organization_sso_disable_capable : bool
                The user's organization's ability to disable sso for their users.
            - organization_login_type : str
                The user's organization's login type.
            - organization_sms_otp_disabled : bool
                Whether the user's organization has SMS OTP disabled.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - created_at : str (date-time)
                The date and time when the user was created.
            - updated_at : str (date-time)
                The date and time when the user was last updated.
            - last_seen_at : str (date-time)
                The date and time when the user last visited Platform.
            - suspended : bool
                Whether the user is suspended due to inactivity.
            - created_by_id : int
                The ID of the user who created this user.
            - last_updated_by_id : int
                The ID of the user who last updated this user.
            - unconfirmed_email : str
                The new email address awaiting confirmation from the user.
            - account_status : str
                Account status of this user. One of: "Active", "Deactivated",
                "Suspended", "Unsuspended"
        """
        ...

    def list_me(
        self,
    ) -> List[_ResponseUsersListMe]:
        """Show info about the logged-in user

        API URL: ``GET /users/me``

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of this user.
            - name : str
                This user's name.
            - email : str
                This user's email address.
            - username : str
                This user's username.
            - initials : str
                This user's initials.
            - last_checked_announcements : str (date-time)
                The date and time at which the user last checked their announcements.
            - feature_flags : :class:`civis.Response`
                The feature flag settings for this user.
            - roles : List[str]
                The roles this user has, listed by slug.
            - preferences : :class:`civis.Response`
                This user's preferences.
            - custom_branding : str
                The branding of Platform for this user.
            - primary_group_id : int
                The ID of the primary group of this user.
            - groups : List[:class:`civis.Response`]
                An array of all the groups this user is in.

                - id : int
                    The ID of this group.
                - name : str
                    The name of this group.
                - slug : str
                    The slug of this group.
                - organization_id : int
                    The ID of the organization associated with this group.
                - organization_name : str
                    The name of the organization associated with this group.
            - organization_name : str
                The name of the organization the user belongs to.
            - organization_slug : str
                The slug of the organization the user belongs to.
            - organization_default_theme_id : int
                The ID of the organizations's default theme.
            - created_at : str (date-time)
                The date and time when the user was created.
            - sign_in_count : int
                The number of times the user has signed in.
            - assuming_role : bool
                Whether the user is assuming this role or not.
            - assuming_admin : bool
                Whether the user is assuming admin.
            - assuming_admin_expiration : str (date-time)
                When the user's admin role is set to expire.
            - superadmin_mode_expiration : str (date-time)
                The user is in superadmin mode when set to a DateTime. The user is not
                in superadmin mode when set to null.
            - disable_non_compliant_fedramp_features : bool
                Whether to disable non-compliant fedramp features.
            - persona_role : str
                The high-level role representing the current user's main permissions.
            - created_by_id : int
                The ID of the user who created this user.
            - last_updated_by_id : int
                The ID of the user who last updated this user.
        """
        ...

    def patch_me(
        self,
        *,
        preferences: dict | None = ...,
        last_checked_announcements: str | None = ...,
    ) -> _ResponseUsersPatchMe:
        """Update info about the logged-in user

        API URL: ``PATCH /users/me``

        Parameters
        ----------
        preferences : dict, optional
            - app_index_order_field : str
                This attribute is deprecated
            - app_index_order_dir : str
                This attribute is deprecated
            - result_index_order_field : str
                Order field for the reports index page.
            - result_index_order_dir : str
                Order direction for the reports index page.
            - result_index_type_filter : str
                Type filter for the reports index page.
            - result_index_author_filter : str
                Author filter for the reports index page.
            - result_index_archived_filter : str
                Archived filter for the reports index page.
            - import_index_order_field : str
                Order field for the imports index page.
            - import_index_order_dir : str
                Order direction for the imports index page.
            - import_index_type_filter : str
                Type filter for the imports index page.
            - import_index_author_filter : str
                Author filter for the imports index page.
            - import_index_dest_filter : str
                Destination filter for the imports index page.
            - import_index_status_filter : str
                Status filter for the imports index page.
            - import_index_archived_filter : str
                Archived filter for the imports index page.
            - export_index_order_field : str
                Order field for the exports index page.
            - export_index_order_dir : str
                Order direction for the exports index page.
            - export_index_type_filter : str
                Type filter for the exports index page.
            - export_index_author_filter : str
                Author filter for the exports index page.
            - export_index_status_filter : str
                Status filter for the exports index page.
            - model_index_order_field : str
                Order field for the models index page.
            - model_index_order_dir : str
                Order direction for the models index page.
            - model_index_author_filter : str
                Author filter for the models index page.
            - model_index_status_filter : str
                Status filter for the models index page.
            - model_index_archived_filter : str
                Archived filter for the models index page.
            - model_index_thumbnail_view : str
                Thumbnail view for the models index page.
            - script_index_order_field : str
                Order field for the scripts index page.
            - script_index_order_dir : str
                Order direction for the scripts index page.
            - script_index_type_filter : str
                Type filter for the scripts index page.
            - script_index_author_filter : str
                Author filter for the scripts index page.
            - script_index_status_filter : str
                Status filter for the scripts index page.
            - script_index_archived_filter : str
                Archived filter for the scripts index page.
            - project_index_order_field : str
                Order field for the projects index page.
            - project_index_order_dir : str
                Order direction for the projects index page.
            - project_index_author_filter : str
                Author filter for the projects index page.
            - project_index_archived_filter : str
                Archived filter for the projects index page.
            - report_index_thumbnail_view : str
                Thumbnail view for the reports index page.
            - project_detail_order_field : str
                Order field for projects detail pages.
            - project_detail_order_dir : str
                Order direction for projects detail pages.
            - project_detail_author_filter : str
                Author filter for projects detail pages.
            - project_detail_type_filter : str
                Type filter for projects detail pages.
            - project_detail_archived_filter : str
                Archived filter for the projects detail pages.
            - enhancement_index_order_field : str
                Order field for the enhancements index page.
            - enhancement_index_order_dir : str
                Order direction for the enhancements index page.
            - enhancement_index_author_filter : str
                Author filter for the enhancements index page.
            - enhancement_index_archived_filter : str
                Archived filter for the enhancements index page.
            - preferred_server_id : int
                ID of preferred server.
            - civis_explore_skip_intro : bool
                Whether the user is shown steps for each exploration.
            - registration_index_order_field : str
                Order field for the registrations index page.
            - registration_index_order_dir : str
                Order direction for the registrations index page.
            - registration_index_status_filter : str
                Status filter for the registrations index page.
            - upgrade_requested : str
                Whether a free trial upgrade has been requested.
            - welcome_order_field : str
                Order direction for the welcome page.
            - welcome_order_dir : str
                Order direction for the welcome page.
            - welcome_author_filter : str
                Status filter for the welcome page.
            - welcome_status_filter : str
                Status filter for the welcome page.
            - welcome_archived_filter : str
                Status filter for the welcome page.
            - data_pane_width : str
                Width of the data pane when expanded.
            - data_pane_collapsed : str
                Whether the data pane is collapsed.
            - notebook_order_field : str
                Order field for the notebooks page.
            - notebook_order_dir : str
                Order direction for the notebooks page.
            - notebook_author_filter : str
                Author filter for the notebooks page.
            - notebook_archived_filter : str
                Archived filter for the notebooks page.
            - notebook_status_filter : str
                Status filter for the notebooks page.
            - workflow_index_order_field : str
                Order field for the workflows page.
            - workflow_index_order_dir : str
                Order direction for the workflows page.
            - workflow_index_author_filter : str
                Author filter for the workflows page.
            - workflow_index_archived_filter : str
                Archived filter for the workflows page.
            - service_order_field : str
                Order field for the services page.
            - service_order_dir : str
                Order direction for the services page.
            - service_author_filter : str
                Author filter for the services page.
            - service_archived_filter : str
                Archived filter for the services page.
            - assume_role_history : str
                JSON string of previously assumed roles.
            - default_success_notifications_on : bool
                Whether email notifications for the success of all applicable jobs are
                on by default.
            - default_failure_notifications_on : bool
                Whether email notifications for the failure of all applicable jobs are
                on by default.
            - my_activity_metrics : bool
                Whether the activity metrics are filtered to the current user.
            - standard_sql_autocomplete_disabled : bool
                Whether the query page includes standard SQL autocomplete.
            - ai_sql_assist_disabled : bool
                Whether the query page includes AI-powered SQL autocomplete.
            - query_preview_rows : int
                Number of preview rows query should return in the UI.
        last_checked_announcements : str (date-time), optional
            The date and time at which the user last checked their announcements.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this user.
            - name : str
                This user's name.
            - email : str
                This user's email address.
            - username : str
                This user's username.
            - initials : str
                This user's initials.
            - last_checked_announcements : str (date-time)
                The date and time at which the user last checked their announcements.
            - feature_flags : :class:`civis.Response`
                The feature flag settings for this user.
            - roles : List[str]
                The roles this user has, listed by slug.
            - preferences : :class:`civis.Response`
                This user's preferences.
            - custom_branding : str
                The branding of Platform for this user.
            - primary_group_id : int
                The ID of the primary group of this user.
            - groups : List[:class:`civis.Response`]
                An array of all the groups this user is in.

                - id : int
                    The ID of this group.
                - name : str
                    The name of this group.
                - slug : str
                    The slug of this group.
                - organization_id : int
                    The ID of the organization associated with this group.
                - organization_name : str
                    The name of the organization associated with this group.
            - organization_name : str
                The name of the organization the user belongs to.
            - organization_slug : str
                The slug of the organization the user belongs to.
            - organization_default_theme_id : int
                The ID of the organizations's default theme.
            - created_at : str (date-time)
                The date and time when the user was created.
            - sign_in_count : int
                The number of times the user has signed in.
            - assuming_role : bool
                Whether the user is assuming this role or not.
            - assuming_admin : bool
                Whether the user is assuming admin.
            - assuming_admin_expiration : str (date-time)
                When the user's admin role is set to expire.
            - superadmin_mode_expiration : str (date-time)
                The user is in superadmin mode when set to a DateTime. The user is not
                in superadmin mode when set to null.
            - disable_non_compliant_fedramp_features : bool
                Whether to disable non-compliant fedramp features.
            - persona_role : str
                The high-level role representing the current user's main permissions.
            - created_by_id : int
                The ID of the user who created this user.
            - last_updated_by_id : int
                The ID of the user who last updated this user.
        """
        ...

    def list_me_activity(
        self,
        *,
        status: str | None = ...,
        author: str | None = ...,
        order: str | None = ...,
    ) -> List[_ResponseUsersListMeActivity]:
        """Get recent activity for logged-in user

        API URL: ``GET /users/me/activity``

        Parameters
        ----------
        status : str, optional
            The status to filter objects by. One of "all", "succeeded", "failed", or
            "running".
        author : str, optional
            A comma separated list of author IDs to filter objects by.
        order : str, optional
            The order of the jobs. If set to "name", the order is DESC alphabetically.
            If set to "newest", the order is DESC by most recently updated.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : str
                The ID of the object.
            - name : str
                The name of the object.
            - type : str
                The type of the object.
            - user : str
                The user associated with the object.
            - category : str
                The job category, if the object is a job.
            - state : str
                The state of the object. One of "succeeded", "failed", or "running".
            - updated_at : str (date-time)
                When the object was last updated.
            - next_run_at : str (date-time)
                When the job is next scheduled to run, if the object is a job.
            - last_run_id : str
                The ID of the last run, if the object is a job.
            - last_run_state : str
                The state of the last run, if the object is a job. One of "succeeded",
                "failed", or "running".
        """
        ...

    def list_me_organization_admins(
        self,
    ) -> List[_ResponseUsersListMeOrganizationAdmins]:
        """Get list of organization admins for logged-in user

        API URL: ``GET /users/me/organization_admins``

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of this user.
            - name : str
                This user's name.
            - username : str
                This user's username.
            - initials : str
                This user's initials.
            - online : bool
                Whether this user is online.
            - email : str
                This user's email address.
        """
        ...

    def list_me_themes(
        self,
    ) -> List[_ResponseUsersListMeThemes]:
        """List themes

        API URL: ``GET /users/me/themes``

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID of this theme.
            - name : str
                The name of this theme.
            - created_at : str (date-time)
            - updated_at : str (date-time)
        """
        ...

    def get_me_themes(
        self,
        id: int,
    ) -> _ResponseUsersGetMeThemes:
        """Show a theme

        API URL: ``GET /users/me/themes/{id}``

        Parameters
        ----------
        id : int
            The ID of this theme.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this theme.
            - name : str
                The name of this theme.
            - organization_ids : List[int]
                List of organization ID's allowed to use this theme.
            - settings : str
                The theme configuration object.
            - logo_file : :class:`civis.Response`
                - id : int
                    The ID of the logo image file.
                - download_url : str
                    The URL of the logo image file.
            - created_at : str (date-time)
            - updated_at : str (date-time)
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseUsersGet:
        """Show info about a user

        API URL: ``GET /users/{id}``

        Parameters
        ----------
        id : int
            The ID of this user.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this user.
            - user : str
                The username of this user.
            - name : str
                The name of this user.
            - email : str
                The email of this user.
            - active : bool
                Whether this user account is active or deactivated.
            - primary_group_id : int
                The ID of the primary group of this user.
            - groups : List[:class:`civis.Response`]
                An array of all the groups this user is in.

                - id : int
                    The ID of this group.
                - name : str
                    The name of this group.
                - slug : str
                    The slug of this group.
                - organization_id : int
                    The ID of the organization associated with this group.
                - organization_name : str
                    The name of the organization associated with this group.
            - city : str
                The city of this user.
            - state : str
                The state of this user.
            - time_zone : str
                The time zone of this user.
            - initials : str
                The initials of this user.
            - department : str
                The department of this user.
            - title : str
                The title of this user.
            - github_username : str
                The GitHub username of this user.
            - prefers_sms_otp : bool
                The preference for phone authorization of this user
            - vpn_enabled : bool
                The availability of vpn for this user.
            - sso_disabled : bool
                The availability of SSO for this user.
            - otp_required_for_login : bool
                The two factor authentication requirement for this user.
            - exempt_from_org_sms_otp_disabled : bool
                Whether the user has SMS OTP enabled on an individual level. This field
                does not matter if the org does not have SMS OTP disabled.
            - sms_otp_allowed : bool
                Whether the user is allowed to receive two factor authentication codes
                via SMS.
            - robot : bool
                Whether the user is a robot.
            - phone : str
                The phone number of this user.
            - organization_slug : str
                The slug of the organization the user belongs to.
            - organization_sso_disable_capable : bool
                The user's organization's ability to disable sso for their users.
            - organization_login_type : str
                The user's organization's login type.
            - organization_sms_otp_disabled : bool
                Whether the user's organization has SMS OTP disabled.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - created_at : str (date-time)
                The date and time when the user was created.
            - updated_at : str (date-time)
                The date and time when the user was last updated.
            - last_seen_at : str (date-time)
                The date and time when the user last visited Platform.
            - suspended : bool
                Whether the user is suspended due to inactivity.
            - created_by_id : int
                The ID of the user who created this user.
            - last_updated_by_id : int
                The ID of the user who last updated this user.
            - unconfirmed_email : str
                The new email address awaiting confirmation from the user.
            - account_status : str
                Account status of this user. One of: "Active", "Deactivated",
                "Suspended", "Unsuspended"
        """
        ...

    def patch(
        self,
        id: int,
        *,
        name: str | None = ...,
        email: str | None = ...,
        active: bool | None = ...,
        primary_group_id: int | None = ...,
        city: str | None = ...,
        state: str | None = ...,
        time_zone: str | None = ...,
        initials: str | None = ...,
        department: str | None = ...,
        title: str | None = ...,
        prefers_sms_otp: bool | None = ...,
        group_ids: List[int] | None = ...,
        vpn_enabled: bool | None = ...,
        sso_disabled: bool | None = ...,
        otp_required_for_login: bool | None = ...,
        exempt_from_org_sms_otp_disabled: bool | None = ...,
        robot: bool | None = ...,
        phone: str | None = ...,
        password: str | None = ...,
        account_status: str | None = ...,
    ) -> _ResponseUsersPatch:
        """Update info about a user (must be a team or org admin)

        API URL: ``PATCH /users/{id}``

        Parameters
        ----------
        id : int
            The ID of this user.
        name : str, optional
            The name of this user.
        email : str, optional
            The email of this user.
        active : bool, optional
            Whether this user account is active or deactivated.
        primary_group_id : int, optional
            The ID of the primary group of this user.
        city : str, optional
            The city of this user.
        state : str, optional
            The state of this user.
        time_zone : str, optional
            The time zone of this user.
        initials : str, optional
            The initials of this user.
        department : str, optional
            The department of this user.
        title : str, optional
            The title of this user.
        prefers_sms_otp : bool, optional
            The preference for phone authorization of this user
        group_ids : List[int], optional
            An array of ids of all the groups this user is in.
        vpn_enabled : bool, optional
            The availability of vpn for this user.
        sso_disabled : bool, optional
            The availability of SSO for this user.
        otp_required_for_login : bool, optional
            The two factor authentication requirement for this user.
        exempt_from_org_sms_otp_disabled : bool, optional
            Whether the user has SMS OTP enabled on an individual level. This field
            does not matter if the org does not have SMS OTP disabled.
        robot : bool, optional
            Whether the user is a robot.
        phone : str, optional
            The phone number of this user.
        password : str, optional
            The password of this user.
        account_status : str, optional
            Account status of this user. One of: "Active", "Deactivated", "Suspended",
            "Unsuspended"

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this user.
            - user : str
                The username of this user.
            - name : str
                The name of this user.
            - email : str
                The email of this user.
            - active : bool
                Whether this user account is active or deactivated.
            - primary_group_id : int
                The ID of the primary group of this user.
            - groups : List[:class:`civis.Response`]
                An array of all the groups this user is in.

                - id : int
                    The ID of this group.
                - name : str
                    The name of this group.
                - slug : str
                    The slug of this group.
                - organization_id : int
                    The ID of the organization associated with this group.
                - organization_name : str
                    The name of the organization associated with this group.
            - city : str
                The city of this user.
            - state : str
                The state of this user.
            - time_zone : str
                The time zone of this user.
            - initials : str
                The initials of this user.
            - department : str
                The department of this user.
            - title : str
                The title of this user.
            - github_username : str
                The GitHub username of this user.
            - prefers_sms_otp : bool
                The preference for phone authorization of this user
            - vpn_enabled : bool
                The availability of vpn for this user.
            - sso_disabled : bool
                The availability of SSO for this user.
            - otp_required_for_login : bool
                The two factor authentication requirement for this user.
            - exempt_from_org_sms_otp_disabled : bool
                Whether the user has SMS OTP enabled on an individual level. This field
                does not matter if the org does not have SMS OTP disabled.
            - sms_otp_allowed : bool
                Whether the user is allowed to receive two factor authentication codes
                via SMS.
            - robot : bool
                Whether the user is a robot.
            - phone : str
                The phone number of this user.
            - organization_slug : str
                The slug of the organization the user belongs to.
            - organization_sso_disable_capable : bool
                The user's organization's ability to disable sso for their users.
            - organization_login_type : str
                The user's organization's login type.
            - organization_sms_otp_disabled : bool
                Whether the user's organization has SMS OTP disabled.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - created_at : str (date-time)
                The date and time when the user was created.
            - updated_at : str (date-time)
                The date and time when the user was last updated.
            - last_seen_at : str (date-time)
                The date and time when the user last visited Platform.
            - suspended : bool
                Whether the user is suspended due to inactivity.
            - created_by_id : int
                The ID of the user who created this user.
            - last_updated_by_id : int
                The ID of the user who last updated this user.
            - unconfirmed_email : str
                The new email address awaiting confirmation from the user.
            - account_status : str
                Account status of this user. One of: "Active", "Deactivated",
                "Suspended", "Unsuspended"
        """
        ...

    def list_api_keys(
        self,
        id: str,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseUsersListApiKeys]:
        """Show API keys belonging to the specified user

        API URL: ``GET /users/{id}/api_keys``

        Parameters
        ----------
        id : str
            The ID of the user or 'me'.
        limit : int, optional
            Number of results to return. Defaults to its maximum of 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID of the API key.
            - name : str
                The name of the API key.
            - expires_at : str (date-time)
                The date and time when the key expired.
            - created_at : str (date-time)
                The date and time when the key was created.
            - revoked_at : str (date-time)
                The date and time when the key was revoked.
            - last_used_at : str (date-time)
                The date and time when the key was last used.
            - scopes : List[str]
                The scopes which the key is permissioned on.
            - use_count : int
                The number of times the key has been used.
            - expired : bool
                True if the key has expired.
            - active : bool
                True if the key has neither expired nor been revoked.
            - constraint_count : int
                The number of constraints on the created key
        """
        ...

    def post_api_keys(
        self,
        id: str,
        expires_in: int,
        name: str,
        *,
        constraints: List[dict] | None = ...,
    ) -> _ResponseUsersPostApiKeys:
        """Create a new API key belonging to the logged-in user

        API URL: ``POST /users/{id}/api_keys``

        Parameters
        ----------
        id : str
            The ID of the user or 'me'.
        expires_in : int
            The number of seconds the key should last for.
        name : str
            The name of the API key.
        constraints : List[dict], optional
            Constraints on the abilities of the created key.

            - constraint : str
                The path matcher of the constraint.
            - constraint_type : str
                The type of constraint (exact/prefix/regex/verb).
            - get_allowed : bool
                Whether the constraint allows GET requests.
            - head_allowed : bool
                Whether the constraint allows HEAD requests.
            - post_allowed : bool
                Whether the constraint allows POST requests.
            - put_allowed : bool
                Whether the constraint allows PUT requests.
            - patch_allowed : bool
                Whether the constraint allows PATCH requests.
            - delete_allowed : bool
                Whether the constraint allows DELETE requests.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the API key.
            - name : str
                The name of the API key.
            - expires_at : str (date-time)
                The date and time when the key expired.
            - created_at : str (date-time)
                The date and time when the key was created.
            - revoked_at : str (date-time)
                The date and time when the key was revoked.
            - last_used_at : str (date-time)
                The date and time when the key was last used.
            - scopes : List[str]
                The scopes which the key is permissioned on.
            - use_count : int
                The number of times the key has been used.
            - expired : bool
                True if the key has expired.
            - active : bool
                True if the key has neither expired nor been revoked.
            - constraints : List[:class:`civis.Response`]
                Constraints on the abilities of the created key

                - constraint : str
                    The path matcher of the constraint.
                - constraint_type : str
                    The type of constraint (exact/prefix/regex/verb).
                - get_allowed : bool
                    Whether the constraint allows GET requests.
                - head_allowed : bool
                    Whether the constraint allows HEAD requests.
                - post_allowed : bool
                    Whether the constraint allows POST requests.
                - put_allowed : bool
                    Whether the constraint allows PUT requests.
                - patch_allowed : bool
                    Whether the constraint allows PATCH requests.
                - delete_allowed : bool
                    Whether the constraint allows DELETE requests.
            - token : str
                The API key.
        """
        ...

    def get_api_keys(
        self,
        id: str,
        key_id: int,
    ) -> _ResponseUsersGetApiKeys:
        """Show the specified API key

        API URL: ``GET /users/{id}/api_keys/{key_id}``

        Parameters
        ----------
        id : str
            The ID of the user or 'me'.
        key_id : int
            The ID of the API key.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the API key.
            - name : str
                The name of the API key.
            - expires_at : str (date-time)
                The date and time when the key expired.
            - created_at : str (date-time)
                The date and time when the key was created.
            - revoked_at : str (date-time)
                The date and time when the key was revoked.
            - last_used_at : str (date-time)
                The date and time when the key was last used.
            - scopes : List[str]
                The scopes which the key is permissioned on.
            - use_count : int
                The number of times the key has been used.
            - expired : bool
                True if the key has expired.
            - active : bool
                True if the key has neither expired nor been revoked.
            - constraints : List[:class:`civis.Response`]
                Constraints on the abilities of the created key

                - constraint : str
                    The path matcher of the constraint.
                - constraint_type : str
                    The type of constraint (exact/prefix/regex/verb).
                - get_allowed : bool
                    Whether the constraint allows GET requests.
                - head_allowed : bool
                    Whether the constraint allows HEAD requests.
                - post_allowed : bool
                    Whether the constraint allows POST requests.
                - put_allowed : bool
                    Whether the constraint allows PUT requests.
                - patch_allowed : bool
                    Whether the constraint allows PATCH requests.
                - delete_allowed : bool
                    Whether the constraint allows DELETE requests.
        """
        ...

    def delete_api_keys(
        self,
        id: str,
        key_id: int,
    ) -> _ResponseUsersDeleteApiKeys:
        """Revoke the specified API key

        API URL: ``DELETE /users/{id}/api_keys/{key_id}``

        Parameters
        ----------
        id : str
            The ID of the user or 'me'.
        key_id : int
            The ID of the API key.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of the API key.
            - name : str
                The name of the API key.
            - expires_at : str (date-time)
                The date and time when the key expired.
            - created_at : str (date-time)
                The date and time when the key was created.
            - revoked_at : str (date-time)
                The date and time when the key was revoked.
            - last_used_at : str (date-time)
                The date and time when the key was last used.
            - scopes : List[str]
                The scopes which the key is permissioned on.
            - use_count : int
                The number of times the key has been used.
            - expired : bool
                True if the key has expired.
            - active : bool
                True if the key has neither expired nor been revoked.
            - constraints : List[:class:`civis.Response`]
                Constraints on the abilities of the created key

                - constraint : str
                    The path matcher of the constraint.
                - constraint_type : str
                    The type of constraint (exact/prefix/regex/verb).
                - get_allowed : bool
                    Whether the constraint allows GET requests.
                - head_allowed : bool
                    Whether the constraint allows HEAD requests.
                - post_allowed : bool
                    Whether the constraint allows POST requests.
                - put_allowed : bool
                    Whether the constraint allows PUT requests.
                - patch_allowed : bool
                    Whether the constraint allows PATCH requests.
                - delete_allowed : bool
                    Whether the constraint allows DELETE requests.
        """
        ...

    def delete_sessions(
        self,
        id: int,
    ) -> _ResponseUsersDeleteSessions:
        """Terminate all of the user's active sessions (must be a team or org admin)

        API URL: ``DELETE /users/{id}/sessions``

        Parameters
        ----------
        id : int
            The ID of this user.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this user.
            - user : str
                The username of this user.
            - name : str
                The name of this user.
            - email : str
                The email of this user.
            - active : bool
                Whether this user account is active or deactivated.
            - primary_group_id : int
                The ID of the primary group of this user.
            - groups : List[:class:`civis.Response`]
                An array of all the groups this user is in.

                - id : int
                    The ID of this group.
                - name : str
                    The name of this group.
                - slug : str
                    The slug of this group.
                - organization_id : int
                    The ID of the organization associated with this group.
                - organization_name : str
                    The name of the organization associated with this group.
            - city : str
                The city of this user.
            - state : str
                The state of this user.
            - time_zone : str
                The time zone of this user.
            - initials : str
                The initials of this user.
            - department : str
                The department of this user.
            - title : str
                The title of this user.
            - github_username : str
                The GitHub username of this user.
            - prefers_sms_otp : bool
                The preference for phone authorization of this user
            - vpn_enabled : bool
                The availability of vpn for this user.
            - sso_disabled : bool
                The availability of SSO for this user.
            - otp_required_for_login : bool
                The two factor authentication requirement for this user.
            - exempt_from_org_sms_otp_disabled : bool
                Whether the user has SMS OTP enabled on an individual level. This field
                does not matter if the org does not have SMS OTP disabled.
            - sms_otp_allowed : bool
                Whether the user is allowed to receive two factor authentication codes
                via SMS.
            - robot : bool
                Whether the user is a robot.
            - phone : str
                The phone number of this user.
            - organization_slug : str
                The slug of the organization the user belongs to.
            - organization_sso_disable_capable : bool
                The user's organization's ability to disable sso for their users.
            - organization_login_type : str
                The user's organization's login type.
            - organization_sms_otp_disabled : bool
                Whether the user's organization has SMS OTP disabled.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - created_at : str (date-time)
                The date and time when the user was created.
            - updated_at : str (date-time)
                The date and time when the user was last updated.
            - last_seen_at : str (date-time)
                The date and time when the user last visited Platform.
            - suspended : bool
                Whether the user is suspended due to inactivity.
            - created_by_id : int
                The ID of the user who created this user.
            - last_updated_by_id : int
                The ID of the user who last updated this user.
            - unconfirmed_email : str
                The new email address awaiting confirmation from the user.
            - account_status : str
                Account status of this user. One of: "Active", "Deactivated",
                "Suspended", "Unsuspended"
        """
        ...

    def list_me_favorites(
        self,
        *,
        object_id: int | None = ...,
        object_type: str | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseUsersListMeFavorites]:
        """List Favorites

        API URL: ``GET /users/me/favorites``

        Parameters
        ----------
        object_id : int, optional
            The id of the object. If specified as a query parameter, must also specify
            object_type parameter.
        object_type : str, optional
            The type of the object that is favorited. Valid options: Container Script,
            Identity Resolution, Import, Python Script, R Script, dbt Script,
            JavaScript Script, SQL Script, Template Script, Project, Workflow, Tableau
            Report, Service Report, HTML Report, SQL Report
        limit : int, optional
            Number of results to return. Defaults to 50. Maximum allowed is 1000.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to position. Must be
            one of: position, created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to asc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The id of the favorite.
            - object_id : int
                The id of the object. If specified as a query parameter, must also
                specify object_type parameter.
            - object_type : str
                The type of the object that is favorited. Valid options: Container
                Script, Identity Resolution, Import, Python Script, R Script, dbt
                Script, JavaScript Script, SQL Script, Template Script, Project,
                Workflow, Tableau Report, Service Report, HTML Report, SQL Report
            - object_name : str
                The name of the object that is favorited.
            - created_at : str (time)
                The time this favorite was created.
            - object_updated_at : str (time)
                The time the object that is favorited was last updated
            - object_author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - position : int
                The rank position of this favorite. Use the patch
                users/me/favorites/:id/ranking/ endpoints to update.
        """
        ...

    def post_me_favorites(
        self,
        object_id: int,
        object_type: str,
    ) -> _ResponseUsersPostMeFavorites:
        """Favorite an item

        API URL: ``POST /users/me/favorites``

        Parameters
        ----------
        object_id : int
            The id of the object. If specified as a query parameter, must also specify
            object_type parameter.
        object_type : str
            The type of the object that is favorited. Valid options: Container Script,
            Identity Resolution, Import, Python Script, R Script, dbt Script,
            JavaScript Script, SQL Script, Template Script, Project, Workflow, Tableau
            Report, Service Report, HTML Report, SQL Report

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The id of the favorite.
            - object_id : int
                The id of the object. If specified as a query parameter, must also
                specify object_type parameter.
            - object_type : str
                The type of the object that is favorited. Valid options: Container
                Script, Identity Resolution, Import, Python Script, R Script, dbt
                Script, JavaScript Script, SQL Script, Template Script, Project,
                Workflow, Tableau Report, Service Report, HTML Report, SQL Report
            - object_name : str
                The name of the object that is favorited.
            - created_at : str (time)
                The time this favorite was created.
            - object_updated_at : str (time)
                The time the object that is favorited was last updated
            - object_author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
        """
        ...

    def delete_me_favorites(
        self,
        id: int,
    ) -> Response:
        """Unfavorite an item

        API URL: ``DELETE /users/me/favorites/{id}``

        Parameters
        ----------
        id : int
            The id of the favorite.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def patch_me_favorites_ranking_top(
        self,
        id: int,
    ) -> Response:
        """Move a favorite to the top of the list

        API URL: ``PATCH /users/me/favorites/{id}/ranking/top``

        Parameters
        ----------
        id : int
            The id of the favorite.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def patch_me_favorites_ranking_bottom(
        self,
        id: int,
    ) -> Response:
        """Move a favorite to the bottom of the list

        API URL: ``PATCH /users/me/favorites/{id}/ranking/bottom``

        Parameters
        ----------
        id : int
            The id of the favorite.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def patch_me_favorites_ranking_higher(
        self,
        id: int,
    ) -> Response:
        """Move a favorite one position closer to the top of the list

        API URL: ``PATCH /users/me/favorites/{id}/ranking/higher``

        Parameters
        ----------
        id : int
            The id of the favorite.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def patch_me_favorites_ranking_lower(
        self,
        id: int,
    ) -> Response:
        """Move a favorite one position closer to the bottom of the list

        API URL: ``PATCH /users/me/favorites/{id}/ranking/lower``

        Parameters
        ----------
        id : int
            The id of the favorite.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def post_unsuspend(
        self,
        id: int,
    ) -> _ResponseUsersPostUnsuspend:
        """Unsuspends user

        API URL: ``POST /users/{id}/unsuspend``

        Parameters
        ----------
        id : int
            The ID of this user.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this user.
            - user : str
                The username of this user.
            - unlocked_at : str (date-time)
                The time the user's account was unsuspended
        """
        ...

    def delete_2fa(
        self,
        id: int,
    ) -> _ResponseUsersDelete2Fa:
        """Wipes the user's current 2FA settings so that they must reset them upon next
        login

        API URL: ``DELETE /users/{id}/2fa``

        Parameters
        ----------
        id : int
            The ID of this user.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID of this user.
            - user : str
                The username of this user.
            - name : str
                The name of this user.
            - email : str
                The email of this user.
            - active : bool
                Whether this user account is active or deactivated.
            - primary_group_id : int
                The ID of the primary group of this user.
            - groups : List[:class:`civis.Response`]
                An array of all the groups this user is in.

                - id : int
                    The ID of this group.
                - name : str
                    The name of this group.
                - slug : str
                    The slug of this group.
                - organization_id : int
                    The ID of the organization associated with this group.
                - organization_name : str
                    The name of the organization associated with this group.
            - city : str
                The city of this user.
            - state : str
                The state of this user.
            - time_zone : str
                The time zone of this user.
            - initials : str
                The initials of this user.
            - department : str
                The department of this user.
            - title : str
                The title of this user.
            - github_username : str
                The GitHub username of this user.
            - prefers_sms_otp : bool
                The preference for phone authorization of this user
            - vpn_enabled : bool
                The availability of vpn for this user.
            - sso_disabled : bool
                The availability of SSO for this user.
            - otp_required_for_login : bool
                The two factor authentication requirement for this user.
            - exempt_from_org_sms_otp_disabled : bool
                Whether the user has SMS OTP enabled on an individual level. This field
                does not matter if the org does not have SMS OTP disabled.
            - sms_otp_allowed : bool
                Whether the user is allowed to receive two factor authentication codes
                via SMS.
            - robot : bool
                Whether the user is a robot.
            - phone : str
                The phone number of this user.
            - organization_slug : str
                The slug of the organization the user belongs to.
            - organization_sso_disable_capable : bool
                The user's organization's ability to disable sso for their users.
            - organization_login_type : str
                The user's organization's login type.
            - organization_sms_otp_disabled : bool
                Whether the user's organization has SMS OTP disabled.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - created_at : str (date-time)
                The date and time when the user was created.
            - updated_at : str (date-time)
                The date and time when the user was last updated.
            - last_seen_at : str (date-time)
                The date and time when the user last visited Platform.
            - suspended : bool
                Whether the user is suspended due to inactivity.
            - created_by_id : int
                The ID of the user who created this user.
            - last_updated_by_id : int
                The ID of the user who last updated this user.
            - unconfirmed_email : str
                The new email address awaiting confirmation from the user.
            - account_status : str
                Account status of this user. One of: "Active", "Deactivated",
                "Suspended", "Unsuspended"
        """
        ...

    def post_access_email(
        self,
        id: int,
    ) -> Response:
        """Sends the target user a 'Reset Password' or 'Welcome to Platform' email
        depending on the their status - Only available to Org and Team Admins

        API URL: ``POST /users/{id}/access_email``

        Parameters
        ----------
        id : int
            The ID of this user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

class _Workflows:
    def list(
        self,
        *,
        hidden: bool | None = ...,
        archived: str | None = ...,
        author: str | None = ...,
        state: List[str] | None = ...,
        scheduled: bool | None = ...,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseWorkflowsList]:
        """List Workflows

        API URL: ``GET /workflows``

        Parameters
        ----------
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.
        archived : str, optional
            The archival status of the requested item(s).
        author : str, optional
            If specified, return items from any of these authors. It accepts a comma-
            separated list of user IDs.
        state : List[str], optional
            State of the most recent execution. One or more of queued, running,
            succeeded, failed, cancelled, idle, and scheduled. Note that the
            "scheduled" state applies only to scheduled workflows which have never been
            run. If you want to see all scheduled workflows, please use the "scheduled"
            filter instead.
        scheduled : bool, optional
            If the workflow is scheduled.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to updated_at. Must be
            one of: updated_at, name, created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID for this workflow.
            - name : str
                The name of this workflow.
            - description : str
                A description of the workflow.
            - valid : bool
                The validity of the workflow definition.
            - file_id : str
                The file id for the s3 file containing the workflow configuration.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The state of the workflow. State is "running" if any execution is
                running, otherwise reflects most recent execution state.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - allow_concurrent_executions : bool
                Whether the workflow can execute when already running.
            - time_zone : str
                The time zone of this workflow.
            - next_execution_at : str (time)
                The time of the next scheduled execution.
            - archived : str
                The archival status of the requested item(s).
            - created_at : str (time)
            - updated_at : str (time)
        """
        ...

    def post(
        self,
        name: str,
        *,
        description: str | None = ...,
        from_job_chain: int | None = ...,
        definition: str | None = ...,
        schedule: dict | None = ...,
        allow_concurrent_executions: bool | None = ...,
        time_zone: str | None = ...,
        notifications: dict | None = ...,
        hidden: bool | None = ...,
    ) -> _ResponseWorkflowsPost:
        """Create a Workflow

        API URL: ``POST /workflows``

        Parameters
        ----------
        name : str
            The name of this workflow.
        description : str, optional
            A description of the workflow.
        from_job_chain : int, optional
            If specified, create a workflow from the job chain this job is in, and
            inherit the schedule from the root of the chain.
        definition : str, optional
            The definition of the workflow in YAML format. Must not be specified if
            `fromJobChain` is specified.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        allow_concurrent_executions : bool, optional
            Whether the workflow can execute when already running.
        time_zone : str, optional
            The time zone of this workflow.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on
            - failure_on : bool
                If failure email notifications are on
        hidden : bool, optional
            The hidden status of the item.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this workflow.
            - name : str
                The name of this workflow.
            - description : str
                A description of the workflow.
            - definition : str
                The definition of the workflow in YAML format. Must not be specified if
                `fromJobChain` is specified.
            - valid : bool
                The validity of the workflow definition.
            - validation_errors : str
                The errors encountered when validating the workflow definition.
            - file_id : str
                The file id for the s3 file containing the workflow configuration.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The state of the workflow. State is "running" if any execution is
                running, otherwise reflects most recent execution state.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - allow_concurrent_executions : bool
                Whether the workflow can execute when already running.
            - time_zone : str
                The time zone of this workflow.
            - next_execution_at : str (time)
                The time of the next scheduled execution.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on
                - failure_on : bool
                    If failure email notifications are on
            - archived : str
                The archival status of the requested item(s).
            - hidden : bool
                The hidden status of the item.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - created_at : str (time)
            - updated_at : str (time)
        """
        ...

    def get(
        self,
        id: int,
    ) -> _ResponseWorkflowsGet:
        """Get a Workflow

        API URL: ``GET /workflows/{id}``

        Parameters
        ----------
        id : int

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this workflow.
            - name : str
                The name of this workflow.
            - description : str
                A description of the workflow.
            - definition : str
                The definition of the workflow in YAML format. Must not be specified if
                `fromJobChain` is specified.
            - valid : bool
                The validity of the workflow definition.
            - validation_errors : str
                The errors encountered when validating the workflow definition.
            - file_id : str
                The file id for the s3 file containing the workflow configuration.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The state of the workflow. State is "running" if any execution is
                running, otherwise reflects most recent execution state.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - allow_concurrent_executions : bool
                Whether the workflow can execute when already running.
            - time_zone : str
                The time zone of this workflow.
            - next_execution_at : str (time)
                The time of the next scheduled execution.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on
                - failure_on : bool
                    If failure email notifications are on
            - archived : str
                The archival status of the requested item(s).
            - hidden : bool
                The hidden status of the item.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - created_at : str (time)
            - updated_at : str (time)
        """
        ...

    def put(
        self,
        id: int,
        name: str,
        *,
        description: str | None = ...,
        definition: str | None = ...,
        schedule: dict | None = ...,
        allow_concurrent_executions: bool | None = ...,
        time_zone: str | None = ...,
        notifications: dict | None = ...,
    ) -> _ResponseWorkflowsPut:
        """Replace all attributes of this Workflow

        API URL: ``PUT /workflows/{id}``

        Parameters
        ----------
        id : int
            The ID for this workflow.
        name : str
            The name of this workflow.
        description : str, optional
            A description of the workflow.
        definition : str, optional
            The definition of the workflow in YAML format. Must not be specified if
            `fromJobChain` is specified.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        allow_concurrent_executions : bool, optional
            Whether the workflow can execute when already running.
        time_zone : str, optional
            The time zone of this workflow.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on
            - failure_on : bool
                If failure email notifications are on

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this workflow.
            - name : str
                The name of this workflow.
            - description : str
                A description of the workflow.
            - definition : str
                The definition of the workflow in YAML format. Must not be specified if
                `fromJobChain` is specified.
            - valid : bool
                The validity of the workflow definition.
            - validation_errors : str
                The errors encountered when validating the workflow definition.
            - file_id : str
                The file id for the s3 file containing the workflow configuration.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The state of the workflow. State is "running" if any execution is
                running, otherwise reflects most recent execution state.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - allow_concurrent_executions : bool
                Whether the workflow can execute when already running.
            - time_zone : str
                The time zone of this workflow.
            - next_execution_at : str (time)
                The time of the next scheduled execution.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on
                - failure_on : bool
                    If failure email notifications are on
            - archived : str
                The archival status of the requested item(s).
            - hidden : bool
                The hidden status of the item.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - created_at : str (time)
            - updated_at : str (time)
        """
        ...

    def patch(
        self,
        id: int,
        *,
        name: str | None = ...,
        description: str | None = ...,
        definition: str | None = ...,
        schedule: dict | None = ...,
        allow_concurrent_executions: bool | None = ...,
        time_zone: str | None = ...,
        notifications: dict | None = ...,
    ) -> _ResponseWorkflowsPatch:
        """Update some attributes of this Workflow

        API URL: ``PATCH /workflows/{id}``

        Parameters
        ----------
        id : int
            The ID for this workflow.
        name : str, optional
            The name of this workflow.
        description : str, optional
            A description of the workflow.
        definition : str, optional
            The definition of the workflow in YAML format. Must not be specified if
            `fromJobChain` is specified.
        schedule : dict, optional
            - scheduled : bool
                If the item is scheduled.
            - scheduled_days : List[int]
                Days of the week, based on numeric value starting at 0 for Sunday.
                Mutually exclusive with scheduledDaysOfMonth
            - scheduled_hours : List[int]
                Hours of the day it is scheduled on.
            - scheduled_minutes : List[int]
                Minutes of the day it is scheduled on.
            - scheduled_runs_per_hour : int
                Deprecated in favor of scheduled minutes.
            - scheduled_days_of_month : List[int]
                Days of the month it is scheduled on, mutually exclusive with
                scheduledDays.
        allow_concurrent_executions : bool, optional
            Whether the workflow can execute when already running.
        time_zone : str, optional
            The time zone of this workflow.
        notifications : dict, optional
            - urls : List[str]
                URLs to receive a POST request at job completion
            - success_email_subject : str
                Custom subject line for success e-mail.
            - success_email_body : str
                Custom body text for success e-mail, written in Markdown.
            - success_email_addresses : List[str]
                Addresses to notify by e-mail when the job completes successfully.
            - failure_email_addresses : List[str]
                Addresses to notify by e-mail when the job fails.
            - stall_warning_minutes : int
                Stall warning emails will be sent after this amount of minutes.
            - success_on : bool
                If success email notifications are on
            - failure_on : bool
                If failure email notifications are on

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this workflow.
            - name : str
                The name of this workflow.
            - description : str
                A description of the workflow.
            - definition : str
                The definition of the workflow in YAML format. Must not be specified if
                `fromJobChain` is specified.
            - valid : bool
                The validity of the workflow definition.
            - validation_errors : str
                The errors encountered when validating the workflow definition.
            - file_id : str
                The file id for the s3 file containing the workflow configuration.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The state of the workflow. State is "running" if any execution is
                running, otherwise reflects most recent execution state.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - allow_concurrent_executions : bool
                Whether the workflow can execute when already running.
            - time_zone : str
                The time zone of this workflow.
            - next_execution_at : str (time)
                The time of the next scheduled execution.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on
                - failure_on : bool
                    If failure email notifications are on
            - archived : str
                The archival status of the requested item(s).
            - hidden : bool
                The hidden status of the item.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - created_at : str (time)
            - updated_at : str (time)
        """
        ...

    def list_shares(
        self,
        id: int,
    ) -> List[_ResponseWorkflowsListShares]:
        """List users and groups permissioned on this object

        API URL: ``GET /workflows/{id}/shares``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.

        Returns
        -------
        :class:`civis.ListResponse`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def put_shares_users(
        self,
        id: int,
        user_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseWorkflowsPutSharesUsers:
        """Set the permissions users have on this object

        API URL: ``PUT /workflows/{id}/shares/users``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_ids : List[int]
            An array of one or more user IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_users(
        self,
        id: int,
        user_id: int,
    ) -> Response:
        """Revoke the permissions a user has on this object

        API URL: ``DELETE /workflows/{id}/shares/users/{user_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            The ID of the user.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def put_shares_groups(
        self,
        id: int,
        group_ids: List[int],
        permission_level: str,
        *,
        share_email_body: str | None = ...,
        send_shared_email: bool | None = ...,
    ) -> _ResponseWorkflowsPutSharesGroups:
        """Set the permissions groups has on this object

        API URL: ``PUT /workflows/{id}/shares/groups``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_ids : List[int]
            An array of one or more group IDs.
        permission_level : str
            Options are: "read", "write", or "manage".
        share_email_body : str, optional
            Custom body text for e-mail sent on a share.
        send_shared_email : bool, optional
            Send email to the recipients of a share.

        Returns
        -------
        :class:`civis.Response`
            - readers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - writers : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - owners : :class:`civis.Response`
                - users : List[:class:`civis.Response`]
                    - id : int
                    - name : str
                - groups : List[:class:`civis.Response`]
                    - id : int
                    - name : str
            - total_user_shares : int
                For owners, the number of total users shared. For writers and readers,
                the number of visible users shared.
            - total_group_shares : int
                For owners, the number of total groups shared. For writers and readers,
                the number of visible groups shared.
        """
        ...

    def delete_shares_groups(
        self,
        id: int,
        group_id: int,
    ) -> Response:
        """Revoke the permissions a group has on this object

        API URL: ``DELETE /workflows/{id}/shares/groups/{group_id}``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        group_id : int
            The ID of the group.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_dependencies(
        self,
        id: int,
        *,
        user_id: int | None = ...,
    ) -> List[_ResponseWorkflowsListDependencies]:
        """List dependent objects for this object

        API URL: ``GET /workflows/{id}/dependencies``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int, optional
            ID of target user

        Returns
        -------
        :class:`civis.ListResponse`
            - object_type : str
                Dependent object type
            - fco_type : str
                Human readable dependent object type
            - id : int
                Dependent object ID
            - name : str
                Dependent object name, or nil if the requesting user cannot read this
                object
            - permission_level : str
                Permission level of target user (not user's groups) for dependent
                object. Null if no target user or not shareable (e.g. a database
                table).
            - description : str
                Additional information about the dependency, if relevant
            - shareable : bool
                Whether or not the requesting user can share this object.
        """
        ...

    def put_transfer(
        self,
        id: int,
        user_id: int,
        include_dependencies: bool,
        *,
        email_body: str | None = ...,
        send_email: bool | None = ...,
    ) -> _ResponseWorkflowsPutTransfer:
        """Transfer ownership of this object to another user

        API URL: ``PUT /workflows/{id}/transfer``

        Parameters
        ----------
        id : int
            The ID of the resource that is shared.
        user_id : int
            ID of target user
        include_dependencies : bool
            Whether or not to give manage permissions on all dependencies
        email_body : str, optional
            Custom body text for e-mail sent on transfer.
        send_email : bool, optional
            Send email to the target user of the transfer?

        Returns
        -------
        :class:`civis.Response`
            - dependencies : List[:class:`civis.Response`]
                Dependent objects for this object

                - object_type : str
                    Dependent object type
                - fco_type : str
                    Human readable dependent object type
                - id : int
                    Dependent object ID
                - name : str
                    Dependent object name, or nil if the requesting user cannot read
                    this object
                - permission_level : str
                    Permission level of target user (not user's groups) for dependent
                    object. Null if no target user or not shareable (e.g. a database
                    table).
                - description : str
                    Additional information about the dependency, if relevant
                - shared : bool
                    Whether dependent object was successfully shared with target user
        """
        ...

    def put_archive(
        self,
        id: int,
        status: bool,
    ) -> _ResponseWorkflowsPutArchive:
        """Update the archive status of this object

        API URL: ``PUT /workflows/{id}/archive``

        Parameters
        ----------
        id : int
            The ID of the object.
        status : bool
            The desired archived status of the object.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this workflow.
            - name : str
                The name of this workflow.
            - description : str
                A description of the workflow.
            - definition : str
                The definition of the workflow in YAML format. Must not be specified if
                `fromJobChain` is specified.
            - valid : bool
                The validity of the workflow definition.
            - validation_errors : str
                The errors encountered when validating the workflow definition.
            - file_id : str
                The file id for the s3 file containing the workflow configuration.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The state of the workflow. State is "running" if any execution is
                running, otherwise reflects most recent execution state.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - allow_concurrent_executions : bool
                Whether the workflow can execute when already running.
            - time_zone : str
                The time zone of this workflow.
            - next_execution_at : str (time)
                The time of the next scheduled execution.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on
                - failure_on : bool
                    If failure email notifications are on
            - archived : str
                The archival status of the requested item(s).
            - hidden : bool
                The hidden status of the item.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - created_at : str (time)
            - updated_at : str (time)
        """
        ...

    def list_projects(
        self,
        id: int,
        *,
        hidden: bool | None = ...,
    ) -> List[_ResponseWorkflowsListProjects]:
        """List the projects a Workflow belongs to

        API URL: ``GET /workflows/{id}/projects``

        Parameters
        ----------
        id : int
            The ID of the Workflow.
        hidden : bool, optional
            If specified to be true, returns hidden items. Defaults to false, returning
            non-hidden items.

        Returns
        -------
        :class:`civis.ListResponse`
            - id : int
                The ID for this project.
            - author : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - name : str
                The name of this project.
            - description : str
                A description of the project.
            - users : List[:class:`civis.Response`]
                Users who can see the project.

                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - auto_share : bool
            - created_at : str (time)
            - updated_at : str (time)
            - archived : str
                The archival status of the requested item(s).
        """
        ...

    def put_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Add a Workflow to a project

        API URL: ``PUT /workflows/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Workflow.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def delete_projects(
        self,
        id: int,
        project_id: int,
    ) -> Response:
        """Remove a Workflow from a project

        API URL: ``DELETE /workflows/{id}/projects/{project_id}``

        Parameters
        ----------
        id : int
            The ID of the Workflow.
        project_id : int
            The ID of the project.

        Returns
        -------
        None
            Response code 204: success
        """
        ...

    def list_git(
        self,
        id: int,
    ) -> List[_ResponseWorkflowsListGit]:
        """Get the git metadata attached to an item

        API URL: ``GET /workflows/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.ListResponse`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def put_git(
        self,
        id: int,
        *,
        git_ref: str | None = ...,
        git_branch: str | None = ...,
        git_path: str | None = ...,
        git_repo_url: str | None = ...,
        git_ref_type: str | None = ...,
        pull_from_git: bool | None = ...,
    ) -> _ResponseWorkflowsPutGit:
        """Attach an item to a file in a git repo

        API URL: ``PUT /workflows/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.
        git_ref : str, optional
            A git reference specifying an unambiguous version of the file. Can be a
            branch name, or the full or shortened SHA of a commit.
        git_branch : str, optional
            The git branch that the file is on.
        git_path : str, optional
            The path of the file in the repository.
        git_repo_url : str, optional
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        git_ref_type : str, optional
            Specifies if the file is versioned by branch or tag.
        pull_from_git : bool, optional
            Automatically pull latest commit from git. Only works for scripts.

        Returns
        -------
        :class:`civis.Response`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def patch_git(
        self,
        id: int,
        *,
        git_ref: str | None = ...,
        git_branch: str | None = ...,
        git_path: str | None = ...,
        git_repo_url: str | None = ...,
        git_ref_type: str | None = ...,
        pull_from_git: bool | None = ...,
    ) -> _ResponseWorkflowsPatchGit:
        """Update an attached git file

        API URL: ``PATCH /workflows/{id}/git``

        Parameters
        ----------
        id : int
            The ID of the item.
        git_ref : str, optional
            A git reference specifying an unambiguous version of the file. Can be a
            branch name, or the full or shortened SHA of a commit.
        git_branch : str, optional
            The git branch that the file is on.
        git_path : str, optional
            The path of the file in the repository.
        git_repo_url : str, optional
            The URL of the git repository (e.g.,
            https://github.com/organization/repo_name.git).
        git_ref_type : str, optional
            Specifies if the file is versioned by branch or tag.
        pull_from_git : bool, optional
            Automatically pull latest commit from git. Only works for scripts.

        Returns
        -------
        :class:`civis.Response`
            - git_ref : str
                A git reference specifying an unambiguous version of the file. Can be a
                branch name, tag or the full or shortened SHA of a commit.
            - git_branch : str
                The git branch that the file is on.
            - git_path : str
                The path of the file in the repository.
            - git_repo : :class:`civis.Response`
                - id : int
                    The ID for this git repository.
                - repo_url : str
                    The URL for this git repository.
                - created_at : str (time)
                - updated_at : str (time)
            - git_ref_type : str
                Specifies if the file is versioned by branch or tag.
            - pull_from_git : bool
                Automatically pull latest commit from git. Only works for scripts and
                workflows (assuming you have the feature enabled)
        """
        ...

    def list_git_commits(
        self,
        id: int,
    ) -> List[_ResponseWorkflowsListGitCommits]:
        """Get the git commits for an item on the current branch

        API URL: ``GET /workflows/{id}/git/commits``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.ListResponse`
            - commit_hash : str
                The SHA of the commit.
            - author_name : str
                The name of the commit's author.
            - date : str (time)
                The commit's timestamp.
            - message : str
                The commit message.
        """
        ...

    def post_git_commits(
        self,
        id: int,
        content: str,
        message: str,
        file_hash: str,
    ) -> _ResponseWorkflowsPostGitCommits:
        """Commit and push a new version of the file

        API URL: ``POST /workflows/{id}/git/commits``

        Parameters
        ----------
        id : int
            The ID of the item.
        content : str
            The contents to commit to the file.
        message : str
            A commit message describing the changes being made.
        file_hash : str
            The full SHA of the file being replaced.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def get_git_commits(
        self,
        id: int,
        commit_hash: str,
    ) -> _ResponseWorkflowsGetGitCommits:
        """Get file contents at git ref

        API URL: ``GET /workflows/{id}/git/commits/{commit_hash}``

        Parameters
        ----------
        id : int
            The ID of the item.
        commit_hash : str
            The SHA (full or shortened) of the desired git commit.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def post_git_checkout_latest(
        self,
        id: int,
    ) -> _ResponseWorkflowsPostGitCheckoutLatest:
        """Checkout latest commit on the current branch of a script or workflow

        API URL: ``POST /workflows/{id}/git/checkout-latest``

        Parameters
        ----------
        id : int
            The ID of the item.

        Returns
        -------
        :class:`civis.Response`
            - content : str
                The file's contents.
            - type : str
                The file's type.
            - size : int
                The file's size.
            - file_hash : str
                The SHA of the file.
        """
        ...

    def post_clone(
        self,
        id: int,
        *,
        clone_schedule: bool | None = ...,
        clone_notifications: bool | None = ...,
    ) -> _ResponseWorkflowsPostClone:
        """Clone this Workflow

        API URL: ``POST /workflows/{id}/clone``

        Parameters
        ----------
        id : int
            The ID for the workflow.
        clone_schedule : bool, optional
            If true, also copy the schedule to the new workflow.
        clone_notifications : bool, optional
            If true, also copy the notifications to the new workflow.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this workflow.
            - name : str
                The name of this workflow.
            - description : str
                A description of the workflow.
            - definition : str
                The definition of the workflow in YAML format. Must not be specified if
                `fromJobChain` is specified.
            - valid : bool
                The validity of the workflow definition.
            - validation_errors : str
                The errors encountered when validating the workflow definition.
            - file_id : str
                The file id for the s3 file containing the workflow configuration.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - state : str
                The state of the workflow. State is "running" if any execution is
                running, otherwise reflects most recent execution state.
            - schedule : :class:`civis.Response`
                - scheduled : bool
                    If the item is scheduled.
                - scheduled_days : List[int]
                    Days of the week, based on numeric value starting at 0 for Sunday.
                    Mutually exclusive with scheduledDaysOfMonth
                - scheduled_hours : List[int]
                    Hours of the day it is scheduled on.
                - scheduled_minutes : List[int]
                    Minutes of the day it is scheduled on.
                - scheduled_runs_per_hour : int
                    Deprecated in favor of scheduled minutes.
                - scheduled_days_of_month : List[int]
                    Days of the month it is scheduled on, mutually exclusive with
                    scheduledDays.
            - allow_concurrent_executions : bool
                Whether the workflow can execute when already running.
            - time_zone : str
                The time zone of this workflow.
            - next_execution_at : str (time)
                The time of the next scheduled execution.
            - notifications : :class:`civis.Response`
                - urls : List[str]
                    URLs to receive a POST request at job completion
                - success_email_subject : str
                    Custom subject line for success e-mail.
                - success_email_body : str
                    Custom body text for success e-mail, written in Markdown.
                - success_email_addresses : List[str]
                    Addresses to notify by e-mail when the job completes successfully.
                - failure_email_addresses : List[str]
                    Addresses to notify by e-mail when the job fails.
                - stall_warning_minutes : int
                    Stall warning emails will be sent after this amount of minutes.
                - success_on : bool
                    If success email notifications are on
                - failure_on : bool
                    If failure email notifications are on
            - archived : str
                The archival status of the requested item(s).
            - hidden : bool
                The hidden status of the item.
            - my_permission_level : str
                Your permission level on the object. One of "read", "write", or
                "manage".
            - created_at : str (time)
            - updated_at : str (time)
        """
        ...

    def list_executions(
        self,
        id: int,
        *,
        limit: int | None = ...,
        page_num: int | None = ...,
        order: str | None = ...,
        order_dir: str | None = ...,
        iterator: bool | None = ...,
    ) -> Iterator[_ResponseWorkflowsListExecutions]:
        """List workflow executions

        API URL: ``GET /workflows/{id}/executions``

        Parameters
        ----------
        id : int
            The ID for this workflow.
        limit : int, optional
            Number of results to return. Defaults to 20. Maximum allowed is 50.
        page_num : int, optional
            Page number of the results to return. Defaults to the first page, 1.
        order : str, optional
            The field on which to order the result set. Defaults to id. Must be one of:
            id, updated_at, created_at.
        order_dir : str, optional
            Direction in which to sort, either asc (ascending) or desc (descending)
            defaulting to desc.
        iterator : bool, optional
            If True, return a generator (specifically, a
            :class:`civis.PaginatedResponse` object) to iterate over all responses.
            Use it when more results than the maximum allowed by 'limit' are needed.
            When True, 'page_num' is ignored.
            If False, return a :class:`civis.ListResponse` object
            (= a list of :class:`civis.Response` objects), whose size is
            determined by 'limit'. Defaults to False.

        Returns
        -------
        :class:`civis.ListResponse` | :class:`civis.PaginatedResponse`
            - id : int
                The ID for this workflow execution.
            - state : str
                The state of this workflow execution.
            - mistral_state : str
                The state of this workflow as reported by mistral. One of running,
                paused, success, error, or cancelled
            - mistral_state_info : str
                The state info of this workflow as reported by mistral.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - started_at : str (time)
                The time this execution started.
            - finished_at : str (time)
                The time this execution finished.
            - created_at : str (time)
                The time this execution was created.
            - updated_at : str (time)
                The time this execution was last updated.
        """
        ...

    def post_executions(
        self,
        id: int,
        *,
        target_task: str | None = ...,
        input: dict | None = ...,
        included_tasks: List[str] | None = ...,
    ) -> _ResponseWorkflowsPostExecutions:
        """Execute a workflow

        API URL: ``POST /workflows/{id}/executions``

        Parameters
        ----------
        id : int
            The ID for the workflow.
        target_task : str, optional
            For a reverse workflow, the name of the task to target.
        input : dict, optional
            Key-value pairs to send to this execution as inputs.
        included_tasks : List[str], optional
            If specified, executes only the subset of workflow tasks included as
            specified by task name.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this workflow execution.
            - state : str
                The state of this workflow execution.
            - mistral_state : str
                The state of this workflow as reported by mistral. One of running,
                paused, success, error, or cancelled
            - mistral_state_info : str
                The state info of this workflow as reported by mistral.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - definition : str
                The definition of the workflow for this execution.
            - input : :class:`civis.Response`
                Key-value pairs defined for this execution.
            - included_tasks : List[str]
                The subset of workflow tasks selected to execute.
            - tasks : List[:class:`civis.Response`]
                The tasks associated with this execution.

                - name : str
                    The name of the task.
                - mistral_state : str
                    The state of this task. One of idle, waiting, running, delayed,
                    success, error, or cancelled
                - mistral_state_info : str
                    Extra info associated with the state of the task.
                - runs : List[:class:`civis.Response`]
                    The runs associated with this task, in descending order by id.

                    - id : int
                        The ID of the run.
                    - job_id : int
                        The ID of the job associated with the run.
                    - my_permission_level : str
                        Your permission level on the job. One of "read", "write",
                        "manage", or "nil".
                    - state : str
                        The state of the run.
                    - created_at : str (time)
                        The time that the run was queued.
                    - started_at : str (time)
                        The time that the run started.
                    - finished_at : str (time)
                        The time that the run completed.
                - executions : List[:class:`civis.Response`]
                    The executions run by this task, in descending order by id.

                    - id : int
                        The ID of the execution.
                    - workflow_id : int
                        The ID of the workflow associated with the execution.
                    - my_permission_level : str
                        Your permission level on the workflow. One of "read", "write",
                        "manage", or "nil".
                    - state : str
                        The state of this workflow execution.
                    - created_at : str (time)
                        The time this execution was created.
                    - started_at : str (time)
                        The time this execution started.
                    - finished_at : str (time)
                        The time this execution finished.
            - started_at : str (time)
                The time this execution started.
            - finished_at : str (time)
                The time this execution finished.
            - created_at : str (time)
                The time this execution was created.
            - updated_at : str (time)
                The time this execution was last updated.
        """
        ...

    def get_executions(
        self,
        id: int,
        execution_id: int,
    ) -> _ResponseWorkflowsGetExecutions:
        """Get a workflow execution

        API URL: ``GET /workflows/{id}/executions/{execution_id}``

        Parameters
        ----------
        id : int
            The ID for the workflow.
        execution_id : int
            The ID for the workflow execution.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this workflow execution.
            - state : str
                The state of this workflow execution.
            - mistral_state : str
                The state of this workflow as reported by mistral. One of running,
                paused, success, error, or cancelled
            - mistral_state_info : str
                The state info of this workflow as reported by mistral.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - definition : str
                The definition of the workflow for this execution.
            - input : :class:`civis.Response`
                Key-value pairs defined for this execution.
            - included_tasks : List[str]
                The subset of workflow tasks selected to execute.
            - tasks : List[:class:`civis.Response`]
                The tasks associated with this execution.

                - name : str
                    The name of the task.
                - mistral_state : str
                    The state of this task. One of idle, waiting, running, delayed,
                    success, error, or cancelled
                - mistral_state_info : str
                    Extra info associated with the state of the task.
                - runs : List[:class:`civis.Response`]
                    The runs associated with this task, in descending order by id.

                    - id : int
                        The ID of the run.
                    - job_id : int
                        The ID of the job associated with the run.
                    - my_permission_level : str
                        Your permission level on the job. One of "read", "write",
                        "manage", or "nil".
                    - state : str
                        The state of the run.
                    - created_at : str (time)
                        The time that the run was queued.
                    - started_at : str (time)
                        The time that the run started.
                    - finished_at : str (time)
                        The time that the run completed.
                - executions : List[:class:`civis.Response`]
                    The executions run by this task, in descending order by id.

                    - id : int
                        The ID of the execution.
                    - workflow_id : int
                        The ID of the workflow associated with the execution.
                    - my_permission_level : str
                        Your permission level on the workflow. One of "read", "write",
                        "manage", or "nil".
                    - state : str
                        The state of this workflow execution.
                    - created_at : str (time)
                        The time this execution was created.
                    - started_at : str (time)
                        The time this execution started.
                    - finished_at : str (time)
                        The time this execution finished.
            - started_at : str (time)
                The time this execution started.
            - finished_at : str (time)
                The time this execution finished.
            - created_at : str (time)
                The time this execution was created.
            - updated_at : str (time)
                The time this execution was last updated.
        """
        ...

    def post_executions_cancel(
        self,
        id: int,
        execution_id: int,
    ) -> _ResponseWorkflowsPostExecutionsCancel:
        """Cancel a workflow execution

        API URL: ``POST /workflows/{id}/executions/{execution_id}/cancel``

        Parameters
        ----------
        id : int
            The ID for the workflow.
        execution_id : int
            The ID for the workflow execution.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this workflow execution.
            - state : str
                The state of this workflow execution.
            - mistral_state : str
                The state of this workflow as reported by mistral. One of running,
                paused, success, error, or cancelled
            - mistral_state_info : str
                The state info of this workflow as reported by mistral.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - definition : str
                The definition of the workflow for this execution.
            - input : :class:`civis.Response`
                Key-value pairs defined for this execution.
            - included_tasks : List[str]
                The subset of workflow tasks selected to execute.
            - tasks : List[:class:`civis.Response`]
                The tasks associated with this execution.

                - name : str
                    The name of the task.
                - mistral_state : str
                    The state of this task. One of idle, waiting, running, delayed,
                    success, error, or cancelled
                - mistral_state_info : str
                    Extra info associated with the state of the task.
                - runs : List[:class:`civis.Response`]
                    The runs associated with this task, in descending order by id.

                    - id : int
                        The ID of the run.
                    - job_id : int
                        The ID of the job associated with the run.
                    - my_permission_level : str
                        Your permission level on the job. One of "read", "write",
                        "manage", or "nil".
                    - state : str
                        The state of the run.
                    - created_at : str (time)
                        The time that the run was queued.
                    - started_at : str (time)
                        The time that the run started.
                    - finished_at : str (time)
                        The time that the run completed.
                - executions : List[:class:`civis.Response`]
                    The executions run by this task, in descending order by id.

                    - id : int
                        The ID of the execution.
                    - workflow_id : int
                        The ID of the workflow associated with the execution.
                    - my_permission_level : str
                        Your permission level on the workflow. One of "read", "write",
                        "manage", or "nil".
                    - state : str
                        The state of this workflow execution.
                    - created_at : str (time)
                        The time this execution was created.
                    - started_at : str (time)
                        The time this execution started.
                    - finished_at : str (time)
                        The time this execution finished.
            - started_at : str (time)
                The time this execution started.
            - finished_at : str (time)
                The time this execution finished.
            - created_at : str (time)
                The time this execution was created.
            - updated_at : str (time)
                The time this execution was last updated.
        """
        ...

    def post_executions_resume(
        self,
        id: int,
        execution_id: int,
    ) -> _ResponseWorkflowsPostExecutionsResume:
        """Resume a paused workflow execution

        API URL: ``POST /workflows/{id}/executions/{execution_id}/resume``

        Parameters
        ----------
        id : int
            The ID for the workflow.
        execution_id : int
            The ID for the workflow execution.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this workflow execution.
            - state : str
                The state of this workflow execution.
            - mistral_state : str
                The state of this workflow as reported by mistral. One of running,
                paused, success, error, or cancelled
            - mistral_state_info : str
                The state info of this workflow as reported by mistral.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - definition : str
                The definition of the workflow for this execution.
            - input : :class:`civis.Response`
                Key-value pairs defined for this execution.
            - included_tasks : List[str]
                The subset of workflow tasks selected to execute.
            - tasks : List[:class:`civis.Response`]
                The tasks associated with this execution.

                - name : str
                    The name of the task.
                - mistral_state : str
                    The state of this task. One of idle, waiting, running, delayed,
                    success, error, or cancelled
                - mistral_state_info : str
                    Extra info associated with the state of the task.
                - runs : List[:class:`civis.Response`]
                    The runs associated with this task, in descending order by id.

                    - id : int
                        The ID of the run.
                    - job_id : int
                        The ID of the job associated with the run.
                    - my_permission_level : str
                        Your permission level on the job. One of "read", "write",
                        "manage", or "nil".
                    - state : str
                        The state of the run.
                    - created_at : str (time)
                        The time that the run was queued.
                    - started_at : str (time)
                        The time that the run started.
                    - finished_at : str (time)
                        The time that the run completed.
                - executions : List[:class:`civis.Response`]
                    The executions run by this task, in descending order by id.

                    - id : int
                        The ID of the execution.
                    - workflow_id : int
                        The ID of the workflow associated with the execution.
                    - my_permission_level : str
                        Your permission level on the workflow. One of "read", "write",
                        "manage", or "nil".
                    - state : str
                        The state of this workflow execution.
                    - created_at : str (time)
                        The time this execution was created.
                    - started_at : str (time)
                        The time this execution started.
                    - finished_at : str (time)
                        The time this execution finished.
            - started_at : str (time)
                The time this execution started.
            - finished_at : str (time)
                The time this execution finished.
            - created_at : str (time)
                The time this execution was created.
            - updated_at : str (time)
                The time this execution was last updated.
        """
        ...

    def post_executions_retry(
        self,
        id: int,
        execution_id: int,
        *,
        task_name: str | None = ...,
    ) -> _ResponseWorkflowsPostExecutionsRetry:
        """Retry a failed task, or all failed tasks in an execution

        API URL: ``POST /workflows/{id}/executions/{execution_id}/retry``

        Parameters
        ----------
        id : int
            The ID for the workflow.
        execution_id : int
            The ID for the workflow execution.
        task_name : str, optional
            If specified, the name of the task to be retried. If not specified, all
            failed tasks in the execution will be retried.

        Returns
        -------
        :class:`civis.Response`
            - id : int
                The ID for this workflow execution.
            - state : str
                The state of this workflow execution.
            - mistral_state : str
                The state of this workflow as reported by mistral. One of running,
                paused, success, error, or cancelled
            - mistral_state_info : str
                The state info of this workflow as reported by mistral.
            - user : :class:`civis.Response`
                - id : int
                    The ID of this user.
                - name : str
                    This user's name.
                - username : str
                    This user's username.
                - initials : str
                    This user's initials.
                - online : bool
                    Whether this user is online.
            - definition : str
                The definition of the workflow for this execution.
            - input : :class:`civis.Response`
                Key-value pairs defined for this execution.
            - included_tasks : List[str]
                The subset of workflow tasks selected to execute.
            - tasks : List[:class:`civis.Response`]
                The tasks associated with this execution.

                - name : str
                    The name of the task.
                - mistral_state : str
                    The state of this task. One of idle, waiting, running, delayed,
                    success, error, or cancelled
                - mistral_state_info : str
                    Extra info associated with the state of the task.
                - runs : List[:class:`civis.Response`]
                    The runs associated with this task, in descending order by id.

                    - id : int
                        The ID of the run.
                    - job_id : int
                        The ID of the job associated with the run.
                    - my_permission_level : str
                        Your permission level on the job. One of "read", "write",
                        "manage", or "nil".
                    - state : str
                        The state of the run.
                    - created_at : str (time)
                        The time that the run was queued.
                    - started_at : str (time)
                        The time that the run started.
                    - finished_at : str (time)
                        The time that the run completed.
                - executions : List[:class:`civis.Response`]
                    The executions run by this task, in descending order by id.

                    - id : int
                        The ID of the execution.
                    - workflow_id : int
                        The ID of the workflow associated with the execution.
                    - my_permission_level : str
                        Your permission level on the workflow. One of "read", "write",
                        "manage", or "nil".
                    - state : str
                        The state of this workflow execution.
                    - created_at : str (time)
                        The time this execution was created.
                    - started_at : str (time)
                        The time this execution started.
                    - finished_at : str (time)
                        The time this execution finished.
            - started_at : str (time)
                The time this execution started.
            - finished_at : str (time)
                The time this execution finished.
            - created_at : str (time)
                The time this execution was created.
            - updated_at : str (time)
                The time this execution was last updated.
        """
        ...

    def get_executions_tasks(
        self,
        id: int,
        execution_id: int,
        task_name: str,
    ) -> _ResponseWorkflowsGetExecutionsTasks:
        """Get a task of a workflow execution

        API URL: ``GET /workflows/{id}/executions/{execution_id}/tasks/{task_name}``

        Parameters
        ----------
        id : int
            The ID for the workflow.
        execution_id : int
            The ID for the workflow execution.
        task_name : str
            The URL-encoded name of the task.

        Returns
        -------
        :class:`civis.Response`
            - name : str
                The name of the task.
            - mistral_state : str
                The state of this task. One of idle, waiting, running, delayed,
                success, error, or cancelled
            - mistral_state_info : str
                Extra info associated with the state of the task.
            - runs : List[:class:`civis.Response`]
                The runs associated with this task, in descending order by id.

                - id : int
                    The ID of the run.
                - job_id : int
                    The ID of the job associated with the run.
                - my_permission_level : str
                    Your permission level on the job. One of "read", "write", "manage",
                    or "nil".
                - state : str
                    The state of the run.
                - created_at : str (time)
                    The time that the run was queued.
                - started_at : str (time)
                    The time that the run started.
                - finished_at : str (time)
                    The time that the run completed.
            - executions : List[:class:`civis.Response`]
                The executions run by this task, in descending order by id.

                - id : int
                    The ID of the execution.
                - workflow_id : int
                    The ID of the workflow associated with the execution.
                - my_permission_level : str
                    Your permission level on the workflow. One of "read", "write",
                    "manage", or "nil".
                - state : str
                    The state of this workflow execution.
                - created_at : str (time)
                    The time this execution was created.
                - started_at : str (time)
                    The time this execution started.
                - finished_at : str (time)
                    The time this execution finished.
        """
        ...

class _ResponseAdminListOrganizations(Response):
    id: int
    name: str
    slug: str
    account_manager_id: int
    cs_specialist_id: int
    status: str
    org_type: str
    custom_branding: str
    contract_size: int
    max_analyst_users: int
    max_report_users: int
    vertical: str
    cs_metadata: str
    remove_footer_in_emails: bool
    salesforce_account_id: str
    tableau_site_id: str
    fedramp_enabled: bool
    created_by_id: int
    last_updated_by_id: int
    advanced_settings: _ResponseAdminListOrganizationsAdvancedSettings
    tableau_refresh_history: List

class _ResponseAdminListOrganizationsAdvancedSettings(Response):
    dedicated_dj_pool_enabled: bool

class _ResponseAliasesListShares(Response):
    readers: _ResponseAliasesListSharesReaders
    writers: _ResponseAliasesListSharesWriters
    owners: _ResponseAliasesListSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseAliasesListSharesReaders(Response):
    users: List[_ResponseAliasesListSharesReadersUsers]
    groups: List[_ResponseAliasesListSharesReadersGroups]

class _ResponseAliasesListSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseAliasesListSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseAliasesListSharesWriters(Response):
    users: List[_ResponseAliasesListSharesWritersUsers]
    groups: List[_ResponseAliasesListSharesWritersGroups]

class _ResponseAliasesListSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseAliasesListSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseAliasesListSharesOwners(Response):
    users: List[_ResponseAliasesListSharesOwnersUsers]
    groups: List[_ResponseAliasesListSharesOwnersGroups]

class _ResponseAliasesListSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseAliasesListSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseAliasesPutSharesUsers(Response):
    readers: _ResponseAliasesPutSharesUsersReaders
    writers: _ResponseAliasesPutSharesUsersWriters
    owners: _ResponseAliasesPutSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseAliasesPutSharesUsersReaders(Response):
    users: List[_ResponseAliasesPutSharesUsersReadersUsers]
    groups: List[_ResponseAliasesPutSharesUsersReadersGroups]

class _ResponseAliasesPutSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseAliasesPutSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseAliasesPutSharesUsersWriters(Response):
    users: List[_ResponseAliasesPutSharesUsersWritersUsers]
    groups: List[_ResponseAliasesPutSharesUsersWritersGroups]

class _ResponseAliasesPutSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseAliasesPutSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseAliasesPutSharesUsersOwners(Response):
    users: List[_ResponseAliasesPutSharesUsersOwnersUsers]
    groups: List[_ResponseAliasesPutSharesUsersOwnersGroups]

class _ResponseAliasesPutSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseAliasesPutSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseAliasesPutSharesGroups(Response):
    readers: _ResponseAliasesPutSharesGroupsReaders
    writers: _ResponseAliasesPutSharesGroupsWriters
    owners: _ResponseAliasesPutSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseAliasesPutSharesGroupsReaders(Response):
    users: List[_ResponseAliasesPutSharesGroupsReadersUsers]
    groups: List[_ResponseAliasesPutSharesGroupsReadersGroups]

class _ResponseAliasesPutSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseAliasesPutSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseAliasesPutSharesGroupsWriters(Response):
    users: List[_ResponseAliasesPutSharesGroupsWritersUsers]
    groups: List[_ResponseAliasesPutSharesGroupsWritersGroups]

class _ResponseAliasesPutSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseAliasesPutSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseAliasesPutSharesGroupsOwners(Response):
    users: List[_ResponseAliasesPutSharesGroupsOwnersUsers]
    groups: List[_ResponseAliasesPutSharesGroupsOwnersGroups]

class _ResponseAliasesPutSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseAliasesPutSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseAliasesListDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseAliasesPutTransfer(Response):
    dependencies: List[_ResponseAliasesPutTransferDependencies]

class _ResponseAliasesPutTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseAliasesList(Response):
    id: int
    object_id: int
    object_type: str
    alias: str
    user_id: int
    display_name: str

class _ResponseAliasesPost(Response):
    id: int
    object_id: int
    object_type: str
    alias: str
    user_id: int
    display_name: str

class _ResponseAliasesGet(Response):
    id: int
    object_id: int
    object_type: str
    alias: str
    user_id: int
    display_name: str

class _ResponseAliasesPut(Response):
    id: int
    object_id: int
    object_type: str
    alias: str
    user_id: int
    display_name: str

class _ResponseAliasesPatch(Response):
    id: int
    object_id: int
    object_type: str
    alias: str
    user_id: int
    display_name: str

class _ResponseAliasesGetObjectType(Response):
    id: int
    object_id: int
    object_type: str
    alias: str
    user_id: int
    display_name: str

class _ResponseAnnouncementsList(Response):
    id: int
    subject: str
    body: str
    released_at: str
    created_at: str
    updated_at: str

class _ResponseClustersListKubernetes(Response):
    id: int
    organization_id: str
    organization_name: str
    organization_slug: str
    raw_cluster_slug: str
    custom_partitions: bool
    cluster_partitions: List[_ResponseClustersListKubernetesClusterPartitions]
    is_nat_enabled: bool

class _ResponseClustersListKubernetesClusterPartitions(Response):
    cluster_partition_id: int
    name: str
    labels: List[str]
    instance_configs: List[
        _ResponseClustersListKubernetesClusterPartitionsInstanceConfigs
    ]
    default_instance_config_id: int

class _ResponseClustersListKubernetesClusterPartitionsInstanceConfigs(Response):
    instance_config_id: int
    instance_type: str
    min_instances: int
    max_instances: int
    instance_max_memory: int
    instance_max_cpu: int
    instance_max_disk: int
    usage_stats: (
        _ResponseClustersListKubernetesClusterPartitionsInstanceConfigsUsageStats
    )

class _ResponseClustersListKubernetesClusterPartitionsInstanceConfigsUsageStats(
    Response
):
    pending_memory_requested: int
    pending_cpu_requested: int
    running_memory_requested: int
    running_cpu_requested: int
    pending_deployments: int
    running_deployments: int

class _ResponseClustersGetKubernetes(Response):
    id: int
    organization_id: str
    organization_name: str
    organization_slug: str
    raw_cluster_slug: str
    custom_partitions: bool
    cluster_partitions: List[_ResponseClustersGetKubernetesClusterPartitions]
    is_nat_enabled: bool
    hours: float

class _ResponseClustersGetKubernetesClusterPartitions(Response):
    cluster_partition_id: int
    name: str
    labels: List[str]
    instance_configs: List[
        _ResponseClustersGetKubernetesClusterPartitionsInstanceConfigs
    ]
    default_instance_config_id: int

class _ResponseClustersGetKubernetesClusterPartitionsInstanceConfigs(Response):
    instance_config_id: int
    instance_type: str
    min_instances: int
    max_instances: int
    instance_max_memory: int
    instance_max_cpu: int
    instance_max_disk: int
    usage_stats: (
        _ResponseClustersGetKubernetesClusterPartitionsInstanceConfigsUsageStats
    )

class _ResponseClustersGetKubernetesClusterPartitionsInstanceConfigsUsageStats(
    Response
):
    pending_memory_requested: int
    pending_cpu_requested: int
    running_memory_requested: int
    running_cpu_requested: int
    pending_deployments: int
    running_deployments: int

class _ResponseClustersListKubernetesComputeHours(Response):
    total_normalized_hours: int
    normalized_hours_by_instance_type: str
    updated_at: str
    month_and_year: str

class _ResponseClustersListKubernetesDeployments(Response):
    id: int
    name: str
    base_id: int
    base_type: str
    state: str
    cpu: int
    memory: int
    disk_space: int
    instance_type: str
    author: _ResponseClustersListKubernetesDeploymentsAuthor
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str

class _ResponseClustersListKubernetesDeploymentsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseClustersListKubernetesDeploymentStats(Response):
    base_type: str
    state: str
    count: int
    total_cpu: int
    total_memory: int

class _ResponseClustersListKubernetesPartitions(Response):
    cluster_partition_id: int
    name: str
    labels: List[str]
    instance_configs: List[_ResponseClustersListKubernetesPartitionsInstanceConfigs]
    default_instance_config_id: int

class _ResponseClustersListKubernetesPartitionsInstanceConfigs(Response):
    instance_config_id: int
    instance_type: str
    min_instances: int
    max_instances: int
    instance_max_memory: int
    instance_max_cpu: int
    instance_max_disk: int
    usage_stats: _ResponseClustersListKubernetesPartitionsInstanceConfigsUsageStats

class _ResponseClustersListKubernetesPartitionsInstanceConfigsUsageStats(Response):
    pending_memory_requested: int
    pending_cpu_requested: int
    running_memory_requested: int
    running_cpu_requested: int
    pending_deployments: int
    running_deployments: int

class _ResponseClustersPostKubernetesPartitions(Response):
    cluster_partition_id: int
    name: str
    labels: List[str]
    instance_configs: List[_ResponseClustersPostKubernetesPartitionsInstanceConfigs]
    default_instance_config_id: int

class _ResponseClustersPostKubernetesPartitionsInstanceConfigs(Response):
    instance_config_id: int
    instance_type: str
    min_instances: int
    max_instances: int
    instance_max_memory: int
    instance_max_cpu: int
    instance_max_disk: int
    usage_stats: _ResponseClustersPostKubernetesPartitionsInstanceConfigsUsageStats

class _ResponseClustersPostKubernetesPartitionsInstanceConfigsUsageStats(Response):
    pending_memory_requested: int
    pending_cpu_requested: int
    running_memory_requested: int
    running_cpu_requested: int
    pending_deployments: int
    running_deployments: int

class _ResponseClustersPatchKubernetesPartitions(Response):
    cluster_partition_id: int
    name: str
    labels: List[str]
    instance_configs: List[_ResponseClustersPatchKubernetesPartitionsInstanceConfigs]
    default_instance_config_id: int

class _ResponseClustersPatchKubernetesPartitionsInstanceConfigs(Response):
    instance_config_id: int
    instance_type: str
    min_instances: int
    max_instances: int
    instance_max_memory: int
    instance_max_cpu: int
    instance_max_disk: int
    usage_stats: _ResponseClustersPatchKubernetesPartitionsInstanceConfigsUsageStats

class _ResponseClustersPatchKubernetesPartitionsInstanceConfigsUsageStats(Response):
    pending_memory_requested: int
    pending_cpu_requested: int
    running_memory_requested: int
    running_cpu_requested: int
    pending_deployments: int
    running_deployments: int

class _ResponseClustersGetKubernetesPartitions(Response):
    cluster_partition_id: int
    name: str
    labels: List[str]
    instance_configs: List[_ResponseClustersGetKubernetesPartitionsInstanceConfigs]
    default_instance_config_id: int

class _ResponseClustersGetKubernetesPartitionsInstanceConfigs(Response):
    instance_config_id: int
    instance_type: str
    min_instances: int
    max_instances: int
    instance_max_memory: int
    instance_max_cpu: int
    instance_max_disk: int
    usage_stats: _ResponseClustersGetKubernetesPartitionsInstanceConfigsUsageStats

class _ResponseClustersGetKubernetesPartitionsInstanceConfigsUsageStats(Response):
    pending_memory_requested: int
    pending_cpu_requested: int
    running_memory_requested: int
    running_cpu_requested: int
    pending_deployments: int
    running_deployments: int

class _ResponseClustersGetKubernetesInstanceConfigs(Response):
    instance_config_id: int
    instance_type: str
    min_instances: int
    max_instances: int
    instance_max_memory: int
    instance_max_cpu: int
    instance_max_disk: int
    usage_stats: _ResponseClustersGetKubernetesInstanceConfigsUsageStats
    cluster_partition_id: int
    cluster_partition_name: str

class _ResponseClustersGetKubernetesInstanceConfigsUsageStats(Response):
    pending_memory_requested: int
    pending_cpu_requested: int
    running_memory_requested: int
    running_cpu_requested: int
    pending_deployments: int
    running_deployments: int

class _ResponseClustersListKubernetesInstanceConfigsActiveWorkloads(Response):
    id: int
    base_type: str
    base_id: int
    base_object_name: str
    job_type: str
    job_id: int
    job_cancel_requested_at: str
    state: str
    cpu: int
    memory: int
    disk_space: int
    user: _ResponseClustersListKubernetesInstanceConfigsActiveWorkloadsUser
    created_at: str
    cancellable: bool

class _ResponseClustersListKubernetesInstanceConfigsActiveWorkloadsUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseClustersListKubernetesInstanceConfigsUserStatistics(Response):
    user_id: str
    user_name: str
    pending_deployments: int
    pending_memory_requested: int
    pending_cpu_requested: int
    running_deployments: int
    running_memory_requested: int
    running_cpu_requested: int

class _ResponseClustersListKubernetesInstanceConfigsHistoricalGraphs(Response):
    cpu_graph_url: str
    mem_graph_url: str

class _ResponseClustersListKubernetesInstanceConfigsHistoricalMetrics(Response):
    instance_config_id: int
    metric: str
    timeframe: str
    unit: str
    metrics: _ResponseClustersListKubernetesInstanceConfigsHistoricalMetricsMetrics

class _ResponseClustersListKubernetesInstanceConfigsHistoricalMetricsMetrics(Response):
    used: _ResponseClustersListKubernetesInstanceConfigsHistoricalMetricsMetricsUsed
    requested: (
        _ResponseClustersListKubernetesInstanceConfigsHistoricalMetricsMetricsRequested
    )
    capacity: (
        _ResponseClustersListKubernetesInstanceConfigsHistoricalMetricsMetricsCapacity
    )

class _ResponseClustersListKubernetesInstanceConfigsHistoricalMetricsMetricsUsed(
    Response
):
    times: List[int]
    values: List[float]

class _ResponseClustersListKubernetesInstanceConfigsHistoricalMetricsMetricsRequested(
    Response
):
    times: List[int]
    values: List[float]

class _ResponseClustersListKubernetesInstanceConfigsHistoricalMetricsMetricsCapacity(
    Response
):
    times: List[int]
    values: List[float]

class _ResponseCredentialsListTypes(Response):
    types: List[str]

class _ResponseCredentialsList(Response):
    id: int
    name: str
    type: str
    username: str
    description: str
    owner: str
    user: _ResponseCredentialsListUser
    remote_host_id: int
    remote_host_name: str
    state: str
    created_at: str
    updated_at: str
    default: bool
    oauth: bool

class _ResponseCredentialsListUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseCredentialsPost(Response):
    id: int
    name: str
    type: str
    username: str
    description: str
    owner: str
    user: _ResponseCredentialsPostUser
    remote_host_id: int
    remote_host_name: str
    state: str
    created_at: str
    updated_at: str
    default: bool
    oauth: bool

class _ResponseCredentialsPostUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseCredentialsPut(Response):
    id: int
    name: str
    type: str
    username: str
    description: str
    owner: str
    user: _ResponseCredentialsPutUser
    remote_host_id: int
    remote_host_name: str
    state: str
    created_at: str
    updated_at: str
    default: bool
    oauth: bool

class _ResponseCredentialsPutUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseCredentialsPatch(Response):
    id: int
    name: str
    type: str
    username: str
    description: str
    owner: str
    user: _ResponseCredentialsPatchUser
    remote_host_id: int
    remote_host_name: str
    state: str
    created_at: str
    updated_at: str
    default: bool
    oauth: bool

class _ResponseCredentialsPatchUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseCredentialsGet(Response):
    id: int
    name: str
    type: str
    username: str
    description: str
    owner: str
    user: _ResponseCredentialsGetUser
    remote_host_id: int
    remote_host_name: str
    state: str
    created_at: str
    updated_at: str
    default: bool
    oauth: bool

class _ResponseCredentialsGetUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseCredentialsPostAuthenticate(Response):
    id: int
    name: str
    type: str
    username: str
    description: str
    owner: str
    user: _ResponseCredentialsPostAuthenticateUser
    remote_host_id: int
    remote_host_name: str
    state: str
    created_at: str
    updated_at: str
    default: bool
    oauth: bool

class _ResponseCredentialsPostAuthenticateUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseCredentialsPostTemporary(Response):
    access_key: str
    secret_access_key: str
    session_token: str

class _ResponseCredentialsListShares(Response):
    readers: _ResponseCredentialsListSharesReaders
    writers: _ResponseCredentialsListSharesWriters
    owners: _ResponseCredentialsListSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseCredentialsListSharesReaders(Response):
    users: List[_ResponseCredentialsListSharesReadersUsers]
    groups: List[_ResponseCredentialsListSharesReadersGroups]

class _ResponseCredentialsListSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseCredentialsListSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseCredentialsListSharesWriters(Response):
    users: List[_ResponseCredentialsListSharesWritersUsers]
    groups: List[_ResponseCredentialsListSharesWritersGroups]

class _ResponseCredentialsListSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseCredentialsListSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseCredentialsListSharesOwners(Response):
    users: List[_ResponseCredentialsListSharesOwnersUsers]
    groups: List[_ResponseCredentialsListSharesOwnersGroups]

class _ResponseCredentialsListSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseCredentialsListSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseCredentialsPutSharesUsers(Response):
    readers: _ResponseCredentialsPutSharesUsersReaders
    writers: _ResponseCredentialsPutSharesUsersWriters
    owners: _ResponseCredentialsPutSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseCredentialsPutSharesUsersReaders(Response):
    users: List[_ResponseCredentialsPutSharesUsersReadersUsers]
    groups: List[_ResponseCredentialsPutSharesUsersReadersGroups]

class _ResponseCredentialsPutSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseCredentialsPutSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseCredentialsPutSharesUsersWriters(Response):
    users: List[_ResponseCredentialsPutSharesUsersWritersUsers]
    groups: List[_ResponseCredentialsPutSharesUsersWritersGroups]

class _ResponseCredentialsPutSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseCredentialsPutSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseCredentialsPutSharesUsersOwners(Response):
    users: List[_ResponseCredentialsPutSharesUsersOwnersUsers]
    groups: List[_ResponseCredentialsPutSharesUsersOwnersGroups]

class _ResponseCredentialsPutSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseCredentialsPutSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseCredentialsPutSharesGroups(Response):
    readers: _ResponseCredentialsPutSharesGroupsReaders
    writers: _ResponseCredentialsPutSharesGroupsWriters
    owners: _ResponseCredentialsPutSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseCredentialsPutSharesGroupsReaders(Response):
    users: List[_ResponseCredentialsPutSharesGroupsReadersUsers]
    groups: List[_ResponseCredentialsPutSharesGroupsReadersGroups]

class _ResponseCredentialsPutSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseCredentialsPutSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseCredentialsPutSharesGroupsWriters(Response):
    users: List[_ResponseCredentialsPutSharesGroupsWritersUsers]
    groups: List[_ResponseCredentialsPutSharesGroupsWritersGroups]

class _ResponseCredentialsPutSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseCredentialsPutSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseCredentialsPutSharesGroupsOwners(Response):
    users: List[_ResponseCredentialsPutSharesGroupsOwnersUsers]
    groups: List[_ResponseCredentialsPutSharesGroupsOwnersGroups]

class _ResponseCredentialsPutSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseCredentialsPutSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseCredentialsListDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseCredentialsPutTransfer(Response):
    dependencies: List[_ResponseCredentialsPutTransferDependencies]

class _ResponseCredentialsPutTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseDatabasesList(Response):
    id: int
    name: str
    adapter: str
    cluster_identifier: str
    host: str
    port: int
    database_name: str
    managed: bool

class _ResponseDatabasesGet(Response):
    id: int
    name: str
    adapter: str
    cluster_identifier: str
    host: str
    port: int
    database_name: str
    managed: bool

class _ResponseDatabasesListSchemas(Response):
    schema: str

class _ResponseDatabasesListSchemasTables(Response):
    name: str
    schema: str
    is_view: bool
    database_id: int

class _ResponseDatabasesGetSchemasTables(Response):
    id: int
    database_id: int
    schema: str
    name: str
    description: str
    is_view: bool
    row_count: int
    column_count: int
    size_mb: float
    owner: str
    distkey: str
    sortkeys: str
    refresh_status: str
    last_refresh: str
    data_updated_at: str
    schema_updated_at: str
    refresh_id: str
    last_run: _ResponseDatabasesGetSchemasTablesLastRun
    primary_keys: List[str]
    last_modified_keys: List[str]
    table_tags: List[_ResponseDatabasesGetSchemasTablesTableTags]
    ontology_mapping: dict
    columns: List[_ResponseDatabasesGetSchemasTablesColumns]
    joins: List[_ResponseDatabasesGetSchemasTablesJoins]
    multipart_key: List[str]
    enhancements: List[_ResponseDatabasesGetSchemasTablesEnhancements]
    view_def: str
    table_def: str
    outgoing_table_matches: List[_ResponseDatabasesGetSchemasTablesOutgoingTableMatches]

class _ResponseDatabasesGetSchemasTablesLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseDatabasesGetSchemasTablesTableTags(Response):
    id: int
    name: str

class _ResponseDatabasesGetSchemasTablesColumns(Response):
    name: str
    civis_data_type: str
    sql_type: str
    sample_values: List[str]
    encoding: str
    description: str
    order: int
    min_value: str
    max_value: str
    avg_value: float
    stddev: float
    value_distribution_percent: dict
    coverage_count: int
    null_count: int
    possible_dependent_variable_types: List[str]
    useable_as_independent_variable: bool
    useable_as_primary_key: bool
    value_distribution: dict
    distinct_count: int

class _ResponseDatabasesGetSchemasTablesJoins(Response):
    id: int
    left_table_id: int
    left_identifier: str
    right_table_id: int
    right_identifier: str
    on: str
    left_join: bool
    created_at: str
    updated_at: str

class _ResponseDatabasesGetSchemasTablesEnhancements(Response):
    type: str
    created_at: str
    updated_at: str
    join_id: int

class _ResponseDatabasesGetSchemasTablesOutgoingTableMatches(Response):
    source_table_id: int
    target_type: str
    target_id: int
    target: _ResponseDatabasesGetSchemasTablesOutgoingTableMatchesTarget
    job: _ResponseDatabasesGetSchemasTablesOutgoingTableMatchesJob

class _ResponseDatabasesGetSchemasTablesOutgoingTableMatchesTarget(Response):
    name: str

class _ResponseDatabasesGetSchemasTablesOutgoingTableMatchesJob(Response):
    id: int
    name: str
    type: str
    from_template_id: int
    state: str
    created_at: str
    updated_at: str
    runs: List[_ResponseDatabasesGetSchemasTablesOutgoingTableMatchesJobRuns]
    last_run: _ResponseDatabasesGetSchemasTablesOutgoingTableMatchesJobLastRun
    hidden: bool
    match_options: _ResponseDatabasesGetSchemasTablesOutgoingTableMatchesJobMatchOptions

class _ResponseDatabasesGetSchemasTablesOutgoingTableMatchesJobRuns(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseDatabasesGetSchemasTablesOutgoingTableMatchesJobLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseDatabasesGetSchemasTablesOutgoingTableMatchesJobMatchOptions(Response):
    max_matches: int
    threshold: str

class _ResponseDatabasesPatchSchemasTables(Response):
    id: int
    database_id: int
    schema: str
    name: str
    description: str
    is_view: bool
    row_count: int
    column_count: int
    size_mb: float
    owner: str
    distkey: str
    sortkeys: str
    refresh_status: str
    last_refresh: str
    data_updated_at: str
    schema_updated_at: str
    refresh_id: str
    last_run: _ResponseDatabasesPatchSchemasTablesLastRun
    primary_keys: List[str]
    last_modified_keys: List[str]
    table_tags: List[_ResponseDatabasesPatchSchemasTablesTableTags]
    ontology_mapping: dict
    columns: List[_ResponseDatabasesPatchSchemasTablesColumns]
    joins: List[_ResponseDatabasesPatchSchemasTablesJoins]
    multipart_key: List[str]
    enhancements: List[_ResponseDatabasesPatchSchemasTablesEnhancements]
    view_def: str
    table_def: str
    outgoing_table_matches: List[
        _ResponseDatabasesPatchSchemasTablesOutgoingTableMatches
    ]

class _ResponseDatabasesPatchSchemasTablesLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseDatabasesPatchSchemasTablesTableTags(Response):
    id: int
    name: str

class _ResponseDatabasesPatchSchemasTablesColumns(Response):
    name: str
    civis_data_type: str
    sql_type: str
    sample_values: List[str]
    encoding: str
    description: str
    order: int
    min_value: str
    max_value: str
    avg_value: float
    stddev: float
    value_distribution_percent: dict
    coverage_count: int
    null_count: int
    possible_dependent_variable_types: List[str]
    useable_as_independent_variable: bool
    useable_as_primary_key: bool
    value_distribution: dict
    distinct_count: int

class _ResponseDatabasesPatchSchemasTablesJoins(Response):
    id: int
    left_table_id: int
    left_identifier: str
    right_table_id: int
    right_identifier: str
    on: str
    left_join: bool
    created_at: str
    updated_at: str

class _ResponseDatabasesPatchSchemasTablesEnhancements(Response):
    type: str
    created_at: str
    updated_at: str
    join_id: int

class _ResponseDatabasesPatchSchemasTablesOutgoingTableMatches(Response):
    source_table_id: int
    target_type: str
    target_id: int
    target: _ResponseDatabasesPatchSchemasTablesOutgoingTableMatchesTarget
    job: _ResponseDatabasesPatchSchemasTablesOutgoingTableMatchesJob

class _ResponseDatabasesPatchSchemasTablesOutgoingTableMatchesTarget(Response):
    name: str

class _ResponseDatabasesPatchSchemasTablesOutgoingTableMatchesJob(Response):
    id: int
    name: str
    type: str
    from_template_id: int
    state: str
    created_at: str
    updated_at: str
    runs: List[_ResponseDatabasesPatchSchemasTablesOutgoingTableMatchesJobRuns]
    last_run: _ResponseDatabasesPatchSchemasTablesOutgoingTableMatchesJobLastRun
    hidden: bool
    match_options: (
        _ResponseDatabasesPatchSchemasTablesOutgoingTableMatchesJobMatchOptions
    )

class _ResponseDatabasesPatchSchemasTablesOutgoingTableMatchesJobRuns(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseDatabasesPatchSchemasTablesOutgoingTableMatchesJobLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseDatabasesPatchSchemasTablesOutgoingTableMatchesJobMatchOptions(Response):
    max_matches: int
    threshold: str

class _ResponseDatabasesListSchemasTablesProjects(Response):
    id: int
    author: _ResponseDatabasesListSchemasTablesProjectsAuthor
    name: str
    description: str
    users: List[_ResponseDatabasesListSchemasTablesProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseDatabasesListSchemasTablesProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseDatabasesListSchemasTablesProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseDatabasesPostSchemasScan(Response):
    job_id: int
    run_id: int

class _ResponseDatabasesGetTablePrivilegesSchemaName(Response):
    grantee: str
    grantee_type: str
    privileges: List[str]
    grantable_privileges: List[str]

class _ResponseDatabasesGetSchemaPrivileges(Response):
    grantee: str
    grantee_type: str
    privileges: List[str]
    grantable_privileges: List[str]

class _ResponseDatabasesListUsers(Response):
    username: str
    active: bool

class _ResponseDatabasesListGroups(Response):
    group_name: str
    members: List[str]

class _ResponseDatabasesListWhitelistIps(Response):
    id: int
    remote_host_id: int
    security_group_id: str
    subnet_mask: str
    created_at: str
    updated_at: str

class _ResponseDatabasesGetWhitelistIps(Response):
    id: int
    remote_host_id: int
    security_group_id: str
    subnet_mask: str
    authorized_by: str
    is_active: bool
    created_at: str
    updated_at: str

class _ResponseDatabasesListAdvancedSettings(Response):
    export_caching_enabled: bool

class _ResponseDatabasesPatchAdvancedSettings(Response):
    export_caching_enabled: bool

class _ResponseDatabasesPutAdvancedSettings(Response):
    export_caching_enabled: bool

class _ResponseDatabasesGetStatusGraphsTimeframe(Response):
    cpu_graph_url: str
    disk_graph_url: str
    queue_length_graph_url: str
    status_graph_url: str
    maintenance_graph_url: str
    query_duration_graph_url: str

class _ResponseEnhancementsPostCivisDataMatch(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsPostCivisDataMatchAuthor
    state: str
    schedule: _ResponseEnhancementsPostCivisDataMatchSchedule
    notifications: _ResponseEnhancementsPostCivisDataMatchNotifications
    running_as: _ResponseEnhancementsPostCivisDataMatchRunningAs
    my_permission_level: str
    input_field_mapping: dict
    input_table: _ResponseEnhancementsPostCivisDataMatchInputTable
    match_target_id: int
    output_table: _ResponseEnhancementsPostCivisDataMatchOutputTable
    max_matches: int
    threshold: float
    archived: bool
    last_run: _ResponseEnhancementsPostCivisDataMatchLastRun
    parent_id: int

class _ResponseEnhancementsPostCivisDataMatchAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPostCivisDataMatchSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsPostCivisDataMatchNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsPostCivisDataMatchRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPostCivisDataMatchInputTable(Response):
    database_name: str
    schema: str
    table: str

class _ResponseEnhancementsPostCivisDataMatchOutputTable(Response):
    database_name: str
    schema: str
    table: str

class _ResponseEnhancementsPostCivisDataMatchLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseEnhancementsGetCivisDataMatch(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsGetCivisDataMatchAuthor
    state: str
    schedule: _ResponseEnhancementsGetCivisDataMatchSchedule
    notifications: _ResponseEnhancementsGetCivisDataMatchNotifications
    running_as: _ResponseEnhancementsGetCivisDataMatchRunningAs
    my_permission_level: str
    input_field_mapping: dict
    input_table: _ResponseEnhancementsGetCivisDataMatchInputTable
    match_target_id: int
    output_table: _ResponseEnhancementsGetCivisDataMatchOutputTable
    max_matches: int
    threshold: float
    archived: bool
    last_run: _ResponseEnhancementsGetCivisDataMatchLastRun
    parent_id: int

class _ResponseEnhancementsGetCivisDataMatchAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsGetCivisDataMatchSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsGetCivisDataMatchNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsGetCivisDataMatchRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsGetCivisDataMatchInputTable(Response):
    database_name: str
    schema: str
    table: str

class _ResponseEnhancementsGetCivisDataMatchOutputTable(Response):
    database_name: str
    schema: str
    table: str

class _ResponseEnhancementsGetCivisDataMatchLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseEnhancementsPutCivisDataMatch(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsPutCivisDataMatchAuthor
    state: str
    schedule: _ResponseEnhancementsPutCivisDataMatchSchedule
    notifications: _ResponseEnhancementsPutCivisDataMatchNotifications
    running_as: _ResponseEnhancementsPutCivisDataMatchRunningAs
    my_permission_level: str
    input_field_mapping: dict
    input_table: _ResponseEnhancementsPutCivisDataMatchInputTable
    match_target_id: int
    output_table: _ResponseEnhancementsPutCivisDataMatchOutputTable
    max_matches: int
    threshold: float
    archived: bool
    last_run: _ResponseEnhancementsPutCivisDataMatchLastRun
    parent_id: int

class _ResponseEnhancementsPutCivisDataMatchAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPutCivisDataMatchSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsPutCivisDataMatchNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsPutCivisDataMatchRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPutCivisDataMatchInputTable(Response):
    database_name: str
    schema: str
    table: str

class _ResponseEnhancementsPutCivisDataMatchOutputTable(Response):
    database_name: str
    schema: str
    table: str

class _ResponseEnhancementsPutCivisDataMatchLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseEnhancementsPatchCivisDataMatch(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsPatchCivisDataMatchAuthor
    state: str
    schedule: _ResponseEnhancementsPatchCivisDataMatchSchedule
    notifications: _ResponseEnhancementsPatchCivisDataMatchNotifications
    running_as: _ResponseEnhancementsPatchCivisDataMatchRunningAs
    my_permission_level: str
    input_field_mapping: dict
    input_table: _ResponseEnhancementsPatchCivisDataMatchInputTable
    match_target_id: int
    output_table: _ResponseEnhancementsPatchCivisDataMatchOutputTable
    max_matches: int
    threshold: float
    archived: bool
    last_run: _ResponseEnhancementsPatchCivisDataMatchLastRun
    parent_id: int

class _ResponseEnhancementsPatchCivisDataMatchAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPatchCivisDataMatchSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsPatchCivisDataMatchNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsPatchCivisDataMatchRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPatchCivisDataMatchInputTable(Response):
    database_name: str
    schema: str
    table: str

class _ResponseEnhancementsPatchCivisDataMatchOutputTable(Response):
    database_name: str
    schema: str
    table: str

class _ResponseEnhancementsPatchCivisDataMatchLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseEnhancementsPostCivisDataMatchClone(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsPostCivisDataMatchCloneAuthor
    state: str
    schedule: _ResponseEnhancementsPostCivisDataMatchCloneSchedule
    notifications: _ResponseEnhancementsPostCivisDataMatchCloneNotifications
    running_as: _ResponseEnhancementsPostCivisDataMatchCloneRunningAs
    my_permission_level: str
    input_field_mapping: dict
    input_table: _ResponseEnhancementsPostCivisDataMatchCloneInputTable
    match_target_id: int
    output_table: _ResponseEnhancementsPostCivisDataMatchCloneOutputTable
    max_matches: int
    threshold: float
    archived: bool
    last_run: _ResponseEnhancementsPostCivisDataMatchCloneLastRun
    parent_id: int

class _ResponseEnhancementsPostCivisDataMatchCloneAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPostCivisDataMatchCloneSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsPostCivisDataMatchCloneNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsPostCivisDataMatchCloneRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPostCivisDataMatchCloneInputTable(Response):
    database_name: str
    schema: str
    table: str

class _ResponseEnhancementsPostCivisDataMatchCloneOutputTable(Response):
    database_name: str
    schema: str
    table: str

class _ResponseEnhancementsPostCivisDataMatchCloneLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseEnhancementsPostCivisDataMatchRuns(Response):
    id: int
    civis_data_match_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseEnhancementsListCivisDataMatchRuns(Response):
    id: int
    civis_data_match_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseEnhancementsGetCivisDataMatchRuns(Response):
    id: int
    civis_data_match_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseEnhancementsListCivisDataMatchRunsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseEnhancementsPostCivisDataMatchCancel(Response):
    id: int
    state: str
    is_cancel_requested: bool

class _ResponseEnhancementsListCivisDataMatchRunsOutputs(Response):
    object_type: str
    object_id: int
    name: str
    link: str
    value: object

class _ResponseEnhancementsListCivisDataMatchShares(Response):
    readers: _ResponseEnhancementsListCivisDataMatchSharesReaders
    writers: _ResponseEnhancementsListCivisDataMatchSharesWriters
    owners: _ResponseEnhancementsListCivisDataMatchSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseEnhancementsListCivisDataMatchSharesReaders(Response):
    users: List[_ResponseEnhancementsListCivisDataMatchSharesReadersUsers]
    groups: List[_ResponseEnhancementsListCivisDataMatchSharesReadersGroups]

class _ResponseEnhancementsListCivisDataMatchSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsListCivisDataMatchSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsListCivisDataMatchSharesWriters(Response):
    users: List[_ResponseEnhancementsListCivisDataMatchSharesWritersUsers]
    groups: List[_ResponseEnhancementsListCivisDataMatchSharesWritersGroups]

class _ResponseEnhancementsListCivisDataMatchSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsListCivisDataMatchSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsListCivisDataMatchSharesOwners(Response):
    users: List[_ResponseEnhancementsListCivisDataMatchSharesOwnersUsers]
    groups: List[_ResponseEnhancementsListCivisDataMatchSharesOwnersGroups]

class _ResponseEnhancementsListCivisDataMatchSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsListCivisDataMatchSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCivisDataMatchSharesUsers(Response):
    readers: _ResponseEnhancementsPutCivisDataMatchSharesUsersReaders
    writers: _ResponseEnhancementsPutCivisDataMatchSharesUsersWriters
    owners: _ResponseEnhancementsPutCivisDataMatchSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseEnhancementsPutCivisDataMatchSharesUsersReaders(Response):
    users: List[_ResponseEnhancementsPutCivisDataMatchSharesUsersReadersUsers]
    groups: List[_ResponseEnhancementsPutCivisDataMatchSharesUsersReadersGroups]

class _ResponseEnhancementsPutCivisDataMatchSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCivisDataMatchSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCivisDataMatchSharesUsersWriters(Response):
    users: List[_ResponseEnhancementsPutCivisDataMatchSharesUsersWritersUsers]
    groups: List[_ResponseEnhancementsPutCivisDataMatchSharesUsersWritersGroups]

class _ResponseEnhancementsPutCivisDataMatchSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCivisDataMatchSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCivisDataMatchSharesUsersOwners(Response):
    users: List[_ResponseEnhancementsPutCivisDataMatchSharesUsersOwnersUsers]
    groups: List[_ResponseEnhancementsPutCivisDataMatchSharesUsersOwnersGroups]

class _ResponseEnhancementsPutCivisDataMatchSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCivisDataMatchSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCivisDataMatchSharesGroups(Response):
    readers: _ResponseEnhancementsPutCivisDataMatchSharesGroupsReaders
    writers: _ResponseEnhancementsPutCivisDataMatchSharesGroupsWriters
    owners: _ResponseEnhancementsPutCivisDataMatchSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseEnhancementsPutCivisDataMatchSharesGroupsReaders(Response):
    users: List[_ResponseEnhancementsPutCivisDataMatchSharesGroupsReadersUsers]
    groups: List[_ResponseEnhancementsPutCivisDataMatchSharesGroupsReadersGroups]

class _ResponseEnhancementsPutCivisDataMatchSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCivisDataMatchSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCivisDataMatchSharesGroupsWriters(Response):
    users: List[_ResponseEnhancementsPutCivisDataMatchSharesGroupsWritersUsers]
    groups: List[_ResponseEnhancementsPutCivisDataMatchSharesGroupsWritersGroups]

class _ResponseEnhancementsPutCivisDataMatchSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCivisDataMatchSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCivisDataMatchSharesGroupsOwners(Response):
    users: List[_ResponseEnhancementsPutCivisDataMatchSharesGroupsOwnersUsers]
    groups: List[_ResponseEnhancementsPutCivisDataMatchSharesGroupsOwnersGroups]

class _ResponseEnhancementsPutCivisDataMatchSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCivisDataMatchSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsListCivisDataMatchDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseEnhancementsPutCivisDataMatchTransfer(Response):
    dependencies: List[_ResponseEnhancementsPutCivisDataMatchTransferDependencies]

class _ResponseEnhancementsPutCivisDataMatchTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseEnhancementsPutCivisDataMatchArchive(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsPutCivisDataMatchArchiveAuthor
    state: str
    schedule: _ResponseEnhancementsPutCivisDataMatchArchiveSchedule
    notifications: _ResponseEnhancementsPutCivisDataMatchArchiveNotifications
    running_as: _ResponseEnhancementsPutCivisDataMatchArchiveRunningAs
    my_permission_level: str
    input_field_mapping: dict
    input_table: _ResponseEnhancementsPutCivisDataMatchArchiveInputTable
    match_target_id: int
    output_table: _ResponseEnhancementsPutCivisDataMatchArchiveOutputTable
    max_matches: int
    threshold: float
    archived: bool
    last_run: _ResponseEnhancementsPutCivisDataMatchArchiveLastRun
    parent_id: int

class _ResponseEnhancementsPutCivisDataMatchArchiveAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPutCivisDataMatchArchiveSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsPutCivisDataMatchArchiveNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsPutCivisDataMatchArchiveRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPutCivisDataMatchArchiveInputTable(Response):
    database_name: str
    schema: str
    table: str

class _ResponseEnhancementsPutCivisDataMatchArchiveOutputTable(Response):
    database_name: str
    schema: str
    table: str

class _ResponseEnhancementsPutCivisDataMatchArchiveLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseEnhancementsListCivisDataMatchProjects(Response):
    id: int
    author: _ResponseEnhancementsListCivisDataMatchProjectsAuthor
    name: str
    description: str
    users: List[_ResponseEnhancementsListCivisDataMatchProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseEnhancementsListCivisDataMatchProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsListCivisDataMatchProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsListIdentityResolution(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsListIdentityResolutionAuthor
    state: str
    archived: str
    sources: List[_ResponseEnhancementsListIdentityResolutionSources]
    last_run: _ResponseEnhancementsListIdentityResolutionLastRun

class _ResponseEnhancementsListIdentityResolutionAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsListIdentityResolutionSources(Response):
    name: str

class _ResponseEnhancementsListIdentityResolutionLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str
    sample_records_query: str
    expand_cluster_query: str
    run_metrics: _ResponseEnhancementsListIdentityResolutionLastRunRunMetrics

class _ResponseEnhancementsListIdentityResolutionLastRunRunMetrics(Response):
    num_records: int
    unique_ids: int
    unique_deduplicated_ids: int
    max_cluster_size: int
    avg_cluster_size: float
    cluster_size_frequencies: dict

class _ResponseEnhancementsPostIdentityResolution(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsPostIdentityResolutionAuthor
    state: str
    schedule: _ResponseEnhancementsPostIdentityResolutionSchedule
    notifications: _ResponseEnhancementsPostIdentityResolutionNotifications
    running_as: _ResponseEnhancementsPostIdentityResolutionRunningAs
    my_permission_level: str
    archived: str
    threshold: float
    sources: List[_ResponseEnhancementsPostIdentityResolutionSources]
    match_target_id: int
    enforced_links: List[_ResponseEnhancementsPostIdentityResolutionEnforcedLinks]
    customer_graph: _ResponseEnhancementsPostIdentityResolutionCustomerGraph
    golden_table: _ResponseEnhancementsPostIdentityResolutionGoldenTable
    link_scores: _ResponseEnhancementsPostIdentityResolutionLinkScores
    legacy_id: int
    last_run: _ResponseEnhancementsPostIdentityResolutionLastRun

class _ResponseEnhancementsPostIdentityResolutionAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPostIdentityResolutionSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsPostIdentityResolutionNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsPostIdentityResolutionRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPostIdentityResolutionSources(Response):
    name: str
    description: str
    database_name: str
    schema_name: str
    table_name: str
    field_mapping: dict

class _ResponseEnhancementsPostIdentityResolutionEnforcedLinks(Response):
    source1: str
    source1_join_col: str
    source2: str
    source2_join_col: str

class _ResponseEnhancementsPostIdentityResolutionCustomerGraph(Response):
    database_name: str
    schema_name: str
    table_name: str

class _ResponseEnhancementsPostIdentityResolutionGoldenTable(Response):
    database_name: str
    schema_name: str
    table_name: str
    fields: List[_ResponseEnhancementsPostIdentityResolutionGoldenTableFields]

class _ResponseEnhancementsPostIdentityResolutionGoldenTableFields(Response):
    field_name: str
    rule_type: str
    source_preferences: List[
        _ResponseEnhancementsPostIdentityResolutionGoldenTableFieldsSourcePreferences
    ]

class _ResponseEnhancementsPostIdentityResolutionGoldenTableFieldsSourcePreferences(
    Response
):
    source_name: str
    ranking: int

class _ResponseEnhancementsPostIdentityResolutionLinkScores(Response):
    database_name: str
    schema_name: str
    table_name: str

class _ResponseEnhancementsPostIdentityResolutionLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str
    config: str
    sample_records_query: str
    expand_cluster_query: str
    run_metrics: _ResponseEnhancementsPostIdentityResolutionLastRunRunMetrics
    error_section: str

class _ResponseEnhancementsPostIdentityResolutionLastRunRunMetrics(Response):
    num_records: int
    unique_ids: int
    unique_deduplicated_ids: int
    max_cluster_size: int
    avg_cluster_size: float
    cluster_size_frequencies: dict

class _ResponseEnhancementsPutIdentityResolution(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsPutIdentityResolutionAuthor
    state: str
    schedule: _ResponseEnhancementsPutIdentityResolutionSchedule
    notifications: _ResponseEnhancementsPutIdentityResolutionNotifications
    running_as: _ResponseEnhancementsPutIdentityResolutionRunningAs
    my_permission_level: str
    archived: str
    threshold: float
    sources: List[_ResponseEnhancementsPutIdentityResolutionSources]
    match_target_id: int
    enforced_links: List[_ResponseEnhancementsPutIdentityResolutionEnforcedLinks]
    customer_graph: _ResponseEnhancementsPutIdentityResolutionCustomerGraph
    golden_table: _ResponseEnhancementsPutIdentityResolutionGoldenTable
    link_scores: _ResponseEnhancementsPutIdentityResolutionLinkScores
    legacy_id: int
    last_run: _ResponseEnhancementsPutIdentityResolutionLastRun

class _ResponseEnhancementsPutIdentityResolutionAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPutIdentityResolutionSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsPutIdentityResolutionNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsPutIdentityResolutionRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPutIdentityResolutionSources(Response):
    name: str
    description: str
    database_name: str
    schema_name: str
    table_name: str
    field_mapping: dict

class _ResponseEnhancementsPutIdentityResolutionEnforcedLinks(Response):
    source1: str
    source1_join_col: str
    source2: str
    source2_join_col: str

class _ResponseEnhancementsPutIdentityResolutionCustomerGraph(Response):
    database_name: str
    schema_name: str
    table_name: str

class _ResponseEnhancementsPutIdentityResolutionGoldenTable(Response):
    database_name: str
    schema_name: str
    table_name: str
    fields: List[_ResponseEnhancementsPutIdentityResolutionGoldenTableFields]

class _ResponseEnhancementsPutIdentityResolutionGoldenTableFields(Response):
    field_name: str
    rule_type: str
    source_preferences: List[
        _ResponseEnhancementsPutIdentityResolutionGoldenTableFieldsSourcePreferences
    ]

class _ResponseEnhancementsPutIdentityResolutionGoldenTableFieldsSourcePreferences(
    Response
):
    source_name: str
    ranking: int

class _ResponseEnhancementsPutIdentityResolutionLinkScores(Response):
    database_name: str
    schema_name: str
    table_name: str

class _ResponseEnhancementsPutIdentityResolutionLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str
    config: str
    sample_records_query: str
    expand_cluster_query: str
    run_metrics: _ResponseEnhancementsPutIdentityResolutionLastRunRunMetrics
    error_section: str

class _ResponseEnhancementsPutIdentityResolutionLastRunRunMetrics(Response):
    num_records: int
    unique_ids: int
    unique_deduplicated_ids: int
    max_cluster_size: int
    avg_cluster_size: float
    cluster_size_frequencies: dict

class _ResponseEnhancementsPatchIdentityResolution(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsPatchIdentityResolutionAuthor
    state: str
    schedule: _ResponseEnhancementsPatchIdentityResolutionSchedule
    notifications: _ResponseEnhancementsPatchIdentityResolutionNotifications
    running_as: _ResponseEnhancementsPatchIdentityResolutionRunningAs
    my_permission_level: str
    archived: str
    threshold: float
    sources: List[_ResponseEnhancementsPatchIdentityResolutionSources]
    match_target_id: int
    enforced_links: List[_ResponseEnhancementsPatchIdentityResolutionEnforcedLinks]
    customer_graph: _ResponseEnhancementsPatchIdentityResolutionCustomerGraph
    golden_table: _ResponseEnhancementsPatchIdentityResolutionGoldenTable
    link_scores: _ResponseEnhancementsPatchIdentityResolutionLinkScores
    legacy_id: int
    last_run: _ResponseEnhancementsPatchIdentityResolutionLastRun

class _ResponseEnhancementsPatchIdentityResolutionAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPatchIdentityResolutionSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsPatchIdentityResolutionNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsPatchIdentityResolutionRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPatchIdentityResolutionSources(Response):
    name: str
    description: str
    database_name: str
    schema_name: str
    table_name: str
    field_mapping: dict

class _ResponseEnhancementsPatchIdentityResolutionEnforcedLinks(Response):
    source1: str
    source1_join_col: str
    source2: str
    source2_join_col: str

class _ResponseEnhancementsPatchIdentityResolutionCustomerGraph(Response):
    database_name: str
    schema_name: str
    table_name: str

class _ResponseEnhancementsPatchIdentityResolutionGoldenTable(Response):
    database_name: str
    schema_name: str
    table_name: str
    fields: List[_ResponseEnhancementsPatchIdentityResolutionGoldenTableFields]

class _ResponseEnhancementsPatchIdentityResolutionGoldenTableFields(Response):
    field_name: str
    rule_type: str
    source_preferences: List[
        _ResponseEnhancementsPatchIdentityResolutionGoldenTableFieldsSourcePreferences
    ]

class _ResponseEnhancementsPatchIdentityResolutionGoldenTableFieldsSourcePreferences(
    Response
):
    source_name: str
    ranking: int

class _ResponseEnhancementsPatchIdentityResolutionLinkScores(Response):
    database_name: str
    schema_name: str
    table_name: str

class _ResponseEnhancementsPatchIdentityResolutionLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str
    config: str
    sample_records_query: str
    expand_cluster_query: str
    run_metrics: _ResponseEnhancementsPatchIdentityResolutionLastRunRunMetrics
    error_section: str

class _ResponseEnhancementsPatchIdentityResolutionLastRunRunMetrics(Response):
    num_records: int
    unique_ids: int
    unique_deduplicated_ids: int
    max_cluster_size: int
    avg_cluster_size: float
    cluster_size_frequencies: dict

class _ResponseEnhancementsGetIdentityResolution(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsGetIdentityResolutionAuthor
    state: str
    schedule: _ResponseEnhancementsGetIdentityResolutionSchedule
    notifications: _ResponseEnhancementsGetIdentityResolutionNotifications
    running_as: _ResponseEnhancementsGetIdentityResolutionRunningAs
    my_permission_level: str
    archived: str
    threshold: float
    sources: List[_ResponseEnhancementsGetIdentityResolutionSources]
    match_target_id: int
    enforced_links: List[_ResponseEnhancementsGetIdentityResolutionEnforcedLinks]
    customer_graph: _ResponseEnhancementsGetIdentityResolutionCustomerGraph
    golden_table: _ResponseEnhancementsGetIdentityResolutionGoldenTable
    link_scores: _ResponseEnhancementsGetIdentityResolutionLinkScores
    legacy_id: int
    last_run: _ResponseEnhancementsGetIdentityResolutionLastRun

class _ResponseEnhancementsGetIdentityResolutionAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsGetIdentityResolutionSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsGetIdentityResolutionNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsGetIdentityResolutionRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsGetIdentityResolutionSources(Response):
    name: str
    description: str
    database_name: str
    schema_name: str
    table_name: str
    field_mapping: dict

class _ResponseEnhancementsGetIdentityResolutionEnforcedLinks(Response):
    source1: str
    source1_join_col: str
    source2: str
    source2_join_col: str

class _ResponseEnhancementsGetIdentityResolutionCustomerGraph(Response):
    database_name: str
    schema_name: str
    table_name: str

class _ResponseEnhancementsGetIdentityResolutionGoldenTable(Response):
    database_name: str
    schema_name: str
    table_name: str
    fields: List[_ResponseEnhancementsGetIdentityResolutionGoldenTableFields]

class _ResponseEnhancementsGetIdentityResolutionGoldenTableFields(Response):
    field_name: str
    rule_type: str
    source_preferences: List[
        _ResponseEnhancementsGetIdentityResolutionGoldenTableFieldsSourcePreferences
    ]

class _ResponseEnhancementsGetIdentityResolutionGoldenTableFieldsSourcePreferences(
    Response
):
    source_name: str
    ranking: int

class _ResponseEnhancementsGetIdentityResolutionLinkScores(Response):
    database_name: str
    schema_name: str
    table_name: str

class _ResponseEnhancementsGetIdentityResolutionLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str
    config: str
    sample_records_query: str
    expand_cluster_query: str
    run_metrics: _ResponseEnhancementsGetIdentityResolutionLastRunRunMetrics
    error_section: str

class _ResponseEnhancementsGetIdentityResolutionLastRunRunMetrics(Response):
    num_records: int
    unique_ids: int
    unique_deduplicated_ids: int
    max_cluster_size: int
    avg_cluster_size: float
    cluster_size_frequencies: dict

class _ResponseEnhancementsPostIdentityResolutionClone(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsPostIdentityResolutionCloneAuthor
    state: str
    schedule: _ResponseEnhancementsPostIdentityResolutionCloneSchedule
    notifications: _ResponseEnhancementsPostIdentityResolutionCloneNotifications
    running_as: _ResponseEnhancementsPostIdentityResolutionCloneRunningAs
    my_permission_level: str
    archived: str
    threshold: float
    sources: List[_ResponseEnhancementsPostIdentityResolutionCloneSources]
    match_target_id: int
    enforced_links: List[_ResponseEnhancementsPostIdentityResolutionCloneEnforcedLinks]
    customer_graph: _ResponseEnhancementsPostIdentityResolutionCloneCustomerGraph
    golden_table: _ResponseEnhancementsPostIdentityResolutionCloneGoldenTable
    link_scores: _ResponseEnhancementsPostIdentityResolutionCloneLinkScores
    legacy_id: int
    last_run: _ResponseEnhancementsPostIdentityResolutionCloneLastRun

class _ResponseEnhancementsPostIdentityResolutionCloneAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPostIdentityResolutionCloneSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsPostIdentityResolutionCloneNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsPostIdentityResolutionCloneRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPostIdentityResolutionCloneSources(Response):
    name: str
    description: str
    database_name: str
    schema_name: str
    table_name: str
    field_mapping: dict

class _ResponseEnhancementsPostIdentityResolutionCloneEnforcedLinks(Response):
    source1: str
    source1_join_col: str
    source2: str
    source2_join_col: str

class _ResponseEnhancementsPostIdentityResolutionCloneCustomerGraph(Response):
    database_name: str
    schema_name: str
    table_name: str

class _ResponseEnhancementsPostIdentityResolutionCloneGoldenTable(Response):
    database_name: str
    schema_name: str
    table_name: str
    fields: List[_ResponseEnhancementsPostIdentityResolutionCloneGoldenTableFields]

class _ResponseEnhancementsPostIdentityResolutionCloneGoldenTableFields(Response):
    field_name: str
    rule_type: str
    source_preferences: List[
        _ResponseEnhancementsPostIdentityResolutionCloneGoldenTableFieldsSourcePreferences
    ]

class _ResponseEnhancementsPostIdentityResolutionCloneGoldenTableFieldsSourcePreferences(  # noqa: E501
    Response
):
    source_name: str
    ranking: int

class _ResponseEnhancementsPostIdentityResolutionCloneLinkScores(Response):
    database_name: str
    schema_name: str
    table_name: str

class _ResponseEnhancementsPostIdentityResolutionCloneLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str
    config: str
    sample_records_query: str
    expand_cluster_query: str
    run_metrics: _ResponseEnhancementsPostIdentityResolutionCloneLastRunRunMetrics
    error_section: str

class _ResponseEnhancementsPostIdentityResolutionCloneLastRunRunMetrics(Response):
    num_records: int
    unique_ids: int
    unique_deduplicated_ids: int
    max_cluster_size: int
    avg_cluster_size: float
    cluster_size_frequencies: dict

class _ResponseEnhancementsPostIdentityResolutionRuns(Response):
    id: int
    identity_resolution_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    config: str
    sample_records_query: str
    expand_cluster_query: str
    run_metrics: _ResponseEnhancementsPostIdentityResolutionRunsRunMetrics
    error_section: str

class _ResponseEnhancementsPostIdentityResolutionRunsRunMetrics(Response):
    num_records: int
    unique_ids: int
    unique_deduplicated_ids: int
    max_cluster_size: int
    avg_cluster_size: float
    cluster_size_frequencies: dict

class _ResponseEnhancementsListIdentityResolutionRuns(Response):
    id: int
    identity_resolution_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    sample_records_query: str
    expand_cluster_query: str
    run_metrics: _ResponseEnhancementsListIdentityResolutionRunsRunMetrics

class _ResponseEnhancementsListIdentityResolutionRunsRunMetrics(Response):
    num_records: int
    unique_ids: int
    unique_deduplicated_ids: int
    max_cluster_size: int
    avg_cluster_size: float
    cluster_size_frequencies: dict

class _ResponseEnhancementsGetIdentityResolutionRuns(Response):
    id: int
    identity_resolution_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    config: str
    sample_records_query: str
    expand_cluster_query: str
    run_metrics: _ResponseEnhancementsGetIdentityResolutionRunsRunMetrics
    error_section: str

class _ResponseEnhancementsGetIdentityResolutionRunsRunMetrics(Response):
    num_records: int
    unique_ids: int
    unique_deduplicated_ids: int
    max_cluster_size: int
    avg_cluster_size: float
    cluster_size_frequencies: dict

class _ResponseEnhancementsListIdentityResolutionRunsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseEnhancementsPostIdentityResolutionCancel(Response):
    id: int
    state: str
    is_cancel_requested: bool

class _ResponseEnhancementsListTypes(Response):
    name: str

class _ResponseEnhancementsListFieldMapping(Response):
    field: str
    description: str

class _ResponseEnhancementsList(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsListAuthor
    state: str
    archived: str

class _ResponseEnhancementsListAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPostCassNcoa(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsPostCassNcoaAuthor
    state: str
    schedule: _ResponseEnhancementsPostCassNcoaSchedule
    notifications: _ResponseEnhancementsPostCassNcoaNotifications
    running_as: _ResponseEnhancementsPostCassNcoaRunningAs
    my_permission_level: str
    source: _ResponseEnhancementsPostCassNcoaSource
    destination: _ResponseEnhancementsPostCassNcoaDestination
    column_mapping: _ResponseEnhancementsPostCassNcoaColumnMapping
    use_default_column_mapping: bool
    perform_ncoa: bool
    ncoa_credential_id: int
    output_level: str
    limiting_sql: str
    batch_size: int
    archived: str
    parent_id: int

class _ResponseEnhancementsPostCassNcoaAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPostCassNcoaSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsPostCassNcoaNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsPostCassNcoaRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPostCassNcoaSource(Response):
    database_table: _ResponseEnhancementsPostCassNcoaSourceDatabaseTable

class _ResponseEnhancementsPostCassNcoaSourceDatabaseTable(Response):
    schema: str
    table: str
    remote_host_id: int
    credential_id: int
    multipart_key: List[str]

class _ResponseEnhancementsPostCassNcoaDestination(Response):
    database_table: _ResponseEnhancementsPostCassNcoaDestinationDatabaseTable

class _ResponseEnhancementsPostCassNcoaDestinationDatabaseTable(Response):
    schema: str
    table: str

class _ResponseEnhancementsPostCassNcoaColumnMapping(Response):
    address1: str
    address2: str
    city: str
    state: str
    zip: str
    name: str
    company: str

class _ResponseEnhancementsGetCassNcoa(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsGetCassNcoaAuthor
    state: str
    schedule: _ResponseEnhancementsGetCassNcoaSchedule
    notifications: _ResponseEnhancementsGetCassNcoaNotifications
    running_as: _ResponseEnhancementsGetCassNcoaRunningAs
    my_permission_level: str
    source: _ResponseEnhancementsGetCassNcoaSource
    destination: _ResponseEnhancementsGetCassNcoaDestination
    column_mapping: _ResponseEnhancementsGetCassNcoaColumnMapping
    use_default_column_mapping: bool
    perform_ncoa: bool
    ncoa_credential_id: int
    output_level: str
    limiting_sql: str
    batch_size: int
    archived: str
    parent_id: int

class _ResponseEnhancementsGetCassNcoaAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsGetCassNcoaSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsGetCassNcoaNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsGetCassNcoaRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsGetCassNcoaSource(Response):
    database_table: _ResponseEnhancementsGetCassNcoaSourceDatabaseTable

class _ResponseEnhancementsGetCassNcoaSourceDatabaseTable(Response):
    schema: str
    table: str
    remote_host_id: int
    credential_id: int
    multipart_key: List[str]

class _ResponseEnhancementsGetCassNcoaDestination(Response):
    database_table: _ResponseEnhancementsGetCassNcoaDestinationDatabaseTable

class _ResponseEnhancementsGetCassNcoaDestinationDatabaseTable(Response):
    schema: str
    table: str

class _ResponseEnhancementsGetCassNcoaColumnMapping(Response):
    address1: str
    address2: str
    city: str
    state: str
    zip: str
    name: str
    company: str

class _ResponseEnhancementsPutCassNcoa(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsPutCassNcoaAuthor
    state: str
    schedule: _ResponseEnhancementsPutCassNcoaSchedule
    notifications: _ResponseEnhancementsPutCassNcoaNotifications
    running_as: _ResponseEnhancementsPutCassNcoaRunningAs
    my_permission_level: str
    source: _ResponseEnhancementsPutCassNcoaSource
    destination: _ResponseEnhancementsPutCassNcoaDestination
    column_mapping: _ResponseEnhancementsPutCassNcoaColumnMapping
    use_default_column_mapping: bool
    perform_ncoa: bool
    ncoa_credential_id: int
    output_level: str
    limiting_sql: str
    batch_size: int
    archived: str
    parent_id: int

class _ResponseEnhancementsPutCassNcoaAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPutCassNcoaSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsPutCassNcoaNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsPutCassNcoaRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPutCassNcoaSource(Response):
    database_table: _ResponseEnhancementsPutCassNcoaSourceDatabaseTable

class _ResponseEnhancementsPutCassNcoaSourceDatabaseTable(Response):
    schema: str
    table: str
    remote_host_id: int
    credential_id: int
    multipart_key: List[str]

class _ResponseEnhancementsPutCassNcoaDestination(Response):
    database_table: _ResponseEnhancementsPutCassNcoaDestinationDatabaseTable

class _ResponseEnhancementsPutCassNcoaDestinationDatabaseTable(Response):
    schema: str
    table: str

class _ResponseEnhancementsPutCassNcoaColumnMapping(Response):
    address1: str
    address2: str
    city: str
    state: str
    zip: str
    name: str
    company: str

class _ResponseEnhancementsPatchCassNcoa(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsPatchCassNcoaAuthor
    state: str
    schedule: _ResponseEnhancementsPatchCassNcoaSchedule
    notifications: _ResponseEnhancementsPatchCassNcoaNotifications
    running_as: _ResponseEnhancementsPatchCassNcoaRunningAs
    my_permission_level: str
    source: _ResponseEnhancementsPatchCassNcoaSource
    destination: _ResponseEnhancementsPatchCassNcoaDestination
    column_mapping: _ResponseEnhancementsPatchCassNcoaColumnMapping
    use_default_column_mapping: bool
    perform_ncoa: bool
    ncoa_credential_id: int
    output_level: str
    limiting_sql: str
    batch_size: int
    archived: str
    parent_id: int

class _ResponseEnhancementsPatchCassNcoaAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPatchCassNcoaSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsPatchCassNcoaNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsPatchCassNcoaRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPatchCassNcoaSource(Response):
    database_table: _ResponseEnhancementsPatchCassNcoaSourceDatabaseTable

class _ResponseEnhancementsPatchCassNcoaSourceDatabaseTable(Response):
    schema: str
    table: str
    remote_host_id: int
    credential_id: int
    multipart_key: List[str]

class _ResponseEnhancementsPatchCassNcoaDestination(Response):
    database_table: _ResponseEnhancementsPatchCassNcoaDestinationDatabaseTable

class _ResponseEnhancementsPatchCassNcoaDestinationDatabaseTable(Response):
    schema: str
    table: str

class _ResponseEnhancementsPatchCassNcoaColumnMapping(Response):
    address1: str
    address2: str
    city: str
    state: str
    zip: str
    name: str
    company: str

class _ResponseEnhancementsPostCassNcoaRuns(Response):
    id: int
    cass_ncoa_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseEnhancementsListCassNcoaRuns(Response):
    id: int
    cass_ncoa_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseEnhancementsGetCassNcoaRuns(Response):
    id: int
    cass_ncoa_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseEnhancementsListCassNcoaRunsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseEnhancementsPostCassNcoaCancel(Response):
    id: int
    state: str
    is_cancel_requested: bool

class _ResponseEnhancementsListCassNcoaRunsOutputs(Response):
    object_type: str
    object_id: int
    name: str
    link: str
    value: object

class _ResponseEnhancementsPostGeocode(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsPostGeocodeAuthor
    state: str
    schedule: _ResponseEnhancementsPostGeocodeSchedule
    notifications: _ResponseEnhancementsPostGeocodeNotifications
    running_as: _ResponseEnhancementsPostGeocodeRunningAs
    my_permission_level: str
    remote_host_id: int
    credential_id: int
    source_schema_and_table: str
    multipart_key: List[str]
    limiting_sql: str
    target_schema: str
    target_table: str
    country: str
    provider: str
    output_address: bool
    archived: str
    parent_id: int

class _ResponseEnhancementsPostGeocodeAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPostGeocodeSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsPostGeocodeNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsPostGeocodeRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsGetGeocode(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsGetGeocodeAuthor
    state: str
    schedule: _ResponseEnhancementsGetGeocodeSchedule
    notifications: _ResponseEnhancementsGetGeocodeNotifications
    running_as: _ResponseEnhancementsGetGeocodeRunningAs
    my_permission_level: str
    remote_host_id: int
    credential_id: int
    source_schema_and_table: str
    multipart_key: List[str]
    limiting_sql: str
    target_schema: str
    target_table: str
    country: str
    provider: str
    output_address: bool
    archived: str
    parent_id: int

class _ResponseEnhancementsGetGeocodeAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsGetGeocodeSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsGetGeocodeNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsGetGeocodeRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPutGeocode(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsPutGeocodeAuthor
    state: str
    schedule: _ResponseEnhancementsPutGeocodeSchedule
    notifications: _ResponseEnhancementsPutGeocodeNotifications
    running_as: _ResponseEnhancementsPutGeocodeRunningAs
    my_permission_level: str
    remote_host_id: int
    credential_id: int
    source_schema_and_table: str
    multipart_key: List[str]
    limiting_sql: str
    target_schema: str
    target_table: str
    country: str
    provider: str
    output_address: bool
    archived: str
    parent_id: int

class _ResponseEnhancementsPutGeocodeAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPutGeocodeSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsPutGeocodeNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsPutGeocodeRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPatchGeocode(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsPatchGeocodeAuthor
    state: str
    schedule: _ResponseEnhancementsPatchGeocodeSchedule
    notifications: _ResponseEnhancementsPatchGeocodeNotifications
    running_as: _ResponseEnhancementsPatchGeocodeRunningAs
    my_permission_level: str
    remote_host_id: int
    credential_id: int
    source_schema_and_table: str
    multipart_key: List[str]
    limiting_sql: str
    target_schema: str
    target_table: str
    country: str
    provider: str
    output_address: bool
    archived: str
    parent_id: int

class _ResponseEnhancementsPatchGeocodeAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPatchGeocodeSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsPatchGeocodeNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsPatchGeocodeRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPostGeocodeRuns(Response):
    id: int
    geocode_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseEnhancementsListGeocodeRuns(Response):
    id: int
    geocode_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseEnhancementsGetGeocodeRuns(Response):
    id: int
    geocode_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseEnhancementsListGeocodeRunsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseEnhancementsPostGeocodeCancel(Response):
    id: int
    state: str
    is_cancel_requested: bool

class _ResponseEnhancementsListGeocodeRunsOutputs(Response):
    object_type: str
    object_id: int
    name: str
    link: str
    value: object

class _ResponseEnhancementsListCassNcoaShares(Response):
    readers: _ResponseEnhancementsListCassNcoaSharesReaders
    writers: _ResponseEnhancementsListCassNcoaSharesWriters
    owners: _ResponseEnhancementsListCassNcoaSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseEnhancementsListCassNcoaSharesReaders(Response):
    users: List[_ResponseEnhancementsListCassNcoaSharesReadersUsers]
    groups: List[_ResponseEnhancementsListCassNcoaSharesReadersGroups]

class _ResponseEnhancementsListCassNcoaSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsListCassNcoaSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsListCassNcoaSharesWriters(Response):
    users: List[_ResponseEnhancementsListCassNcoaSharesWritersUsers]
    groups: List[_ResponseEnhancementsListCassNcoaSharesWritersGroups]

class _ResponseEnhancementsListCassNcoaSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsListCassNcoaSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsListCassNcoaSharesOwners(Response):
    users: List[_ResponseEnhancementsListCassNcoaSharesOwnersUsers]
    groups: List[_ResponseEnhancementsListCassNcoaSharesOwnersGroups]

class _ResponseEnhancementsListCassNcoaSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsListCassNcoaSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCassNcoaSharesUsers(Response):
    readers: _ResponseEnhancementsPutCassNcoaSharesUsersReaders
    writers: _ResponseEnhancementsPutCassNcoaSharesUsersWriters
    owners: _ResponseEnhancementsPutCassNcoaSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseEnhancementsPutCassNcoaSharesUsersReaders(Response):
    users: List[_ResponseEnhancementsPutCassNcoaSharesUsersReadersUsers]
    groups: List[_ResponseEnhancementsPutCassNcoaSharesUsersReadersGroups]

class _ResponseEnhancementsPutCassNcoaSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCassNcoaSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCassNcoaSharesUsersWriters(Response):
    users: List[_ResponseEnhancementsPutCassNcoaSharesUsersWritersUsers]
    groups: List[_ResponseEnhancementsPutCassNcoaSharesUsersWritersGroups]

class _ResponseEnhancementsPutCassNcoaSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCassNcoaSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCassNcoaSharesUsersOwners(Response):
    users: List[_ResponseEnhancementsPutCassNcoaSharesUsersOwnersUsers]
    groups: List[_ResponseEnhancementsPutCassNcoaSharesUsersOwnersGroups]

class _ResponseEnhancementsPutCassNcoaSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCassNcoaSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCassNcoaSharesGroups(Response):
    readers: _ResponseEnhancementsPutCassNcoaSharesGroupsReaders
    writers: _ResponseEnhancementsPutCassNcoaSharesGroupsWriters
    owners: _ResponseEnhancementsPutCassNcoaSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseEnhancementsPutCassNcoaSharesGroupsReaders(Response):
    users: List[_ResponseEnhancementsPutCassNcoaSharesGroupsReadersUsers]
    groups: List[_ResponseEnhancementsPutCassNcoaSharesGroupsReadersGroups]

class _ResponseEnhancementsPutCassNcoaSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCassNcoaSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCassNcoaSharesGroupsWriters(Response):
    users: List[_ResponseEnhancementsPutCassNcoaSharesGroupsWritersUsers]
    groups: List[_ResponseEnhancementsPutCassNcoaSharesGroupsWritersGroups]

class _ResponseEnhancementsPutCassNcoaSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCassNcoaSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCassNcoaSharesGroupsOwners(Response):
    users: List[_ResponseEnhancementsPutCassNcoaSharesGroupsOwnersUsers]
    groups: List[_ResponseEnhancementsPutCassNcoaSharesGroupsOwnersGroups]

class _ResponseEnhancementsPutCassNcoaSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutCassNcoaSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsListCassNcoaDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseEnhancementsPutCassNcoaTransfer(Response):
    dependencies: List[_ResponseEnhancementsPutCassNcoaTransferDependencies]

class _ResponseEnhancementsPutCassNcoaTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseEnhancementsListCassNcoaProjects(Response):
    id: int
    author: _ResponseEnhancementsListCassNcoaProjectsAuthor
    name: str
    description: str
    users: List[_ResponseEnhancementsListCassNcoaProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseEnhancementsListCassNcoaProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsListCassNcoaProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPutCassNcoaArchive(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsPutCassNcoaArchiveAuthor
    state: str
    schedule: _ResponseEnhancementsPutCassNcoaArchiveSchedule
    notifications: _ResponseEnhancementsPutCassNcoaArchiveNotifications
    running_as: _ResponseEnhancementsPutCassNcoaArchiveRunningAs
    my_permission_level: str
    source: _ResponseEnhancementsPutCassNcoaArchiveSource
    destination: _ResponseEnhancementsPutCassNcoaArchiveDestination
    column_mapping: _ResponseEnhancementsPutCassNcoaArchiveColumnMapping
    use_default_column_mapping: bool
    perform_ncoa: bool
    ncoa_credential_id: int
    output_level: str
    limiting_sql: str
    batch_size: int
    archived: str
    parent_id: int

class _ResponseEnhancementsPutCassNcoaArchiveAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPutCassNcoaArchiveSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsPutCassNcoaArchiveNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsPutCassNcoaArchiveRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPutCassNcoaArchiveSource(Response):
    database_table: _ResponseEnhancementsPutCassNcoaArchiveSourceDatabaseTable

class _ResponseEnhancementsPutCassNcoaArchiveSourceDatabaseTable(Response):
    schema: str
    table: str
    remote_host_id: int
    credential_id: int
    multipart_key: List[str]

class _ResponseEnhancementsPutCassNcoaArchiveDestination(Response):
    database_table: _ResponseEnhancementsPutCassNcoaArchiveDestinationDatabaseTable

class _ResponseEnhancementsPutCassNcoaArchiveDestinationDatabaseTable(Response):
    schema: str
    table: str

class _ResponseEnhancementsPutCassNcoaArchiveColumnMapping(Response):
    address1: str
    address2: str
    city: str
    state: str
    zip: str
    name: str
    company: str

class _ResponseEnhancementsListGeocodeShares(Response):
    readers: _ResponseEnhancementsListGeocodeSharesReaders
    writers: _ResponseEnhancementsListGeocodeSharesWriters
    owners: _ResponseEnhancementsListGeocodeSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseEnhancementsListGeocodeSharesReaders(Response):
    users: List[_ResponseEnhancementsListGeocodeSharesReadersUsers]
    groups: List[_ResponseEnhancementsListGeocodeSharesReadersGroups]

class _ResponseEnhancementsListGeocodeSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsListGeocodeSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsListGeocodeSharesWriters(Response):
    users: List[_ResponseEnhancementsListGeocodeSharesWritersUsers]
    groups: List[_ResponseEnhancementsListGeocodeSharesWritersGroups]

class _ResponseEnhancementsListGeocodeSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsListGeocodeSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsListGeocodeSharesOwners(Response):
    users: List[_ResponseEnhancementsListGeocodeSharesOwnersUsers]
    groups: List[_ResponseEnhancementsListGeocodeSharesOwnersGroups]

class _ResponseEnhancementsListGeocodeSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsListGeocodeSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutGeocodeSharesUsers(Response):
    readers: _ResponseEnhancementsPutGeocodeSharesUsersReaders
    writers: _ResponseEnhancementsPutGeocodeSharesUsersWriters
    owners: _ResponseEnhancementsPutGeocodeSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseEnhancementsPutGeocodeSharesUsersReaders(Response):
    users: List[_ResponseEnhancementsPutGeocodeSharesUsersReadersUsers]
    groups: List[_ResponseEnhancementsPutGeocodeSharesUsersReadersGroups]

class _ResponseEnhancementsPutGeocodeSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutGeocodeSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutGeocodeSharesUsersWriters(Response):
    users: List[_ResponseEnhancementsPutGeocodeSharesUsersWritersUsers]
    groups: List[_ResponseEnhancementsPutGeocodeSharesUsersWritersGroups]

class _ResponseEnhancementsPutGeocodeSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutGeocodeSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutGeocodeSharesUsersOwners(Response):
    users: List[_ResponseEnhancementsPutGeocodeSharesUsersOwnersUsers]
    groups: List[_ResponseEnhancementsPutGeocodeSharesUsersOwnersGroups]

class _ResponseEnhancementsPutGeocodeSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutGeocodeSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutGeocodeSharesGroups(Response):
    readers: _ResponseEnhancementsPutGeocodeSharesGroupsReaders
    writers: _ResponseEnhancementsPutGeocodeSharesGroupsWriters
    owners: _ResponseEnhancementsPutGeocodeSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseEnhancementsPutGeocodeSharesGroupsReaders(Response):
    users: List[_ResponseEnhancementsPutGeocodeSharesGroupsReadersUsers]
    groups: List[_ResponseEnhancementsPutGeocodeSharesGroupsReadersGroups]

class _ResponseEnhancementsPutGeocodeSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutGeocodeSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutGeocodeSharesGroupsWriters(Response):
    users: List[_ResponseEnhancementsPutGeocodeSharesGroupsWritersUsers]
    groups: List[_ResponseEnhancementsPutGeocodeSharesGroupsWritersGroups]

class _ResponseEnhancementsPutGeocodeSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutGeocodeSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutGeocodeSharesGroupsOwners(Response):
    users: List[_ResponseEnhancementsPutGeocodeSharesGroupsOwnersUsers]
    groups: List[_ResponseEnhancementsPutGeocodeSharesGroupsOwnersGroups]

class _ResponseEnhancementsPutGeocodeSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutGeocodeSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsListGeocodeDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseEnhancementsPutGeocodeTransfer(Response):
    dependencies: List[_ResponseEnhancementsPutGeocodeTransferDependencies]

class _ResponseEnhancementsPutGeocodeTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseEnhancementsListGeocodeProjects(Response):
    id: int
    author: _ResponseEnhancementsListGeocodeProjectsAuthor
    name: str
    description: str
    users: List[_ResponseEnhancementsListGeocodeProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseEnhancementsListGeocodeProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsListGeocodeProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPutGeocodeArchive(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsPutGeocodeArchiveAuthor
    state: str
    schedule: _ResponseEnhancementsPutGeocodeArchiveSchedule
    notifications: _ResponseEnhancementsPutGeocodeArchiveNotifications
    running_as: _ResponseEnhancementsPutGeocodeArchiveRunningAs
    my_permission_level: str
    remote_host_id: int
    credential_id: int
    source_schema_and_table: str
    multipart_key: List[str]
    limiting_sql: str
    target_schema: str
    target_table: str
    country: str
    provider: str
    output_address: bool
    archived: str
    parent_id: int

class _ResponseEnhancementsPutGeocodeArchiveAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPutGeocodeArchiveSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsPutGeocodeArchiveNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsPutGeocodeArchiveRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsListIdentityResolutionShares(Response):
    readers: _ResponseEnhancementsListIdentityResolutionSharesReaders
    writers: _ResponseEnhancementsListIdentityResolutionSharesWriters
    owners: _ResponseEnhancementsListIdentityResolutionSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseEnhancementsListIdentityResolutionSharesReaders(Response):
    users: List[_ResponseEnhancementsListIdentityResolutionSharesReadersUsers]
    groups: List[_ResponseEnhancementsListIdentityResolutionSharesReadersGroups]

class _ResponseEnhancementsListIdentityResolutionSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsListIdentityResolutionSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsListIdentityResolutionSharesWriters(Response):
    users: List[_ResponseEnhancementsListIdentityResolutionSharesWritersUsers]
    groups: List[_ResponseEnhancementsListIdentityResolutionSharesWritersGroups]

class _ResponseEnhancementsListIdentityResolutionSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsListIdentityResolutionSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsListIdentityResolutionSharesOwners(Response):
    users: List[_ResponseEnhancementsListIdentityResolutionSharesOwnersUsers]
    groups: List[_ResponseEnhancementsListIdentityResolutionSharesOwnersGroups]

class _ResponseEnhancementsListIdentityResolutionSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsListIdentityResolutionSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutIdentityResolutionSharesUsers(Response):
    readers: _ResponseEnhancementsPutIdentityResolutionSharesUsersReaders
    writers: _ResponseEnhancementsPutIdentityResolutionSharesUsersWriters
    owners: _ResponseEnhancementsPutIdentityResolutionSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseEnhancementsPutIdentityResolutionSharesUsersReaders(Response):
    users: List[_ResponseEnhancementsPutIdentityResolutionSharesUsersReadersUsers]
    groups: List[_ResponseEnhancementsPutIdentityResolutionSharesUsersReadersGroups]

class _ResponseEnhancementsPutIdentityResolutionSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutIdentityResolutionSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutIdentityResolutionSharesUsersWriters(Response):
    users: List[_ResponseEnhancementsPutIdentityResolutionSharesUsersWritersUsers]
    groups: List[_ResponseEnhancementsPutIdentityResolutionSharesUsersWritersGroups]

class _ResponseEnhancementsPutIdentityResolutionSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutIdentityResolutionSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutIdentityResolutionSharesUsersOwners(Response):
    users: List[_ResponseEnhancementsPutIdentityResolutionSharesUsersOwnersUsers]
    groups: List[_ResponseEnhancementsPutIdentityResolutionSharesUsersOwnersGroups]

class _ResponseEnhancementsPutIdentityResolutionSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutIdentityResolutionSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutIdentityResolutionSharesGroups(Response):
    readers: _ResponseEnhancementsPutIdentityResolutionSharesGroupsReaders
    writers: _ResponseEnhancementsPutIdentityResolutionSharesGroupsWriters
    owners: _ResponseEnhancementsPutIdentityResolutionSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseEnhancementsPutIdentityResolutionSharesGroupsReaders(Response):
    users: List[_ResponseEnhancementsPutIdentityResolutionSharesGroupsReadersUsers]
    groups: List[_ResponseEnhancementsPutIdentityResolutionSharesGroupsReadersGroups]

class _ResponseEnhancementsPutIdentityResolutionSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutIdentityResolutionSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutIdentityResolutionSharesGroupsWriters(Response):
    users: List[_ResponseEnhancementsPutIdentityResolutionSharesGroupsWritersUsers]
    groups: List[_ResponseEnhancementsPutIdentityResolutionSharesGroupsWritersGroups]

class _ResponseEnhancementsPutIdentityResolutionSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutIdentityResolutionSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsPutIdentityResolutionSharesGroupsOwners(Response):
    users: List[_ResponseEnhancementsPutIdentityResolutionSharesGroupsOwnersUsers]
    groups: List[_ResponseEnhancementsPutIdentityResolutionSharesGroupsOwnersGroups]

class _ResponseEnhancementsPutIdentityResolutionSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseEnhancementsPutIdentityResolutionSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseEnhancementsListIdentityResolutionDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseEnhancementsPutIdentityResolutionTransfer(Response):
    dependencies: List[_ResponseEnhancementsPutIdentityResolutionTransferDependencies]

class _ResponseEnhancementsPutIdentityResolutionTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseEnhancementsListIdentityResolutionProjects(Response):
    id: int
    author: _ResponseEnhancementsListIdentityResolutionProjectsAuthor
    name: str
    description: str
    users: List[_ResponseEnhancementsListIdentityResolutionProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseEnhancementsListIdentityResolutionProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsListIdentityResolutionProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPutIdentityResolutionArchive(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseEnhancementsPutIdentityResolutionArchiveAuthor
    state: str
    schedule: _ResponseEnhancementsPutIdentityResolutionArchiveSchedule
    notifications: _ResponseEnhancementsPutIdentityResolutionArchiveNotifications
    running_as: _ResponseEnhancementsPutIdentityResolutionArchiveRunningAs
    my_permission_level: str
    archived: str
    threshold: float
    sources: List[_ResponseEnhancementsPutIdentityResolutionArchiveSources]
    match_target_id: int
    enforced_links: List[_ResponseEnhancementsPutIdentityResolutionArchiveEnforcedLinks]
    customer_graph: _ResponseEnhancementsPutIdentityResolutionArchiveCustomerGraph
    golden_table: _ResponseEnhancementsPutIdentityResolutionArchiveGoldenTable
    link_scores: _ResponseEnhancementsPutIdentityResolutionArchiveLinkScores
    legacy_id: int
    last_run: _ResponseEnhancementsPutIdentityResolutionArchiveLastRun

class _ResponseEnhancementsPutIdentityResolutionArchiveAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPutIdentityResolutionArchiveSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseEnhancementsPutIdentityResolutionArchiveNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseEnhancementsPutIdentityResolutionArchiveRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseEnhancementsPutIdentityResolutionArchiveSources(Response):
    name: str
    description: str
    database_name: str
    schema_name: str
    table_name: str
    field_mapping: dict

class _ResponseEnhancementsPutIdentityResolutionArchiveEnforcedLinks(Response):
    source1: str
    source1_join_col: str
    source2: str
    source2_join_col: str

class _ResponseEnhancementsPutIdentityResolutionArchiveCustomerGraph(Response):
    database_name: str
    schema_name: str
    table_name: str

class _ResponseEnhancementsPutIdentityResolutionArchiveGoldenTable(Response):
    database_name: str
    schema_name: str
    table_name: str
    fields: List[_ResponseEnhancementsPutIdentityResolutionArchiveGoldenTableFields]

class _ResponseEnhancementsPutIdentityResolutionArchiveGoldenTableFields(Response):
    field_name: str
    rule_type: str
    source_preferences: List[
        _ResponseEnhancementsPutIdentityResolutionArchiveGoldenTableFieldsSourcePreferences
    ]

class _ResponseEnhancementsPutIdentityResolutionArchiveGoldenTableFieldsSourcePreferences(  # noqa: E501
    Response
):
    source_name: str
    ranking: int

class _ResponseEnhancementsPutIdentityResolutionArchiveLinkScores(Response):
    database_name: str
    schema_name: str
    table_name: str

class _ResponseEnhancementsPutIdentityResolutionArchiveLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str
    config: str
    sample_records_query: str
    expand_cluster_query: str
    run_metrics: _ResponseEnhancementsPutIdentityResolutionArchiveLastRunRunMetrics
    error_section: str

class _ResponseEnhancementsPutIdentityResolutionArchiveLastRunRunMetrics(Response):
    num_records: int
    unique_ids: int
    unique_deduplicated_ids: int
    max_cluster_size: int
    avg_cluster_size: float
    cluster_size_frequencies: dict

class _ResponseExportsList(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    state: str
    last_run: _ResponseExportsListLastRun
    author: _ResponseExportsListAuthor

class _ResponseExportsListLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseExportsListAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseExportsPostFilesCsvRuns(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str
    output_cached_on: str

class _ResponseExportsListFilesCsvRuns(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseExportsGetFilesCsvRuns(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str
    output_cached_on: str

class _ResponseExportsListFilesCsvRunsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseExportsListFilesCsvRunsOutputs(Response):
    object_type: str
    object_id: int
    name: str
    link: str
    value: object

class _ResponseExportsPostFilesCsv(Response):
    id: int
    name: str
    source: _ResponseExportsPostFilesCsvSource
    destination: _ResponseExportsPostFilesCsvDestination
    include_header: bool
    compression: str
    column_delimiter: str
    hidden: bool
    force_multifile: bool
    max_file_size: int
    my_permission_level: str

class _ResponseExportsPostFilesCsvSource(Response):
    sql: str
    remote_host_id: int
    credential_id: int

class _ResponseExportsPostFilesCsvDestination(Response):
    filename_prefix: str
    storage_path: _ResponseExportsPostFilesCsvDestinationStoragePath

class _ResponseExportsPostFilesCsvDestinationStoragePath(Response):
    file_path: str
    storage_host_id: int
    credential_id: int
    existing_files: str

class _ResponseExportsGetFilesCsv(Response):
    id: int
    name: str
    source: _ResponseExportsGetFilesCsvSource
    destination: _ResponseExportsGetFilesCsvDestination
    include_header: bool
    compression: str
    column_delimiter: str
    hidden: bool
    force_multifile: bool
    max_file_size: int
    my_permission_level: str

class _ResponseExportsGetFilesCsvSource(Response):
    sql: str
    remote_host_id: int
    credential_id: int

class _ResponseExportsGetFilesCsvDestination(Response):
    filename_prefix: str
    storage_path: _ResponseExportsGetFilesCsvDestinationStoragePath

class _ResponseExportsGetFilesCsvDestinationStoragePath(Response):
    file_path: str
    storage_host_id: int
    credential_id: int
    existing_files: str

class _ResponseExportsPutFilesCsv(Response):
    id: int
    name: str
    source: _ResponseExportsPutFilesCsvSource
    destination: _ResponseExportsPutFilesCsvDestination
    include_header: bool
    compression: str
    column_delimiter: str
    hidden: bool
    force_multifile: bool
    max_file_size: int
    my_permission_level: str

class _ResponseExportsPutFilesCsvSource(Response):
    sql: str
    remote_host_id: int
    credential_id: int

class _ResponseExportsPutFilesCsvDestination(Response):
    filename_prefix: str
    storage_path: _ResponseExportsPutFilesCsvDestinationStoragePath

class _ResponseExportsPutFilesCsvDestinationStoragePath(Response):
    file_path: str
    storage_host_id: int
    credential_id: int
    existing_files: str

class _ResponseExportsPatchFilesCsv(Response):
    id: int
    name: str
    source: _ResponseExportsPatchFilesCsvSource
    destination: _ResponseExportsPatchFilesCsvDestination
    include_header: bool
    compression: str
    column_delimiter: str
    hidden: bool
    force_multifile: bool
    max_file_size: int
    my_permission_level: str

class _ResponseExportsPatchFilesCsvSource(Response):
    sql: str
    remote_host_id: int
    credential_id: int

class _ResponseExportsPatchFilesCsvDestination(Response):
    filename_prefix: str
    storage_path: _ResponseExportsPatchFilesCsvDestinationStoragePath

class _ResponseExportsPatchFilesCsvDestinationStoragePath(Response):
    file_path: str
    storage_host_id: int
    credential_id: int
    existing_files: str

class _ResponseExportsPutFilesCsvArchive(Response):
    id: int
    name: str
    source: _ResponseExportsPutFilesCsvArchiveSource
    destination: _ResponseExportsPutFilesCsvArchiveDestination
    include_header: bool
    compression: str
    column_delimiter: str
    hidden: bool
    force_multifile: bool
    max_file_size: int
    my_permission_level: str

class _ResponseExportsPutFilesCsvArchiveSource(Response):
    sql: str
    remote_host_id: int
    credential_id: int

class _ResponseExportsPutFilesCsvArchiveDestination(Response):
    filename_prefix: str
    storage_path: _ResponseExportsPutFilesCsvArchiveDestinationStoragePath

class _ResponseExportsPutFilesCsvArchiveDestinationStoragePath(Response):
    file_path: str
    storage_host_id: int
    credential_id: int
    existing_files: str

class _ResponseFilesListProjects(Response):
    id: int
    author: _ResponseFilesListProjectsAuthor
    name: str
    description: str
    users: List[_ResponseFilesListProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseFilesListProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseFilesListProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseFilesListShares(Response):
    readers: _ResponseFilesListSharesReaders
    writers: _ResponseFilesListSharesWriters
    owners: _ResponseFilesListSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseFilesListSharesReaders(Response):
    users: List[_ResponseFilesListSharesReadersUsers]
    groups: List[_ResponseFilesListSharesReadersGroups]

class _ResponseFilesListSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseFilesListSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseFilesListSharesWriters(Response):
    users: List[_ResponseFilesListSharesWritersUsers]
    groups: List[_ResponseFilesListSharesWritersGroups]

class _ResponseFilesListSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseFilesListSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseFilesListSharesOwners(Response):
    users: List[_ResponseFilesListSharesOwnersUsers]
    groups: List[_ResponseFilesListSharesOwnersGroups]

class _ResponseFilesListSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseFilesListSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseFilesPutSharesUsers(Response):
    readers: _ResponseFilesPutSharesUsersReaders
    writers: _ResponseFilesPutSharesUsersWriters
    owners: _ResponseFilesPutSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseFilesPutSharesUsersReaders(Response):
    users: List[_ResponseFilesPutSharesUsersReadersUsers]
    groups: List[_ResponseFilesPutSharesUsersReadersGroups]

class _ResponseFilesPutSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseFilesPutSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseFilesPutSharesUsersWriters(Response):
    users: List[_ResponseFilesPutSharesUsersWritersUsers]
    groups: List[_ResponseFilesPutSharesUsersWritersGroups]

class _ResponseFilesPutSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseFilesPutSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseFilesPutSharesUsersOwners(Response):
    users: List[_ResponseFilesPutSharesUsersOwnersUsers]
    groups: List[_ResponseFilesPutSharesUsersOwnersGroups]

class _ResponseFilesPutSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseFilesPutSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseFilesPutSharesGroups(Response):
    readers: _ResponseFilesPutSharesGroupsReaders
    writers: _ResponseFilesPutSharesGroupsWriters
    owners: _ResponseFilesPutSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseFilesPutSharesGroupsReaders(Response):
    users: List[_ResponseFilesPutSharesGroupsReadersUsers]
    groups: List[_ResponseFilesPutSharesGroupsReadersGroups]

class _ResponseFilesPutSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseFilesPutSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseFilesPutSharesGroupsWriters(Response):
    users: List[_ResponseFilesPutSharesGroupsWritersUsers]
    groups: List[_ResponseFilesPutSharesGroupsWritersGroups]

class _ResponseFilesPutSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseFilesPutSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseFilesPutSharesGroupsOwners(Response):
    users: List[_ResponseFilesPutSharesGroupsOwnersUsers]
    groups: List[_ResponseFilesPutSharesGroupsOwnersGroups]

class _ResponseFilesPutSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseFilesPutSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseFilesListDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseFilesPutTransfer(Response):
    dependencies: List[_ResponseFilesPutTransferDependencies]

class _ResponseFilesPutTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseFilesPost(Response):
    id: int
    name: str
    created_at: str
    file_size: int
    expires_at: str
    description: str
    upload_url: str
    upload_fields: dict
    my_permission_level: str

class _ResponseFilesPostMultipart(Response):
    id: int
    name: str
    created_at: str
    file_size: int
    expires_at: str
    description: str
    upload_urls: List[str]

class _ResponseFilesGet(Response):
    id: int
    name: str
    created_at: str
    file_size: int
    expires_at: str
    description: str
    author: _ResponseFilesGetAuthor
    download_url: str
    file_url: str
    detected_info: _ResponseFilesGetDetectedInfo
    my_permission_level: str

class _ResponseFilesGetAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseFilesGetDetectedInfo(Response):
    include_header: bool
    column_delimiter: str
    compression: str
    table_columns: List[_ResponseFilesGetDetectedInfoTableColumns]

class _ResponseFilesGetDetectedInfoTableColumns(Response):
    name: str
    sql_type: str

class _ResponseFilesPut(Response):
    id: int
    name: str
    created_at: str
    file_size: int
    expires_at: str
    description: str
    author: _ResponseFilesPutAuthor
    download_url: str
    file_url: str
    detected_info: _ResponseFilesPutDetectedInfo
    my_permission_level: str

class _ResponseFilesPutAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseFilesPutDetectedInfo(Response):
    include_header: bool
    column_delimiter: str
    compression: str
    table_columns: List[_ResponseFilesPutDetectedInfoTableColumns]

class _ResponseFilesPutDetectedInfoTableColumns(Response):
    name: str
    sql_type: str

class _ResponseFilesPatch(Response):
    id: int
    name: str
    created_at: str
    file_size: int
    expires_at: str
    description: str
    author: _ResponseFilesPatchAuthor
    download_url: str
    file_url: str
    detected_info: _ResponseFilesPatchDetectedInfo
    my_permission_level: str

class _ResponseFilesPatchAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseFilesPatchDetectedInfo(Response):
    include_header: bool
    column_delimiter: str
    compression: str
    table_columns: List[_ResponseFilesPatchDetectedInfoTableColumns]

class _ResponseFilesPatchDetectedInfoTableColumns(Response):
    name: str
    sql_type: str

class _ResponseFilesPostPreprocessCsv(Response):
    id: int
    file_id: int
    in_place: bool
    detect_table_columns: bool
    force_character_set_conversion: bool
    include_header: bool
    column_delimiter: str
    hidden: bool

class _ResponseFilesGetPreprocessCsv(Response):
    id: int
    file_id: int
    in_place: bool
    detect_table_columns: bool
    force_character_set_conversion: bool
    include_header: bool
    column_delimiter: str
    hidden: bool

class _ResponseFilesPutPreprocessCsv(Response):
    id: int
    file_id: int
    in_place: bool
    detect_table_columns: bool
    force_character_set_conversion: bool
    include_header: bool
    column_delimiter: str
    hidden: bool

class _ResponseFilesPatchPreprocessCsv(Response):
    id: int
    file_id: int
    in_place: bool
    detect_table_columns: bool
    force_character_set_conversion: bool
    include_header: bool
    column_delimiter: str
    hidden: bool

class _ResponseFilesPutPreprocessCsvArchive(Response):
    id: int
    file_id: int
    in_place: bool
    detect_table_columns: bool
    force_character_set_conversion: bool
    include_header: bool
    column_delimiter: str
    hidden: bool

class _ResponseGitReposList(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseGitReposPost(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseGitReposGet(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseGitReposListRefs(Response):
    branches: List[str]
    tags: List[str]

class _ResponseGroupsList(Response):
    id: int
    name: str
    created_at: str
    updated_at: str
    description: str
    slug: str
    organization_id: int
    organization_name: str
    member_count: int
    total_member_count: int
    last_updated_by_id: int
    created_by_id: int
    members: List[_ResponseGroupsListMembers]

class _ResponseGroupsListMembers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseGroupsPost(Response):
    id: int
    name: str
    created_at: str
    updated_at: str
    description: str
    slug: str
    organization_id: int
    organization_name: str
    member_count: int
    total_member_count: int
    default_otp_required_for_login: bool
    role_ids: List[int]
    default_time_zone: str
    default_jobs_label: str
    default_notebooks_label: str
    default_services_label: str
    last_updated_by_id: int
    created_by_id: int
    members: List[_ResponseGroupsPostMembers]

class _ResponseGroupsPostMembers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool
    email: str
    primary_group_id: int
    active: bool

class _ResponseGroupsGet(Response):
    id: int
    name: str
    created_at: str
    updated_at: str
    description: str
    slug: str
    organization_id: int
    organization_name: str
    member_count: int
    total_member_count: int
    default_otp_required_for_login: bool
    role_ids: List[int]
    default_time_zone: str
    default_jobs_label: str
    default_notebooks_label: str
    default_services_label: str
    last_updated_by_id: int
    created_by_id: int
    members: List[_ResponseGroupsGetMembers]

class _ResponseGroupsGetMembers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool
    email: str
    primary_group_id: int
    active: bool

class _ResponseGroupsPut(Response):
    id: int
    name: str
    created_at: str
    updated_at: str
    description: str
    slug: str
    organization_id: int
    organization_name: str
    member_count: int
    total_member_count: int
    default_otp_required_for_login: bool
    role_ids: List[int]
    default_time_zone: str
    default_jobs_label: str
    default_notebooks_label: str
    default_services_label: str
    last_updated_by_id: int
    created_by_id: int
    members: List[_ResponseGroupsPutMembers]

class _ResponseGroupsPutMembers(Response):
    id: int
    name: str
    created_at: str
    updated_at: str
    description: str
    slug: str
    organization_id: int
    organization_name: str
    member_count: int
    total_member_count: int
    default_otp_required_for_login: bool
    role_ids: List[int]
    default_time_zone: str
    default_jobs_label: str
    default_notebooks_label: str
    default_services_label: str
    last_updated_by_id: int
    created_by_id: int
    members: List[_ResponseGroupsPutMembersMembers]

class _ResponseGroupsPatch(Response):
    id: int
    name: str
    created_at: str
    updated_at: str
    description: str
    slug: str
    organization_id: int
    organization_name: str
    member_count: int
    total_member_count: int
    default_otp_required_for_login: bool
    role_ids: List[int]
    default_time_zone: str
    default_jobs_label: str
    default_notebooks_label: str
    default_services_label: str
    last_updated_by_id: int
    created_by_id: int
    members: List[_ResponseGroupsPatchMembers]

class _ResponseGroupsPatchMembers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool
    email: str
    primary_group_id: int
    active: bool

class _ResponseGroupsListShares(Response):
    readers: _ResponseGroupsListSharesReaders
    writers: _ResponseGroupsListSharesWriters
    owners: _ResponseGroupsListSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseGroupsListSharesReaders(Response):
    users: List[_ResponseGroupsListSharesReadersUsers]
    groups: List[_ResponseGroupsListSharesReadersGroups]

class _ResponseGroupsListSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseGroupsListSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseGroupsListSharesWriters(Response):
    users: List[_ResponseGroupsListSharesWritersUsers]
    groups: List[_ResponseGroupsListSharesWritersGroups]

class _ResponseGroupsListSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseGroupsListSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseGroupsListSharesOwners(Response):
    users: List[_ResponseGroupsListSharesOwnersUsers]
    groups: List[_ResponseGroupsListSharesOwnersGroups]

class _ResponseGroupsListSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseGroupsListSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseGroupsPutSharesUsers(Response):
    readers: _ResponseGroupsPutSharesUsersReaders
    writers: _ResponseGroupsPutSharesUsersWriters
    owners: _ResponseGroupsPutSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseGroupsPutSharesUsersReaders(Response):
    users: List[_ResponseGroupsPutSharesUsersReadersUsers]
    groups: List[_ResponseGroupsPutSharesUsersReadersGroups]

class _ResponseGroupsPutSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseGroupsPutSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseGroupsPutSharesUsersWriters(Response):
    users: List[_ResponseGroupsPutSharesUsersWritersUsers]
    groups: List[_ResponseGroupsPutSharesUsersWritersGroups]

class _ResponseGroupsPutSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseGroupsPutSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseGroupsPutSharesUsersOwners(Response):
    users: List[_ResponseGroupsPutSharesUsersOwnersUsers]
    groups: List[_ResponseGroupsPutSharesUsersOwnersGroups]

class _ResponseGroupsPutSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseGroupsPutSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseGroupsPutSharesGroups(Response):
    readers: _ResponseGroupsPutSharesGroupsReaders
    writers: _ResponseGroupsPutSharesGroupsWriters
    owners: _ResponseGroupsPutSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseGroupsPutSharesGroupsReaders(Response):
    users: List[_ResponseGroupsPutSharesGroupsReadersUsers]
    groups: List[_ResponseGroupsPutSharesGroupsReadersGroups]

class _ResponseGroupsPutSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseGroupsPutSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseGroupsPutSharesGroupsWriters(Response):
    users: List[_ResponseGroupsPutSharesGroupsWritersUsers]
    groups: List[_ResponseGroupsPutSharesGroupsWritersGroups]

class _ResponseGroupsPutSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseGroupsPutSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseGroupsPutSharesGroupsOwners(Response):
    users: List[_ResponseGroupsPutSharesGroupsOwnersUsers]
    groups: List[_ResponseGroupsPutSharesGroupsOwnersGroups]

class _ResponseGroupsPutSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseGroupsPutSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseGroupsPutMembersMembers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool
    email: str
    primary_group_id: int
    active: bool

class _ResponseGroupsListChildGroups(Response):
    manageable: List[_ResponseGroupsListChildGroupsManageable]
    writeable: List[_ResponseGroupsListChildGroupsWriteable]
    readable: List[_ResponseGroupsListChildGroupsReadable]

class _ResponseGroupsListChildGroupsManageable(Response):
    id: int
    name: str

class _ResponseGroupsListChildGroupsWriteable(Response):
    id: int
    name: str

class _ResponseGroupsListChildGroupsReadable(Response):
    id: int
    name: str

class _ResponseImportsListShares(Response):
    readers: _ResponseImportsListSharesReaders
    writers: _ResponseImportsListSharesWriters
    owners: _ResponseImportsListSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseImportsListSharesReaders(Response):
    users: List[_ResponseImportsListSharesReadersUsers]
    groups: List[_ResponseImportsListSharesReadersGroups]

class _ResponseImportsListSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseImportsListSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseImportsListSharesWriters(Response):
    users: List[_ResponseImportsListSharesWritersUsers]
    groups: List[_ResponseImportsListSharesWritersGroups]

class _ResponseImportsListSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseImportsListSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseImportsListSharesOwners(Response):
    users: List[_ResponseImportsListSharesOwnersUsers]
    groups: List[_ResponseImportsListSharesOwnersGroups]

class _ResponseImportsListSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseImportsListSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseImportsPutSharesUsers(Response):
    readers: _ResponseImportsPutSharesUsersReaders
    writers: _ResponseImportsPutSharesUsersWriters
    owners: _ResponseImportsPutSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseImportsPutSharesUsersReaders(Response):
    users: List[_ResponseImportsPutSharesUsersReadersUsers]
    groups: List[_ResponseImportsPutSharesUsersReadersGroups]

class _ResponseImportsPutSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseImportsPutSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseImportsPutSharesUsersWriters(Response):
    users: List[_ResponseImportsPutSharesUsersWritersUsers]
    groups: List[_ResponseImportsPutSharesUsersWritersGroups]

class _ResponseImportsPutSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseImportsPutSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseImportsPutSharesUsersOwners(Response):
    users: List[_ResponseImportsPutSharesUsersOwnersUsers]
    groups: List[_ResponseImportsPutSharesUsersOwnersGroups]

class _ResponseImportsPutSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseImportsPutSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseImportsPutSharesGroups(Response):
    readers: _ResponseImportsPutSharesGroupsReaders
    writers: _ResponseImportsPutSharesGroupsWriters
    owners: _ResponseImportsPutSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseImportsPutSharesGroupsReaders(Response):
    users: List[_ResponseImportsPutSharesGroupsReadersUsers]
    groups: List[_ResponseImportsPutSharesGroupsReadersGroups]

class _ResponseImportsPutSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseImportsPutSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseImportsPutSharesGroupsWriters(Response):
    users: List[_ResponseImportsPutSharesGroupsWritersUsers]
    groups: List[_ResponseImportsPutSharesGroupsWritersGroups]

class _ResponseImportsPutSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseImportsPutSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseImportsPutSharesGroupsOwners(Response):
    users: List[_ResponseImportsPutSharesGroupsOwnersUsers]
    groups: List[_ResponseImportsPutSharesGroupsOwnersGroups]

class _ResponseImportsPutSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseImportsPutSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseImportsListDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseImportsPutTransfer(Response):
    dependencies: List[_ResponseImportsPutTransferDependencies]

class _ResponseImportsPutTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseImportsListProjects(Response):
    id: int
    author: _ResponseImportsListProjectsAuthor
    name: str
    description: str
    users: List[_ResponseImportsListProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseImportsListProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseImportsListProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseImportsPutArchive(Response):
    name: str
    sync_type: str
    source: _ResponseImportsPutArchiveSource
    destination: _ResponseImportsPutArchiveDestination
    schedule: _ResponseImportsPutArchiveSchedule
    notifications: _ResponseImportsPutArchiveNotifications
    parent_id: int
    id: int
    is_outbound: bool
    job_type: str
    syncs: List[_ResponseImportsPutArchiveSyncs]
    state: str
    created_at: str
    updated_at: str
    last_run: _ResponseImportsPutArchiveLastRun
    user: _ResponseImportsPutArchiveUser
    running_as: _ResponseImportsPutArchiveRunningAs
    next_run_at: str
    time_zone: str
    hidden: bool
    archived: str
    my_permission_level: str

class _ResponseImportsPutArchiveSource(Response):
    remote_host_id: int
    credential_id: int
    additional_credentials: List[int]
    name: str

class _ResponseImportsPutArchiveDestination(Response):
    remote_host_id: int
    credential_id: int
    additional_credentials: List[int]
    name: str

class _ResponseImportsPutArchiveSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseImportsPutArchiveNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseImportsPutArchiveSyncs(Response):
    id: int
    source: _ResponseImportsPutArchiveSyncsSource
    destination: _ResponseImportsPutArchiveSyncsDestination
    advanced_options: _ResponseImportsPutArchiveSyncsAdvancedOptions

class _ResponseImportsPutArchiveSyncsSource(Response):
    id: int
    path: str
    database_table: _ResponseImportsPutArchiveSyncsSourceDatabaseTable
    file: _ResponseImportsPutArchiveSyncsSourceFile
    google_worksheet: _ResponseImportsPutArchiveSyncsSourceGoogleWorksheet
    salesforce: _ResponseImportsPutArchiveSyncsSourceSalesforce

class _ResponseImportsPutArchiveSyncsSourceDatabaseTable(Response):
    schema: str
    table: str
    use_without_schema: bool

class _ResponseImportsPutArchiveSyncsSourceFile(Response):
    id: int

class _ResponseImportsPutArchiveSyncsSourceGoogleWorksheet(Response):
    spreadsheet: str
    spreadsheet_id: str
    worksheet: str
    worksheet_id: int

class _ResponseImportsPutArchiveSyncsSourceSalesforce(Response):
    object_name: str

class _ResponseImportsPutArchiveSyncsDestination(Response):
    path: str
    database_table: _ResponseImportsPutArchiveSyncsDestinationDatabaseTable
    google_worksheet: _ResponseImportsPutArchiveSyncsDestinationGoogleWorksheet

class _ResponseImportsPutArchiveSyncsDestinationDatabaseTable(Response):
    schema: str
    table: str
    use_without_schema: bool

class _ResponseImportsPutArchiveSyncsDestinationGoogleWorksheet(Response):
    spreadsheet: str
    spreadsheet_id: str
    worksheet: str
    worksheet_id: int

class _ResponseImportsPutArchiveSyncsAdvancedOptions(Response):
    max_errors: int
    existing_table_rows: str
    first_row_is_header: bool
    diststyle: str
    distkey: str
    sortkey1: str
    sortkey2: str
    column_delimiter: str
    column_overrides: dict
    escaped: bool
    identity_column: str
    last_modified_column: str
    row_chunk_size: int
    wipe_destination_table: bool
    truncate_long_lines: bool
    invalid_char_replacement: str
    verify_table_row_counts: bool
    partition_column_name: str
    partition_schema_name: str
    partition_table_name: str
    partition_table_partition_column_min_name: str
    partition_table_partition_column_max_name: str
    mysql_catalog_matches_schema: bool
    chunking_method: str
    export_action: str
    sql_query: str
    contact_lists: str
    soql_query: str
    include_deleted_records: bool

class _ResponseImportsPutArchiveLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseImportsPutArchiveUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseImportsPutArchiveRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseImportsList(Response):
    name: str
    sync_type: str
    source: _ResponseImportsListSource
    destination: _ResponseImportsListDestination
    schedule: _ResponseImportsListSchedule
    id: int
    is_outbound: bool
    job_type: str
    state: str
    created_at: str
    updated_at: str
    last_run: _ResponseImportsListLastRun
    user: _ResponseImportsListUser
    time_zone: str
    archived: str

class _ResponseImportsListSource(Response):
    remote_host_id: int
    credential_id: int
    additional_credentials: List[int]
    name: str

class _ResponseImportsListDestination(Response):
    remote_host_id: int
    credential_id: int
    additional_credentials: List[int]
    name: str

class _ResponseImportsListSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseImportsListLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseImportsListUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseImportsPost(Response):
    name: str
    sync_type: str
    source: _ResponseImportsPostSource
    destination: _ResponseImportsPostDestination
    schedule: _ResponseImportsPostSchedule
    notifications: _ResponseImportsPostNotifications
    parent_id: int
    id: int
    is_outbound: bool
    job_type: str
    syncs: List[_ResponseImportsPostSyncs]
    state: str
    created_at: str
    updated_at: str
    last_run: _ResponseImportsPostLastRun
    user: _ResponseImportsPostUser
    running_as: _ResponseImportsPostRunningAs
    next_run_at: str
    time_zone: str
    hidden: bool
    archived: str
    my_permission_level: str

class _ResponseImportsPostSource(Response):
    remote_host_id: int
    credential_id: int
    additional_credentials: List[int]
    name: str

class _ResponseImportsPostDestination(Response):
    remote_host_id: int
    credential_id: int
    additional_credentials: List[int]
    name: str

class _ResponseImportsPostSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseImportsPostNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseImportsPostSyncs(Response):
    id: int
    source: _ResponseImportsPostSyncsSource
    destination: _ResponseImportsPostSyncsDestination
    advanced_options: _ResponseImportsPostSyncsAdvancedOptions

class _ResponseImportsPostSyncsSource(Response):
    id: int
    path: str
    database_table: _ResponseImportsPostSyncsSourceDatabaseTable
    file: _ResponseImportsPostSyncsSourceFile
    google_worksheet: _ResponseImportsPostSyncsSourceGoogleWorksheet
    salesforce: _ResponseImportsPostSyncsSourceSalesforce

class _ResponseImportsPostSyncsSourceDatabaseTable(Response):
    schema: str
    table: str
    use_without_schema: bool

class _ResponseImportsPostSyncsSourceFile(Response):
    id: int

class _ResponseImportsPostSyncsSourceGoogleWorksheet(Response):
    spreadsheet: str
    spreadsheet_id: str
    worksheet: str
    worksheet_id: int

class _ResponseImportsPostSyncsSourceSalesforce(Response):
    object_name: str

class _ResponseImportsPostSyncsDestination(Response):
    path: str
    database_table: _ResponseImportsPostSyncsDestinationDatabaseTable
    google_worksheet: _ResponseImportsPostSyncsDestinationGoogleWorksheet

class _ResponseImportsPostSyncsDestinationDatabaseTable(Response):
    schema: str
    table: str
    use_without_schema: bool

class _ResponseImportsPostSyncsDestinationGoogleWorksheet(Response):
    spreadsheet: str
    spreadsheet_id: str
    worksheet: str
    worksheet_id: int

class _ResponseImportsPostSyncsAdvancedOptions(Response):
    max_errors: int
    existing_table_rows: str
    first_row_is_header: bool
    diststyle: str
    distkey: str
    sortkey1: str
    sortkey2: str
    column_delimiter: str
    column_overrides: dict
    escaped: bool
    identity_column: str
    last_modified_column: str
    row_chunk_size: int
    wipe_destination_table: bool
    truncate_long_lines: bool
    invalid_char_replacement: str
    verify_table_row_counts: bool
    partition_column_name: str
    partition_schema_name: str
    partition_table_name: str
    partition_table_partition_column_min_name: str
    partition_table_partition_column_max_name: str
    mysql_catalog_matches_schema: bool
    chunking_method: str
    export_action: str
    sql_query: str
    contact_lists: str
    soql_query: str
    include_deleted_records: bool

class _ResponseImportsPostLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseImportsPostUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseImportsPostRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseImportsPostFiles(Response):
    id: int
    upload_uri: str
    run_uri: str
    upload_fields: dict

class _ResponseImportsPostFilesRuns(Response):
    id: int
    import_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseImportsListFilesRuns(Response):
    id: int
    import_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseImportsGetFilesRuns(Response):
    id: int
    import_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseImportsListFilesRunsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseImportsListRunsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseImportsPostFilesCsv(Response):
    id: int
    name: str
    source: _ResponseImportsPostFilesCsvSource
    destination: _ResponseImportsPostFilesCsvDestination
    first_row_is_header: bool
    column_delimiter: str
    escaped: bool
    compression: str
    existing_table_rows: str
    max_errors: int
    table_columns: List[_ResponseImportsPostFilesCsvTableColumns]
    loosen_types: bool
    execution: str
    redshift_destination_options: _ResponseImportsPostFilesCsvRedshiftDestinationOptions
    hidden: bool
    my_permission_level: str

class _ResponseImportsPostFilesCsvSource(Response):
    file_ids: List[int]
    storage_path: _ResponseImportsPostFilesCsvSourceStoragePath

class _ResponseImportsPostFilesCsvSourceStoragePath(Response):
    storage_host_id: int
    credential_id: int
    file_paths: List[str]

class _ResponseImportsPostFilesCsvDestination(Response):
    schema: str
    table: str
    remote_host_id: int
    credential_id: int
    primary_keys: List[str]
    last_modified_keys: List[str]

class _ResponseImportsPostFilesCsvTableColumns(Response):
    name: str
    sql_type: str

class _ResponseImportsPostFilesCsvRedshiftDestinationOptions(Response):
    diststyle: str
    distkey: str
    sortkeys: List[str]

class _ResponseImportsGetFilesCsv(Response):
    id: int
    name: str
    source: _ResponseImportsGetFilesCsvSource
    destination: _ResponseImportsGetFilesCsvDestination
    first_row_is_header: bool
    column_delimiter: str
    escaped: bool
    compression: str
    existing_table_rows: str
    max_errors: int
    table_columns: List[_ResponseImportsGetFilesCsvTableColumns]
    loosen_types: bool
    execution: str
    redshift_destination_options: _ResponseImportsGetFilesCsvRedshiftDestinationOptions
    hidden: bool
    my_permission_level: str

class _ResponseImportsGetFilesCsvSource(Response):
    file_ids: List[int]
    storage_path: _ResponseImportsGetFilesCsvSourceStoragePath

class _ResponseImportsGetFilesCsvSourceStoragePath(Response):
    storage_host_id: int
    credential_id: int
    file_paths: List[str]

class _ResponseImportsGetFilesCsvDestination(Response):
    schema: str
    table: str
    remote_host_id: int
    credential_id: int
    primary_keys: List[str]
    last_modified_keys: List[str]

class _ResponseImportsGetFilesCsvTableColumns(Response):
    name: str
    sql_type: str

class _ResponseImportsGetFilesCsvRedshiftDestinationOptions(Response):
    diststyle: str
    distkey: str
    sortkeys: List[str]

class _ResponseImportsPutFilesCsv(Response):
    id: int
    name: str
    source: _ResponseImportsPutFilesCsvSource
    destination: _ResponseImportsPutFilesCsvDestination
    first_row_is_header: bool
    column_delimiter: str
    escaped: bool
    compression: str
    existing_table_rows: str
    max_errors: int
    table_columns: List[_ResponseImportsPutFilesCsvTableColumns]
    loosen_types: bool
    execution: str
    redshift_destination_options: _ResponseImportsPutFilesCsvRedshiftDestinationOptions
    hidden: bool
    my_permission_level: str

class _ResponseImportsPutFilesCsvSource(Response):
    file_ids: List[int]
    storage_path: _ResponseImportsPutFilesCsvSourceStoragePath

class _ResponseImportsPutFilesCsvSourceStoragePath(Response):
    storage_host_id: int
    credential_id: int
    file_paths: List[str]

class _ResponseImportsPutFilesCsvDestination(Response):
    schema: str
    table: str
    remote_host_id: int
    credential_id: int
    primary_keys: List[str]
    last_modified_keys: List[str]

class _ResponseImportsPutFilesCsvTableColumns(Response):
    name: str
    sql_type: str

class _ResponseImportsPutFilesCsvRedshiftDestinationOptions(Response):
    diststyle: str
    distkey: str
    sortkeys: List[str]

class _ResponseImportsPatchFilesCsv(Response):
    id: int
    name: str
    source: _ResponseImportsPatchFilesCsvSource
    destination: _ResponseImportsPatchFilesCsvDestination
    first_row_is_header: bool
    column_delimiter: str
    escaped: bool
    compression: str
    existing_table_rows: str
    max_errors: int
    table_columns: List[_ResponseImportsPatchFilesCsvTableColumns]
    loosen_types: bool
    execution: str
    redshift_destination_options: (
        _ResponseImportsPatchFilesCsvRedshiftDestinationOptions
    )
    hidden: bool
    my_permission_level: str

class _ResponseImportsPatchFilesCsvSource(Response):
    file_ids: List[int]
    storage_path: _ResponseImportsPatchFilesCsvSourceStoragePath

class _ResponseImportsPatchFilesCsvSourceStoragePath(Response):
    storage_host_id: int
    credential_id: int
    file_paths: List[str]

class _ResponseImportsPatchFilesCsvDestination(Response):
    schema: str
    table: str
    remote_host_id: int
    credential_id: int
    primary_keys: List[str]
    last_modified_keys: List[str]

class _ResponseImportsPatchFilesCsvTableColumns(Response):
    name: str
    sql_type: str

class _ResponseImportsPatchFilesCsvRedshiftDestinationOptions(Response):
    diststyle: str
    distkey: str
    sortkeys: List[str]

class _ResponseImportsPutFilesCsvArchive(Response):
    id: int
    name: str
    source: _ResponseImportsPutFilesCsvArchiveSource
    destination: _ResponseImportsPutFilesCsvArchiveDestination
    first_row_is_header: bool
    column_delimiter: str
    escaped: bool
    compression: str
    existing_table_rows: str
    max_errors: int
    table_columns: List[_ResponseImportsPutFilesCsvArchiveTableColumns]
    loosen_types: bool
    execution: str
    redshift_destination_options: (
        _ResponseImportsPutFilesCsvArchiveRedshiftDestinationOptions
    )
    hidden: bool
    my_permission_level: str

class _ResponseImportsPutFilesCsvArchiveSource(Response):
    file_ids: List[int]
    storage_path: _ResponseImportsPutFilesCsvArchiveSourceStoragePath

class _ResponseImportsPutFilesCsvArchiveSourceStoragePath(Response):
    storage_host_id: int
    credential_id: int
    file_paths: List[str]

class _ResponseImportsPutFilesCsvArchiveDestination(Response):
    schema: str
    table: str
    remote_host_id: int
    credential_id: int
    primary_keys: List[str]
    last_modified_keys: List[str]

class _ResponseImportsPutFilesCsvArchiveTableColumns(Response):
    name: str
    sql_type: str

class _ResponseImportsPutFilesCsvArchiveRedshiftDestinationOptions(Response):
    diststyle: str
    distkey: str
    sortkeys: List[str]

class _ResponseImportsPostFilesCsvRuns(Response):
    id: int
    csv_import_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseImportsListFilesCsvRuns(Response):
    id: int
    csv_import_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseImportsGetFilesCsvRuns(Response):
    id: int
    csv_import_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseImportsListFilesCsvRunsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseImportsListBatches(Response):
    id: int
    schema: str
    table: str
    remote_host_id: int
    state: str
    started_at: str
    finished_at: str
    error: str

class _ResponseImportsPostBatches(Response):
    id: int
    schema: str
    table: str
    remote_host_id: int
    state: str
    started_at: str
    finished_at: str
    error: str
    hidden: bool

class _ResponseImportsGetBatches(Response):
    id: int
    schema: str
    table: str
    remote_host_id: int
    state: str
    started_at: str
    finished_at: str
    error: str
    hidden: bool

class _ResponseImportsGet(Response):
    name: str
    sync_type: str
    source: _ResponseImportsGetSource
    destination: _ResponseImportsGetDestination
    schedule: _ResponseImportsGetSchedule
    notifications: _ResponseImportsGetNotifications
    parent_id: int
    id: int
    is_outbound: bool
    job_type: str
    syncs: List[_ResponseImportsGetSyncs]
    state: str
    created_at: str
    updated_at: str
    last_run: _ResponseImportsGetLastRun
    user: _ResponseImportsGetUser
    running_as: _ResponseImportsGetRunningAs
    next_run_at: str
    time_zone: str
    hidden: bool
    archived: str
    my_permission_level: str

class _ResponseImportsGetSource(Response):
    remote_host_id: int
    credential_id: int
    additional_credentials: List[int]
    name: str

class _ResponseImportsGetDestination(Response):
    remote_host_id: int
    credential_id: int
    additional_credentials: List[int]
    name: str

class _ResponseImportsGetSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseImportsGetNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseImportsGetSyncs(Response):
    id: int
    source: _ResponseImportsGetSyncsSource
    destination: _ResponseImportsGetSyncsDestination
    advanced_options: _ResponseImportsGetSyncsAdvancedOptions

class _ResponseImportsGetSyncsSource(Response):
    id: int
    path: str
    database_table: _ResponseImportsGetSyncsSourceDatabaseTable
    file: _ResponseImportsGetSyncsSourceFile
    google_worksheet: _ResponseImportsGetSyncsSourceGoogleWorksheet
    salesforce: _ResponseImportsGetSyncsSourceSalesforce

class _ResponseImportsGetSyncsSourceDatabaseTable(Response):
    schema: str
    table: str
    use_without_schema: bool

class _ResponseImportsGetSyncsSourceFile(Response):
    id: int

class _ResponseImportsGetSyncsSourceGoogleWorksheet(Response):
    spreadsheet: str
    spreadsheet_id: str
    worksheet: str
    worksheet_id: int

class _ResponseImportsGetSyncsSourceSalesforce(Response):
    object_name: str

class _ResponseImportsGetSyncsDestination(Response):
    path: str
    database_table: _ResponseImportsGetSyncsDestinationDatabaseTable
    google_worksheet: _ResponseImportsGetSyncsDestinationGoogleWorksheet

class _ResponseImportsGetSyncsDestinationDatabaseTable(Response):
    schema: str
    table: str
    use_without_schema: bool

class _ResponseImportsGetSyncsDestinationGoogleWorksheet(Response):
    spreadsheet: str
    spreadsheet_id: str
    worksheet: str
    worksheet_id: int

class _ResponseImportsGetSyncsAdvancedOptions(Response):
    max_errors: int
    existing_table_rows: str
    first_row_is_header: bool
    diststyle: str
    distkey: str
    sortkey1: str
    sortkey2: str
    column_delimiter: str
    column_overrides: dict
    escaped: bool
    identity_column: str
    last_modified_column: str
    row_chunk_size: int
    wipe_destination_table: bool
    truncate_long_lines: bool
    invalid_char_replacement: str
    verify_table_row_counts: bool
    partition_column_name: str
    partition_schema_name: str
    partition_table_name: str
    partition_table_partition_column_min_name: str
    partition_table_partition_column_max_name: str
    mysql_catalog_matches_schema: bool
    chunking_method: str
    export_action: str
    sql_query: str
    contact_lists: str
    soql_query: str
    include_deleted_records: bool

class _ResponseImportsGetLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseImportsGetUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseImportsGetRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseImportsPut(Response):
    name: str
    sync_type: str
    source: _ResponseImportsPutSource
    destination: _ResponseImportsPutDestination
    schedule: _ResponseImportsPutSchedule
    notifications: _ResponseImportsPutNotifications
    parent_id: int
    id: int
    is_outbound: bool
    job_type: str
    syncs: List[_ResponseImportsPutSyncs]
    state: str
    created_at: str
    updated_at: str
    last_run: _ResponseImportsPutLastRun
    user: _ResponseImportsPutUser
    running_as: _ResponseImportsPutRunningAs
    next_run_at: str
    time_zone: str
    hidden: bool
    archived: str
    my_permission_level: str

class _ResponseImportsPutSource(Response):
    remote_host_id: int
    credential_id: int
    additional_credentials: List[int]
    name: str

class _ResponseImportsPutDestination(Response):
    remote_host_id: int
    credential_id: int
    additional_credentials: List[int]
    name: str

class _ResponseImportsPutSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseImportsPutNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseImportsPutSyncs(Response):
    id: int
    source: _ResponseImportsPutSyncsSource
    destination: _ResponseImportsPutSyncsDestination
    advanced_options: _ResponseImportsPutSyncsAdvancedOptions

class _ResponseImportsPutSyncsSource(Response):
    id: int
    path: str
    database_table: _ResponseImportsPutSyncsSourceDatabaseTable
    file: _ResponseImportsPutSyncsSourceFile
    google_worksheet: _ResponseImportsPutSyncsSourceGoogleWorksheet
    salesforce: _ResponseImportsPutSyncsSourceSalesforce

class _ResponseImportsPutSyncsSourceDatabaseTable(Response):
    schema: str
    table: str
    use_without_schema: bool

class _ResponseImportsPutSyncsSourceFile(Response):
    id: int

class _ResponseImportsPutSyncsSourceGoogleWorksheet(Response):
    spreadsheet: str
    spreadsheet_id: str
    worksheet: str
    worksheet_id: int

class _ResponseImportsPutSyncsSourceSalesforce(Response):
    object_name: str

class _ResponseImportsPutSyncsDestination(Response):
    path: str
    database_table: _ResponseImportsPutSyncsDestinationDatabaseTable
    google_worksheet: _ResponseImportsPutSyncsDestinationGoogleWorksheet

class _ResponseImportsPutSyncsDestinationDatabaseTable(Response):
    schema: str
    table: str
    use_without_schema: bool

class _ResponseImportsPutSyncsDestinationGoogleWorksheet(Response):
    spreadsheet: str
    spreadsheet_id: str
    worksheet: str
    worksheet_id: int

class _ResponseImportsPutSyncsAdvancedOptions(Response):
    max_errors: int
    existing_table_rows: str
    first_row_is_header: bool
    diststyle: str
    distkey: str
    sortkey1: str
    sortkey2: str
    column_delimiter: str
    column_overrides: dict
    escaped: bool
    identity_column: str
    last_modified_column: str
    row_chunk_size: int
    wipe_destination_table: bool
    truncate_long_lines: bool
    invalid_char_replacement: str
    verify_table_row_counts: bool
    partition_column_name: str
    partition_schema_name: str
    partition_table_name: str
    partition_table_partition_column_min_name: str
    partition_table_partition_column_max_name: str
    mysql_catalog_matches_schema: bool
    chunking_method: str
    export_action: str
    sql_query: str
    contact_lists: str
    soql_query: str
    include_deleted_records: bool

class _ResponseImportsPutLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseImportsPutUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseImportsPutRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseImportsListRuns(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseImportsPostRuns(Response):
    run_id: int

class _ResponseImportsPostCancel(Response):
    id: int
    state: str
    is_cancel_requested: bool

class _ResponseImportsPutSyncsArchive(Response):
    id: int
    source: _ResponseImportsPutSyncsArchiveSource
    destination: _ResponseImportsPutSyncsArchiveDestination
    advanced_options: _ResponseImportsPutSyncsArchiveAdvancedOptions

class _ResponseImportsPutSyncsArchiveSource(Response):
    id: int
    path: str
    database_table: _ResponseImportsPutSyncsArchiveSourceDatabaseTable
    file: _ResponseImportsPutSyncsArchiveSourceFile
    google_worksheet: _ResponseImportsPutSyncsArchiveSourceGoogleWorksheet
    salesforce: _ResponseImportsPutSyncsArchiveSourceSalesforce

class _ResponseImportsPutSyncsArchiveSourceDatabaseTable(Response):
    schema: str
    table: str
    use_without_schema: bool

class _ResponseImportsPutSyncsArchiveSourceFile(Response):
    id: int

class _ResponseImportsPutSyncsArchiveSourceGoogleWorksheet(Response):
    spreadsheet: str
    spreadsheet_id: str
    worksheet: str
    worksheet_id: int

class _ResponseImportsPutSyncsArchiveSourceSalesforce(Response):
    object_name: str

class _ResponseImportsPutSyncsArchiveDestination(Response):
    path: str
    database_table: _ResponseImportsPutSyncsArchiveDestinationDatabaseTable
    google_worksheet: _ResponseImportsPutSyncsArchiveDestinationGoogleWorksheet

class _ResponseImportsPutSyncsArchiveDestinationDatabaseTable(Response):
    schema: str
    table: str
    use_without_schema: bool

class _ResponseImportsPutSyncsArchiveDestinationGoogleWorksheet(Response):
    spreadsheet: str
    spreadsheet_id: str
    worksheet: str
    worksheet_id: int

class _ResponseImportsPutSyncsArchiveAdvancedOptions(Response):
    max_errors: int
    existing_table_rows: str
    first_row_is_header: bool
    diststyle: str
    distkey: str
    sortkey1: str
    sortkey2: str
    column_delimiter: str
    column_overrides: dict
    escaped: bool
    identity_column: str
    last_modified_column: str
    row_chunk_size: int
    wipe_destination_table: bool
    truncate_long_lines: bool
    invalid_char_replacement: str
    verify_table_row_counts: bool
    partition_column_name: str
    partition_schema_name: str
    partition_table_name: str
    partition_table_partition_column_min_name: str
    partition_table_partition_column_max_name: str
    mysql_catalog_matches_schema: bool
    chunking_method: str
    export_action: str
    sql_query: str
    contact_lists: str
    soql_query: str
    include_deleted_records: bool

class _ResponseJobsList(Response):
    id: int
    name: str
    type: str
    from_template_id: int
    state: str
    created_at: str
    updated_at: str
    last_run: _ResponseJobsListLastRun
    archived: str
    author: _ResponseJobsListAuthor
    schedule: _ResponseJobsListSchedule

class _ResponseJobsListLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseJobsListAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseJobsListSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseJobsGet(Response):
    id: int
    name: str
    type: str
    from_template_id: int
    state: str
    created_at: str
    updated_at: str
    runs: List[_ResponseJobsGetRuns]
    last_run: _ResponseJobsGetLastRun
    hidden: bool
    archived: str
    author: _ResponseJobsGetAuthor
    my_permission_level: str
    success_email_subject: str
    success_email_body: str
    running_as_user: str
    run_by_user: str
    schedule: _ResponseJobsGetSchedule

class _ResponseJobsGetRuns(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseJobsGetLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseJobsGetAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseJobsGetSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseJobsPostTriggerEmail(Response):
    trigger_email: str

class _ResponseJobsListParents(Response):
    id: int
    name: str
    type: str
    from_template_id: int
    state: str
    created_at: str
    updated_at: str
    runs: List[_ResponseJobsListParentsRuns]
    last_run: _ResponseJobsListParentsLastRun
    hidden: bool
    archived: str
    author: _ResponseJobsListParentsAuthor
    my_permission_level: str
    success_email_subject: str
    success_email_body: str
    running_as_user: str
    run_by_user: str
    schedule: _ResponseJobsListParentsSchedule

class _ResponseJobsListParentsRuns(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseJobsListParentsLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseJobsListParentsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseJobsListParentsSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseJobsListChildren(Response):
    id: int
    name: str
    type: str
    from_template_id: int
    state: str
    created_at: str
    updated_at: str
    runs: List[_ResponseJobsListChildrenRuns]
    last_run: _ResponseJobsListChildrenLastRun
    children: List

class _ResponseJobsListChildrenRuns(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseJobsListChildrenLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseJobsListRuns(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseJobsPostRuns(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseJobsListRunsOutputs(Response):
    object_type: str
    object_id: int
    name: str
    link: str
    value: object

class _ResponseJobsListRunsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseJobsListWorkflows(Response):
    id: int
    name: str
    description: str
    valid: bool
    file_id: str
    user: _ResponseJobsListWorkflowsUser
    state: str
    schedule: _ResponseJobsListWorkflowsSchedule
    allow_concurrent_executions: bool
    time_zone: str
    next_execution_at: str
    archived: str
    created_at: str
    updated_at: str

class _ResponseJobsListWorkflowsUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseJobsListWorkflowsSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseJobsListShares(Response):
    readers: _ResponseJobsListSharesReaders
    writers: _ResponseJobsListSharesWriters
    owners: _ResponseJobsListSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseJobsListSharesReaders(Response):
    users: List[_ResponseJobsListSharesReadersUsers]
    groups: List[_ResponseJobsListSharesReadersGroups]

class _ResponseJobsListSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseJobsListSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseJobsListSharesWriters(Response):
    users: List[_ResponseJobsListSharesWritersUsers]
    groups: List[_ResponseJobsListSharesWritersGroups]

class _ResponseJobsListSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseJobsListSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseJobsListSharesOwners(Response):
    users: List[_ResponseJobsListSharesOwnersUsers]
    groups: List[_ResponseJobsListSharesOwnersGroups]

class _ResponseJobsListSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseJobsListSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseJobsPutSharesUsers(Response):
    readers: _ResponseJobsPutSharesUsersReaders
    writers: _ResponseJobsPutSharesUsersWriters
    owners: _ResponseJobsPutSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseJobsPutSharesUsersReaders(Response):
    users: List[_ResponseJobsPutSharesUsersReadersUsers]
    groups: List[_ResponseJobsPutSharesUsersReadersGroups]

class _ResponseJobsPutSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseJobsPutSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseJobsPutSharesUsersWriters(Response):
    users: List[_ResponseJobsPutSharesUsersWritersUsers]
    groups: List[_ResponseJobsPutSharesUsersWritersGroups]

class _ResponseJobsPutSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseJobsPutSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseJobsPutSharesUsersOwners(Response):
    users: List[_ResponseJobsPutSharesUsersOwnersUsers]
    groups: List[_ResponseJobsPutSharesUsersOwnersGroups]

class _ResponseJobsPutSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseJobsPutSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseJobsPutSharesGroups(Response):
    readers: _ResponseJobsPutSharesGroupsReaders
    writers: _ResponseJobsPutSharesGroupsWriters
    owners: _ResponseJobsPutSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseJobsPutSharesGroupsReaders(Response):
    users: List[_ResponseJobsPutSharesGroupsReadersUsers]
    groups: List[_ResponseJobsPutSharesGroupsReadersGroups]

class _ResponseJobsPutSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseJobsPutSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseJobsPutSharesGroupsWriters(Response):
    users: List[_ResponseJobsPutSharesGroupsWritersUsers]
    groups: List[_ResponseJobsPutSharesGroupsWritersGroups]

class _ResponseJobsPutSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseJobsPutSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseJobsPutSharesGroupsOwners(Response):
    users: List[_ResponseJobsPutSharesGroupsOwnersUsers]
    groups: List[_ResponseJobsPutSharesGroupsOwnersGroups]

class _ResponseJobsPutSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseJobsPutSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseJobsListDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseJobsPutTransfer(Response):
    dependencies: List[_ResponseJobsPutTransferDependencies]

class _ResponseJobsPutTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseJobsListProjects(Response):
    id: int
    author: _ResponseJobsListProjectsAuthor
    name: str
    description: str
    users: List[_ResponseJobsListProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseJobsListProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseJobsListProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseJobsPutArchive(Response):
    id: int
    name: str
    type: str
    from_template_id: int
    state: str
    created_at: str
    updated_at: str
    runs: List[_ResponseJobsPutArchiveRuns]
    last_run: _ResponseJobsPutArchiveLastRun
    hidden: bool
    archived: str
    author: _ResponseJobsPutArchiveAuthor
    my_permission_level: str
    success_email_subject: str
    success_email_body: str
    running_as_user: str
    run_by_user: str
    schedule: _ResponseJobsPutArchiveSchedule

class _ResponseJobsPutArchiveRuns(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseJobsPutArchiveLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseJobsPutArchiveAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseJobsPutArchiveSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseJsonValuesPost(Response):
    id: int
    name: str
    value: object

class _ResponseJsonValuesGet(Response):
    id: int
    name: str
    value: object

class _ResponseJsonValuesPatch(Response):
    id: int
    name: str
    value: object

class _ResponseJsonValuesListShares(Response):
    readers: _ResponseJsonValuesListSharesReaders
    writers: _ResponseJsonValuesListSharesWriters
    owners: _ResponseJsonValuesListSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseJsonValuesListSharesReaders(Response):
    users: List[_ResponseJsonValuesListSharesReadersUsers]
    groups: List[_ResponseJsonValuesListSharesReadersGroups]

class _ResponseJsonValuesListSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseJsonValuesListSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseJsonValuesListSharesWriters(Response):
    users: List[_ResponseJsonValuesListSharesWritersUsers]
    groups: List[_ResponseJsonValuesListSharesWritersGroups]

class _ResponseJsonValuesListSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseJsonValuesListSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseJsonValuesListSharesOwners(Response):
    users: List[_ResponseJsonValuesListSharesOwnersUsers]
    groups: List[_ResponseJsonValuesListSharesOwnersGroups]

class _ResponseJsonValuesListSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseJsonValuesListSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseJsonValuesPutSharesUsers(Response):
    readers: _ResponseJsonValuesPutSharesUsersReaders
    writers: _ResponseJsonValuesPutSharesUsersWriters
    owners: _ResponseJsonValuesPutSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseJsonValuesPutSharesUsersReaders(Response):
    users: List[_ResponseJsonValuesPutSharesUsersReadersUsers]
    groups: List[_ResponseJsonValuesPutSharesUsersReadersGroups]

class _ResponseJsonValuesPutSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseJsonValuesPutSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseJsonValuesPutSharesUsersWriters(Response):
    users: List[_ResponseJsonValuesPutSharesUsersWritersUsers]
    groups: List[_ResponseJsonValuesPutSharesUsersWritersGroups]

class _ResponseJsonValuesPutSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseJsonValuesPutSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseJsonValuesPutSharesUsersOwners(Response):
    users: List[_ResponseJsonValuesPutSharesUsersOwnersUsers]
    groups: List[_ResponseJsonValuesPutSharesUsersOwnersGroups]

class _ResponseJsonValuesPutSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseJsonValuesPutSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseJsonValuesPutSharesGroups(Response):
    readers: _ResponseJsonValuesPutSharesGroupsReaders
    writers: _ResponseJsonValuesPutSharesGroupsWriters
    owners: _ResponseJsonValuesPutSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseJsonValuesPutSharesGroupsReaders(Response):
    users: List[_ResponseJsonValuesPutSharesGroupsReadersUsers]
    groups: List[_ResponseJsonValuesPutSharesGroupsReadersGroups]

class _ResponseJsonValuesPutSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseJsonValuesPutSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseJsonValuesPutSharesGroupsWriters(Response):
    users: List[_ResponseJsonValuesPutSharesGroupsWritersUsers]
    groups: List[_ResponseJsonValuesPutSharesGroupsWritersGroups]

class _ResponseJsonValuesPutSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseJsonValuesPutSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseJsonValuesPutSharesGroupsOwners(Response):
    users: List[_ResponseJsonValuesPutSharesGroupsOwnersUsers]
    groups: List[_ResponseJsonValuesPutSharesGroupsOwnersGroups]

class _ResponseJsonValuesPutSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseJsonValuesPutSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseJsonValuesListDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseJsonValuesPutTransfer(Response):
    dependencies: List[_ResponseJsonValuesPutTransferDependencies]

class _ResponseJsonValuesPutTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseMatchTargetsListShares(Response):
    readers: _ResponseMatchTargetsListSharesReaders
    writers: _ResponseMatchTargetsListSharesWriters
    owners: _ResponseMatchTargetsListSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseMatchTargetsListSharesReaders(Response):
    users: List[_ResponseMatchTargetsListSharesReadersUsers]
    groups: List[_ResponseMatchTargetsListSharesReadersGroups]

class _ResponseMatchTargetsListSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseMatchTargetsListSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseMatchTargetsListSharesWriters(Response):
    users: List[_ResponseMatchTargetsListSharesWritersUsers]
    groups: List[_ResponseMatchTargetsListSharesWritersGroups]

class _ResponseMatchTargetsListSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseMatchTargetsListSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseMatchTargetsListSharesOwners(Response):
    users: List[_ResponseMatchTargetsListSharesOwnersUsers]
    groups: List[_ResponseMatchTargetsListSharesOwnersGroups]

class _ResponseMatchTargetsListSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseMatchTargetsListSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseMatchTargetsPutSharesUsers(Response):
    readers: _ResponseMatchTargetsPutSharesUsersReaders
    writers: _ResponseMatchTargetsPutSharesUsersWriters
    owners: _ResponseMatchTargetsPutSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseMatchTargetsPutSharesUsersReaders(Response):
    users: List[_ResponseMatchTargetsPutSharesUsersReadersUsers]
    groups: List[_ResponseMatchTargetsPutSharesUsersReadersGroups]

class _ResponseMatchTargetsPutSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseMatchTargetsPutSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseMatchTargetsPutSharesUsersWriters(Response):
    users: List[_ResponseMatchTargetsPutSharesUsersWritersUsers]
    groups: List[_ResponseMatchTargetsPutSharesUsersWritersGroups]

class _ResponseMatchTargetsPutSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseMatchTargetsPutSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseMatchTargetsPutSharesUsersOwners(Response):
    users: List[_ResponseMatchTargetsPutSharesUsersOwnersUsers]
    groups: List[_ResponseMatchTargetsPutSharesUsersOwnersGroups]

class _ResponseMatchTargetsPutSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseMatchTargetsPutSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseMatchTargetsPutSharesGroups(Response):
    readers: _ResponseMatchTargetsPutSharesGroupsReaders
    writers: _ResponseMatchTargetsPutSharesGroupsWriters
    owners: _ResponseMatchTargetsPutSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseMatchTargetsPutSharesGroupsReaders(Response):
    users: List[_ResponseMatchTargetsPutSharesGroupsReadersUsers]
    groups: List[_ResponseMatchTargetsPutSharesGroupsReadersGroups]

class _ResponseMatchTargetsPutSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseMatchTargetsPutSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseMatchTargetsPutSharesGroupsWriters(Response):
    users: List[_ResponseMatchTargetsPutSharesGroupsWritersUsers]
    groups: List[_ResponseMatchTargetsPutSharesGroupsWritersGroups]

class _ResponseMatchTargetsPutSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseMatchTargetsPutSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseMatchTargetsPutSharesGroupsOwners(Response):
    users: List[_ResponseMatchTargetsPutSharesGroupsOwnersUsers]
    groups: List[_ResponseMatchTargetsPutSharesGroupsOwnersGroups]

class _ResponseMatchTargetsPutSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseMatchTargetsPutSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseMatchTargetsPutArchive(Response):
    id: int
    name: str
    target_file_name: str
    created_at: str
    updated_at: str
    archived: bool

class _ResponseMatchTargetsList(Response):
    id: int
    name: str
    target_file_name: str
    created_at: str
    updated_at: str
    archived: bool

class _ResponseMatchTargetsPost(Response):
    id: int
    name: str
    target_file_name: str
    created_at: str
    updated_at: str
    archived: bool

class _ResponseMatchTargetsGet(Response):
    id: int
    name: str
    target_file_name: str
    created_at: str
    updated_at: str
    archived: bool

class _ResponseMatchTargetsPatch(Response):
    id: int
    name: str
    target_file_name: str
    created_at: str
    updated_at: str
    archived: bool

class _ResponseMediaListSpotOrdersShares(Response):
    readers: _ResponseMediaListSpotOrdersSharesReaders
    writers: _ResponseMediaListSpotOrdersSharesWriters
    owners: _ResponseMediaListSpotOrdersSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseMediaListSpotOrdersSharesReaders(Response):
    users: List[_ResponseMediaListSpotOrdersSharesReadersUsers]
    groups: List[_ResponseMediaListSpotOrdersSharesReadersGroups]

class _ResponseMediaListSpotOrdersSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseMediaListSpotOrdersSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseMediaListSpotOrdersSharesWriters(Response):
    users: List[_ResponseMediaListSpotOrdersSharesWritersUsers]
    groups: List[_ResponseMediaListSpotOrdersSharesWritersGroups]

class _ResponseMediaListSpotOrdersSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseMediaListSpotOrdersSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseMediaListSpotOrdersSharesOwners(Response):
    users: List[_ResponseMediaListSpotOrdersSharesOwnersUsers]
    groups: List[_ResponseMediaListSpotOrdersSharesOwnersGroups]

class _ResponseMediaListSpotOrdersSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseMediaListSpotOrdersSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutSpotOrdersSharesUsers(Response):
    readers: _ResponseMediaPutSpotOrdersSharesUsersReaders
    writers: _ResponseMediaPutSpotOrdersSharesUsersWriters
    owners: _ResponseMediaPutSpotOrdersSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseMediaPutSpotOrdersSharesUsersReaders(Response):
    users: List[_ResponseMediaPutSpotOrdersSharesUsersReadersUsers]
    groups: List[_ResponseMediaPutSpotOrdersSharesUsersReadersGroups]

class _ResponseMediaPutSpotOrdersSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseMediaPutSpotOrdersSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutSpotOrdersSharesUsersWriters(Response):
    users: List[_ResponseMediaPutSpotOrdersSharesUsersWritersUsers]
    groups: List[_ResponseMediaPutSpotOrdersSharesUsersWritersGroups]

class _ResponseMediaPutSpotOrdersSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseMediaPutSpotOrdersSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutSpotOrdersSharesUsersOwners(Response):
    users: List[_ResponseMediaPutSpotOrdersSharesUsersOwnersUsers]
    groups: List[_ResponseMediaPutSpotOrdersSharesUsersOwnersGroups]

class _ResponseMediaPutSpotOrdersSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseMediaPutSpotOrdersSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutSpotOrdersSharesGroups(Response):
    readers: _ResponseMediaPutSpotOrdersSharesGroupsReaders
    writers: _ResponseMediaPutSpotOrdersSharesGroupsWriters
    owners: _ResponseMediaPutSpotOrdersSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseMediaPutSpotOrdersSharesGroupsReaders(Response):
    users: List[_ResponseMediaPutSpotOrdersSharesGroupsReadersUsers]
    groups: List[_ResponseMediaPutSpotOrdersSharesGroupsReadersGroups]

class _ResponseMediaPutSpotOrdersSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseMediaPutSpotOrdersSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutSpotOrdersSharesGroupsWriters(Response):
    users: List[_ResponseMediaPutSpotOrdersSharesGroupsWritersUsers]
    groups: List[_ResponseMediaPutSpotOrdersSharesGroupsWritersGroups]

class _ResponseMediaPutSpotOrdersSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseMediaPutSpotOrdersSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutSpotOrdersSharesGroupsOwners(Response):
    users: List[_ResponseMediaPutSpotOrdersSharesGroupsOwnersUsers]
    groups: List[_ResponseMediaPutSpotOrdersSharesGroupsOwnersGroups]

class _ResponseMediaPutSpotOrdersSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseMediaPutSpotOrdersSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutSpotOrdersArchive(Response):
    id: int
    archived: str
    csv_s3_uri: str
    json_s3_uri: str
    xml_archive_s3_uri: str
    last_transform_job_id: int

class _ResponseMediaListOptimizationsShares(Response):
    readers: _ResponseMediaListOptimizationsSharesReaders
    writers: _ResponseMediaListOptimizationsSharesWriters
    owners: _ResponseMediaListOptimizationsSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseMediaListOptimizationsSharesReaders(Response):
    users: List[_ResponseMediaListOptimizationsSharesReadersUsers]
    groups: List[_ResponseMediaListOptimizationsSharesReadersGroups]

class _ResponseMediaListOptimizationsSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseMediaListOptimizationsSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseMediaListOptimizationsSharesWriters(Response):
    users: List[_ResponseMediaListOptimizationsSharesWritersUsers]
    groups: List[_ResponseMediaListOptimizationsSharesWritersGroups]

class _ResponseMediaListOptimizationsSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseMediaListOptimizationsSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseMediaListOptimizationsSharesOwners(Response):
    users: List[_ResponseMediaListOptimizationsSharesOwnersUsers]
    groups: List[_ResponseMediaListOptimizationsSharesOwnersGroups]

class _ResponseMediaListOptimizationsSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseMediaListOptimizationsSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutOptimizationsSharesUsers(Response):
    readers: _ResponseMediaPutOptimizationsSharesUsersReaders
    writers: _ResponseMediaPutOptimizationsSharesUsersWriters
    owners: _ResponseMediaPutOptimizationsSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseMediaPutOptimizationsSharesUsersReaders(Response):
    users: List[_ResponseMediaPutOptimizationsSharesUsersReadersUsers]
    groups: List[_ResponseMediaPutOptimizationsSharesUsersReadersGroups]

class _ResponseMediaPutOptimizationsSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseMediaPutOptimizationsSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutOptimizationsSharesUsersWriters(Response):
    users: List[_ResponseMediaPutOptimizationsSharesUsersWritersUsers]
    groups: List[_ResponseMediaPutOptimizationsSharesUsersWritersGroups]

class _ResponseMediaPutOptimizationsSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseMediaPutOptimizationsSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutOptimizationsSharesUsersOwners(Response):
    users: List[_ResponseMediaPutOptimizationsSharesUsersOwnersUsers]
    groups: List[_ResponseMediaPutOptimizationsSharesUsersOwnersGroups]

class _ResponseMediaPutOptimizationsSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseMediaPutOptimizationsSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutOptimizationsSharesGroups(Response):
    readers: _ResponseMediaPutOptimizationsSharesGroupsReaders
    writers: _ResponseMediaPutOptimizationsSharesGroupsWriters
    owners: _ResponseMediaPutOptimizationsSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseMediaPutOptimizationsSharesGroupsReaders(Response):
    users: List[_ResponseMediaPutOptimizationsSharesGroupsReadersUsers]
    groups: List[_ResponseMediaPutOptimizationsSharesGroupsReadersGroups]

class _ResponseMediaPutOptimizationsSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseMediaPutOptimizationsSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutOptimizationsSharesGroupsWriters(Response):
    users: List[_ResponseMediaPutOptimizationsSharesGroupsWritersUsers]
    groups: List[_ResponseMediaPutOptimizationsSharesGroupsWritersGroups]

class _ResponseMediaPutOptimizationsSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseMediaPutOptimizationsSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutOptimizationsSharesGroupsOwners(Response):
    users: List[_ResponseMediaPutOptimizationsSharesGroupsOwnersUsers]
    groups: List[_ResponseMediaPutOptimizationsSharesGroupsOwnersGroups]

class _ResponseMediaPutOptimizationsSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseMediaPutOptimizationsSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutOptimizationsArchive(Response):
    id: int
    author: _ResponseMediaPutOptimizationsArchiveAuthor
    name: str
    created_at: str
    updated_at: str
    finished_at: str
    state: str
    last_run_id: int
    spot_order_id: int
    archived: str
    report_link: str
    spot_order_link: str
    file_links: List[str]
    runs: List[_ResponseMediaPutOptimizationsArchiveRuns]
    programs: List[str]
    networks: List[str]
    exclude_programs: bool
    exclude_networks: bool
    time_slot_percentages: dict

class _ResponseMediaPutOptimizationsArchiveAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseMediaPutOptimizationsArchiveRuns(Response):
    market_id: int
    start_date: str
    end_date: str
    force_cpm: bool
    reach_alpha: float
    syscodes: List[int]
    rate_cards: List[str]
    constraints: List[_ResponseMediaPutOptimizationsArchiveRunsConstraints]

class _ResponseMediaPutOptimizationsArchiveRunsConstraints(Response):
    targets: List[str]
    budget: float
    frequency: float

class _ResponseMediaListRatecardsShares(Response):
    readers: _ResponseMediaListRatecardsSharesReaders
    writers: _ResponseMediaListRatecardsSharesWriters
    owners: _ResponseMediaListRatecardsSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseMediaListRatecardsSharesReaders(Response):
    users: List[_ResponseMediaListRatecardsSharesReadersUsers]
    groups: List[_ResponseMediaListRatecardsSharesReadersGroups]

class _ResponseMediaListRatecardsSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseMediaListRatecardsSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseMediaListRatecardsSharesWriters(Response):
    users: List[_ResponseMediaListRatecardsSharesWritersUsers]
    groups: List[_ResponseMediaListRatecardsSharesWritersGroups]

class _ResponseMediaListRatecardsSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseMediaListRatecardsSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseMediaListRatecardsSharesOwners(Response):
    users: List[_ResponseMediaListRatecardsSharesOwnersUsers]
    groups: List[_ResponseMediaListRatecardsSharesOwnersGroups]

class _ResponseMediaListRatecardsSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseMediaListRatecardsSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutRatecardsSharesUsers(Response):
    readers: _ResponseMediaPutRatecardsSharesUsersReaders
    writers: _ResponseMediaPutRatecardsSharesUsersWriters
    owners: _ResponseMediaPutRatecardsSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseMediaPutRatecardsSharesUsersReaders(Response):
    users: List[_ResponseMediaPutRatecardsSharesUsersReadersUsers]
    groups: List[_ResponseMediaPutRatecardsSharesUsersReadersGroups]

class _ResponseMediaPutRatecardsSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseMediaPutRatecardsSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutRatecardsSharesUsersWriters(Response):
    users: List[_ResponseMediaPutRatecardsSharesUsersWritersUsers]
    groups: List[_ResponseMediaPutRatecardsSharesUsersWritersGroups]

class _ResponseMediaPutRatecardsSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseMediaPutRatecardsSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutRatecardsSharesUsersOwners(Response):
    users: List[_ResponseMediaPutRatecardsSharesUsersOwnersUsers]
    groups: List[_ResponseMediaPutRatecardsSharesUsersOwnersGroups]

class _ResponseMediaPutRatecardsSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseMediaPutRatecardsSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutRatecardsSharesGroups(Response):
    readers: _ResponseMediaPutRatecardsSharesGroupsReaders
    writers: _ResponseMediaPutRatecardsSharesGroupsWriters
    owners: _ResponseMediaPutRatecardsSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseMediaPutRatecardsSharesGroupsReaders(Response):
    users: List[_ResponseMediaPutRatecardsSharesGroupsReadersUsers]
    groups: List[_ResponseMediaPutRatecardsSharesGroupsReadersGroups]

class _ResponseMediaPutRatecardsSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseMediaPutRatecardsSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutRatecardsSharesGroupsWriters(Response):
    users: List[_ResponseMediaPutRatecardsSharesGroupsWritersUsers]
    groups: List[_ResponseMediaPutRatecardsSharesGroupsWritersGroups]

class _ResponseMediaPutRatecardsSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseMediaPutRatecardsSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutRatecardsSharesGroupsOwners(Response):
    users: List[_ResponseMediaPutRatecardsSharesGroupsOwnersUsers]
    groups: List[_ResponseMediaPutRatecardsSharesGroupsOwnersGroups]

class _ResponseMediaPutRatecardsSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseMediaPutRatecardsSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseMediaPutRatecardsArchive(Response):
    id: int
    filename: str
    start_on: str
    end_on: str
    dma_number: int
    archived: str

class _ResponseMediaListOptimizations(Response):
    id: int
    author: _ResponseMediaListOptimizationsAuthor
    name: str
    created_at: str
    updated_at: str
    finished_at: str
    state: str
    last_run_id: int
    spot_order_id: int
    archived: str

class _ResponseMediaListOptimizationsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseMediaPostOptimizations(Response):
    id: int
    author: _ResponseMediaPostOptimizationsAuthor
    name: str
    created_at: str
    updated_at: str
    finished_at: str
    state: str
    last_run_id: int
    spot_order_id: int
    archived: str
    report_link: str
    spot_order_link: str
    file_links: List[str]
    runs: List[_ResponseMediaPostOptimizationsRuns]
    programs: List[str]
    networks: List[str]
    exclude_programs: bool
    exclude_networks: bool
    time_slot_percentages: dict

class _ResponseMediaPostOptimizationsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseMediaPostOptimizationsRuns(Response):
    id: int
    optimization_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseMediaPostOptimizationsRunsConstraints(Response):
    targets: List[str]
    budget: float
    frequency: float

class _ResponseMediaGetOptimizations(Response):
    id: int
    author: _ResponseMediaGetOptimizationsAuthor
    name: str
    created_at: str
    updated_at: str
    finished_at: str
    state: str
    last_run_id: int
    spot_order_id: int
    archived: str
    report_link: str
    spot_order_link: str
    file_links: List[str]
    runs: List[_ResponseMediaGetOptimizationsRuns]
    programs: List[str]
    networks: List[str]
    exclude_programs: bool
    exclude_networks: bool
    time_slot_percentages: dict

class _ResponseMediaGetOptimizationsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseMediaGetOptimizationsRuns(Response):
    id: int
    optimization_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseMediaGetOptimizationsRunsConstraints(Response):
    targets: List[str]
    budget: float
    frequency: float

class _ResponseMediaPatchOptimizations(Response):
    id: int
    author: _ResponseMediaPatchOptimizationsAuthor
    name: str
    created_at: str
    updated_at: str
    finished_at: str
    state: str
    last_run_id: int
    spot_order_id: int
    archived: str
    report_link: str
    spot_order_link: str
    file_links: List[str]
    runs: List[_ResponseMediaPatchOptimizationsRuns]
    programs: List[str]
    networks: List[str]
    exclude_programs: bool
    exclude_networks: bool
    time_slot_percentages: dict

class _ResponseMediaPatchOptimizationsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseMediaPatchOptimizationsRuns(Response):
    market_id: int
    start_date: str
    end_date: str
    force_cpm: bool
    reach_alpha: float
    syscodes: List[int]
    rate_cards: List[str]
    constraints: List[_ResponseMediaPatchOptimizationsRunsConstraints]

class _ResponseMediaPatchOptimizationsRunsConstraints(Response):
    targets: List[str]
    budget: float
    frequency: float

class _ResponseMediaPostOptimizationsClone(Response):
    id: int
    author: _ResponseMediaPostOptimizationsCloneAuthor
    name: str
    created_at: str
    updated_at: str
    finished_at: str
    state: str
    last_run_id: int
    spot_order_id: int
    archived: str
    report_link: str
    spot_order_link: str
    file_links: List[str]
    runs: List[_ResponseMediaPostOptimizationsCloneRuns]
    programs: List[str]
    networks: List[str]
    exclude_programs: bool
    exclude_networks: bool
    time_slot_percentages: dict

class _ResponseMediaPostOptimizationsCloneAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseMediaPostOptimizationsCloneRuns(Response):
    market_id: int
    start_date: str
    end_date: str
    force_cpm: bool
    reach_alpha: float
    syscodes: List[int]
    rate_cards: List[str]
    constraints: List[_ResponseMediaPostOptimizationsCloneRunsConstraints]

class _ResponseMediaPostOptimizationsCloneRunsConstraints(Response):
    targets: List[str]
    budget: float
    frequency: float

class _ResponseMediaListOptimizationsRuns(Response):
    id: int
    optimization_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseMediaListOptimizationsRunsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseMediaListSpotOrders(Response):
    id: int
    archived: str

class _ResponseMediaPostSpotOrders(Response):
    id: int
    archived: str
    csv_s3_uri: str
    json_s3_uri: str
    xml_archive_s3_uri: str
    last_transform_job_id: int

class _ResponseMediaGetSpotOrders(Response):
    id: int
    archived: str
    csv_s3_uri: str
    json_s3_uri: str
    xml_archive_s3_uri: str
    last_transform_job_id: int

class _ResponseMediaPutSpotOrders(Response):
    id: int
    archived: str
    csv_s3_uri: str
    json_s3_uri: str
    xml_archive_s3_uri: str
    last_transform_job_id: int

class _ResponseMediaListRatecards(Response):
    id: int
    filename: str
    start_on: str
    end_on: str
    dma_number: int
    archived: str

class _ResponseMediaPostRatecards(Response):
    id: int
    filename: str
    start_on: str
    end_on: str
    dma_number: int
    archived: str

class _ResponseMediaGetRatecards(Response):
    id: int
    filename: str
    start_on: str
    end_on: str
    dma_number: int
    archived: str

class _ResponseMediaPutRatecards(Response):
    id: int
    filename: str
    start_on: str
    end_on: str
    dma_number: int
    archived: str

class _ResponseMediaPatchRatecards(Response):
    id: int
    filename: str
    start_on: str
    end_on: str
    dma_number: int
    archived: str

class _ResponseMediaListDmas(Response):
    name: str
    number: int

class _ResponseMediaListTargets(Response):
    name: str
    identifier: str
    data_source: str

class _ResponseModelsListTypes(Response):
    id: int
    algorithm: str
    dv_type: str
    fint_allowed: bool

class _ResponseModelsList(Response):
    id: int
    table_name: str
    database_id: int
    credential_id: int
    model_name: str
    description: str
    interaction_terms: bool
    box_cox_transformation: bool
    model_type_id: int
    primary_key: str
    dependent_variable: str
    dependent_variable_order: List[str]
    excluded_columns: List[str]
    limiting_sql: str
    cross_validation_parameters: dict
    number_of_folds: int
    schedule: _ResponseModelsListSchedule
    parent_id: int
    time_zone: str
    last_run: _ResponseModelsListLastRun
    user: _ResponseModelsListUser
    created_at: str
    updated_at: str
    current_build_state: str
    current_build_exception: str
    builds: List[_ResponseModelsListBuilds]
    predictions: List[_ResponseModelsListPredictions]
    last_output_location: str
    archived: str

class _ResponseModelsListSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseModelsListLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseModelsListUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseModelsListBuilds(Response):
    id: int
    state: str
    error: str
    name: str
    created_at: str
    description: str
    root_mean_squared_error: float
    r_squared_error: float
    roc_auc: float
    transformation_metadata: str
    output: str
    output_location: str

class _ResponseModelsListPredictions(Response):
    id: int
    table_name: str
    primary_key: List[str]
    limiting_sql: str
    output_table: str
    state: str

class _ResponseModelsGet(Response):
    id: int
    table_name: str
    database_id: int
    credential_id: int
    model_name: str
    description: str
    interaction_terms: bool
    box_cox_transformation: bool
    model_type_id: int
    primary_key: str
    dependent_variable: str
    dependent_variable_order: List[str]
    excluded_columns: List[str]
    limiting_sql: str
    active_build_id: int
    cross_validation_parameters: dict
    number_of_folds: int
    notifications: _ResponseModelsGetNotifications
    schedule: _ResponseModelsGetSchedule
    parent_id: int
    running_as: _ResponseModelsGetRunningAs
    time_zone: str
    last_run: _ResponseModelsGetLastRun
    hidden: bool
    user: _ResponseModelsGetUser
    created_at: str
    updated_at: str
    current_build_state: str
    current_build_exception: str
    builds: List[_ResponseModelsGetBuilds]
    predictions: List[_ResponseModelsGetPredictions]
    last_output_location: str
    archived: str

class _ResponseModelsGetNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseModelsGetSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseModelsGetRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseModelsGetLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseModelsGetUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseModelsGetBuilds(Response):
    id: int
    state: str
    error: str
    name: str
    created_at: str
    description: str
    root_mean_squared_error: float
    r_squared_error: float
    roc_auc: float
    transformation_metadata: str
    output: str
    output_location: str

class _ResponseModelsGetPredictions(Response):
    id: int
    table_name: str
    primary_key: List[str]
    limiting_sql: str
    output_table: str
    schedule: _ResponseModelsGetPredictionsSchedule
    state: str

class _ResponseModelsGetPredictionsSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseModelsListBuildsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseModelsListShares(Response):
    readers: _ResponseModelsListSharesReaders
    writers: _ResponseModelsListSharesWriters
    owners: _ResponseModelsListSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseModelsListSharesReaders(Response):
    users: List[_ResponseModelsListSharesReadersUsers]
    groups: List[_ResponseModelsListSharesReadersGroups]

class _ResponseModelsListSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseModelsListSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseModelsListSharesWriters(Response):
    users: List[_ResponseModelsListSharesWritersUsers]
    groups: List[_ResponseModelsListSharesWritersGroups]

class _ResponseModelsListSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseModelsListSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseModelsListSharesOwners(Response):
    users: List[_ResponseModelsListSharesOwnersUsers]
    groups: List[_ResponseModelsListSharesOwnersGroups]

class _ResponseModelsListSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseModelsListSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseModelsPutSharesUsers(Response):
    readers: _ResponseModelsPutSharesUsersReaders
    writers: _ResponseModelsPutSharesUsersWriters
    owners: _ResponseModelsPutSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseModelsPutSharesUsersReaders(Response):
    users: List[_ResponseModelsPutSharesUsersReadersUsers]
    groups: List[_ResponseModelsPutSharesUsersReadersGroups]

class _ResponseModelsPutSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseModelsPutSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseModelsPutSharesUsersWriters(Response):
    users: List[_ResponseModelsPutSharesUsersWritersUsers]
    groups: List[_ResponseModelsPutSharesUsersWritersGroups]

class _ResponseModelsPutSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseModelsPutSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseModelsPutSharesUsersOwners(Response):
    users: List[_ResponseModelsPutSharesUsersOwnersUsers]
    groups: List[_ResponseModelsPutSharesUsersOwnersGroups]

class _ResponseModelsPutSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseModelsPutSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseModelsPutSharesGroups(Response):
    readers: _ResponseModelsPutSharesGroupsReaders
    writers: _ResponseModelsPutSharesGroupsWriters
    owners: _ResponseModelsPutSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseModelsPutSharesGroupsReaders(Response):
    users: List[_ResponseModelsPutSharesGroupsReadersUsers]
    groups: List[_ResponseModelsPutSharesGroupsReadersGroups]

class _ResponseModelsPutSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseModelsPutSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseModelsPutSharesGroupsWriters(Response):
    users: List[_ResponseModelsPutSharesGroupsWritersUsers]
    groups: List[_ResponseModelsPutSharesGroupsWritersGroups]

class _ResponseModelsPutSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseModelsPutSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseModelsPutSharesGroupsOwners(Response):
    users: List[_ResponseModelsPutSharesGroupsOwnersUsers]
    groups: List[_ResponseModelsPutSharesGroupsOwnersGroups]

class _ResponseModelsPutSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseModelsPutSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseModelsListDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseModelsPutTransfer(Response):
    dependencies: List[_ResponseModelsPutTransferDependencies]

class _ResponseModelsPutTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseModelsListProjects(Response):
    id: int
    author: _ResponseModelsListProjectsAuthor
    name: str
    description: str
    users: List[_ResponseModelsListProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseModelsListProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseModelsListProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseModelsPutArchive(Response):
    id: int
    table_name: str
    database_id: int
    credential_id: int
    model_name: str
    description: str
    interaction_terms: bool
    box_cox_transformation: bool
    model_type_id: int
    primary_key: str
    dependent_variable: str
    dependent_variable_order: List[str]
    excluded_columns: List[str]
    limiting_sql: str
    active_build_id: int
    cross_validation_parameters: dict
    number_of_folds: int
    notifications: _ResponseModelsPutArchiveNotifications
    schedule: _ResponseModelsPutArchiveSchedule
    parent_id: int
    running_as: _ResponseModelsPutArchiveRunningAs
    time_zone: str
    last_run: _ResponseModelsPutArchiveLastRun
    hidden: bool
    user: _ResponseModelsPutArchiveUser
    created_at: str
    updated_at: str
    current_build_state: str
    current_build_exception: str
    builds: List[_ResponseModelsPutArchiveBuilds]
    predictions: List[_ResponseModelsPutArchivePredictions]
    last_output_location: str
    archived: str

class _ResponseModelsPutArchiveNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseModelsPutArchiveSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseModelsPutArchiveRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseModelsPutArchiveLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseModelsPutArchiveUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseModelsPutArchiveBuilds(Response):
    id: int
    name: str
    created_at: str
    description: str
    root_mean_squared_error: float
    r_squared_error: float
    roc_auc: float

class _ResponseModelsPutArchivePredictions(Response):
    id: int
    table_name: str
    primary_key: List[str]
    limiting_sql: str
    output_table: str
    schedule: _ResponseModelsPutArchivePredictionsSchedule
    state: str

class _ResponseModelsPutArchivePredictionsSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseModelsListSchedules(Response):
    id: int
    schedule: _ResponseModelsListSchedulesSchedule

class _ResponseModelsListSchedulesSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseNotebooksList(Response):
    id: int
    name: str
    language: str
    description: str
    user: _ResponseNotebooksListUser
    created_at: str
    updated_at: str
    most_recent_deployment: _ResponseNotebooksListMostRecentDeployment
    archived: str

class _ResponseNotebooksListUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseNotebooksListMostRecentDeployment(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    notebook_id: int

class _ResponseNotebooksPost(Response):
    id: int
    name: str
    language: str
    description: str
    notebook_url: str
    notebook_preview_url: str
    requirements_url: str
    file_id: str
    requirements_file_id: str
    user: _ResponseNotebooksPostUser
    docker_image_name: str
    docker_image_tag: str
    instance_type: str
    memory: int
    cpu: int
    created_at: str
    updated_at: str
    most_recent_deployment: _ResponseNotebooksPostMostRecentDeployment
    credentials: List[int]
    environment_variables: dict
    idle_timeout: int
    partition_label: str
    git_repo_id: int
    git_repo_url: str
    git_ref: str
    git_path: str
    my_permission_level: str
    archived: str
    hidden: bool

class _ResponseNotebooksPostUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseNotebooksPostMostRecentDeployment(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    display_url: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    notebook_id: int

class _ResponseNotebooksGet(Response):
    id: int
    name: str
    language: str
    description: str
    notebook_url: str
    notebook_preview_url: str
    requirements_url: str
    file_id: str
    requirements_file_id: str
    user: _ResponseNotebooksGetUser
    docker_image_name: str
    docker_image_tag: str
    instance_type: str
    memory: int
    cpu: int
    created_at: str
    updated_at: str
    most_recent_deployment: _ResponseNotebooksGetMostRecentDeployment
    credentials: List[int]
    environment_variables: dict
    idle_timeout: int
    partition_label: str
    git_repo_id: int
    git_repo_url: str
    git_ref: str
    git_path: str
    my_permission_level: str
    archived: str
    hidden: bool

class _ResponseNotebooksGetUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseNotebooksGetMostRecentDeployment(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    display_url: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    notebook_id: int

class _ResponseNotebooksPut(Response):
    id: int
    name: str
    language: str
    description: str
    notebook_url: str
    notebook_preview_url: str
    requirements_url: str
    file_id: str
    requirements_file_id: str
    user: _ResponseNotebooksPutUser
    docker_image_name: str
    docker_image_tag: str
    instance_type: str
    memory: int
    cpu: int
    created_at: str
    updated_at: str
    most_recent_deployment: _ResponseNotebooksPutMostRecentDeployment
    credentials: List[int]
    environment_variables: dict
    idle_timeout: int
    partition_label: str
    git_repo_id: int
    git_repo_url: str
    git_ref: str
    git_path: str
    my_permission_level: str
    archived: str
    hidden: bool

class _ResponseNotebooksPutUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseNotebooksPutMostRecentDeployment(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    display_url: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    notebook_id: int

class _ResponseNotebooksPatch(Response):
    id: int
    name: str
    language: str
    description: str
    notebook_url: str
    notebook_preview_url: str
    requirements_url: str
    file_id: str
    requirements_file_id: str
    user: _ResponseNotebooksPatchUser
    docker_image_name: str
    docker_image_tag: str
    instance_type: str
    memory: int
    cpu: int
    created_at: str
    updated_at: str
    most_recent_deployment: _ResponseNotebooksPatchMostRecentDeployment
    credentials: List[int]
    environment_variables: dict
    idle_timeout: int
    partition_label: str
    git_repo_id: int
    git_repo_url: str
    git_ref: str
    git_path: str
    my_permission_level: str
    archived: str
    hidden: bool

class _ResponseNotebooksPatchUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseNotebooksPatchMostRecentDeployment(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    display_url: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    notebook_id: int

class _ResponseNotebooksListUpdateLinks(Response):
    update_url: str
    update_preview_url: str

class _ResponseNotebooksPostClone(Response):
    id: int
    name: str
    language: str
    description: str
    notebook_url: str
    notebook_preview_url: str
    requirements_url: str
    file_id: str
    requirements_file_id: str
    user: _ResponseNotebooksPostCloneUser
    docker_image_name: str
    docker_image_tag: str
    instance_type: str
    memory: int
    cpu: int
    created_at: str
    updated_at: str
    most_recent_deployment: _ResponseNotebooksPostCloneMostRecentDeployment
    credentials: List[int]
    environment_variables: dict
    idle_timeout: int
    partition_label: str
    git_repo_id: int
    git_repo_url: str
    git_ref: str
    git_path: str
    my_permission_level: str
    archived: str
    hidden: bool

class _ResponseNotebooksPostCloneUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseNotebooksPostCloneMostRecentDeployment(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    display_url: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    notebook_id: int

class _ResponseNotebooksListShares(Response):
    readers: _ResponseNotebooksListSharesReaders
    writers: _ResponseNotebooksListSharesWriters
    owners: _ResponseNotebooksListSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseNotebooksListSharesReaders(Response):
    users: List[_ResponseNotebooksListSharesReadersUsers]
    groups: List[_ResponseNotebooksListSharesReadersGroups]

class _ResponseNotebooksListSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseNotebooksListSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseNotebooksListSharesWriters(Response):
    users: List[_ResponseNotebooksListSharesWritersUsers]
    groups: List[_ResponseNotebooksListSharesWritersGroups]

class _ResponseNotebooksListSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseNotebooksListSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseNotebooksListSharesOwners(Response):
    users: List[_ResponseNotebooksListSharesOwnersUsers]
    groups: List[_ResponseNotebooksListSharesOwnersGroups]

class _ResponseNotebooksListSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseNotebooksListSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseNotebooksPutSharesUsers(Response):
    readers: _ResponseNotebooksPutSharesUsersReaders
    writers: _ResponseNotebooksPutSharesUsersWriters
    owners: _ResponseNotebooksPutSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseNotebooksPutSharesUsersReaders(Response):
    users: List[_ResponseNotebooksPutSharesUsersReadersUsers]
    groups: List[_ResponseNotebooksPutSharesUsersReadersGroups]

class _ResponseNotebooksPutSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseNotebooksPutSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseNotebooksPutSharesUsersWriters(Response):
    users: List[_ResponseNotebooksPutSharesUsersWritersUsers]
    groups: List[_ResponseNotebooksPutSharesUsersWritersGroups]

class _ResponseNotebooksPutSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseNotebooksPutSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseNotebooksPutSharesUsersOwners(Response):
    users: List[_ResponseNotebooksPutSharesUsersOwnersUsers]
    groups: List[_ResponseNotebooksPutSharesUsersOwnersGroups]

class _ResponseNotebooksPutSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseNotebooksPutSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseNotebooksPutSharesGroups(Response):
    readers: _ResponseNotebooksPutSharesGroupsReaders
    writers: _ResponseNotebooksPutSharesGroupsWriters
    owners: _ResponseNotebooksPutSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseNotebooksPutSharesGroupsReaders(Response):
    users: List[_ResponseNotebooksPutSharesGroupsReadersUsers]
    groups: List[_ResponseNotebooksPutSharesGroupsReadersGroups]

class _ResponseNotebooksPutSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseNotebooksPutSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseNotebooksPutSharesGroupsWriters(Response):
    users: List[_ResponseNotebooksPutSharesGroupsWritersUsers]
    groups: List[_ResponseNotebooksPutSharesGroupsWritersGroups]

class _ResponseNotebooksPutSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseNotebooksPutSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseNotebooksPutSharesGroupsOwners(Response):
    users: List[_ResponseNotebooksPutSharesGroupsOwnersUsers]
    groups: List[_ResponseNotebooksPutSharesGroupsOwnersGroups]

class _ResponseNotebooksPutSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseNotebooksPutSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseNotebooksListDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseNotebooksPutTransfer(Response):
    dependencies: List[_ResponseNotebooksPutTransferDependencies]

class _ResponseNotebooksPutTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseNotebooksPutArchive(Response):
    id: int
    name: str
    language: str
    description: str
    notebook_url: str
    notebook_preview_url: str
    requirements_url: str
    file_id: str
    requirements_file_id: str
    user: _ResponseNotebooksPutArchiveUser
    docker_image_name: str
    docker_image_tag: str
    instance_type: str
    memory: int
    cpu: int
    created_at: str
    updated_at: str
    most_recent_deployment: _ResponseNotebooksPutArchiveMostRecentDeployment
    credentials: List[int]
    environment_variables: dict
    idle_timeout: int
    partition_label: str
    git_repo_id: int
    git_repo_url: str
    git_ref: str
    git_path: str
    my_permission_level: str
    archived: str
    hidden: bool

class _ResponseNotebooksPutArchiveUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseNotebooksPutArchiveMostRecentDeployment(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    display_url: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    notebook_id: int

class _ResponseNotebooksListProjects(Response):
    id: int
    author: _ResponseNotebooksListProjectsAuthor
    name: str
    description: str
    users: List[_ResponseNotebooksListProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseNotebooksListProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseNotebooksListProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseNotebooksListDeployments(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    notebook_id: int

class _ResponseNotebooksPostDeployments(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    display_url: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    notebook_id: int

class _ResponseNotebooksGetDeployments(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    display_url: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    notebook_id: int

class _ResponseNotebooksListDeploymentsLogs(Response):
    message: str
    stream: str
    created_at: str
    source: str

class _ResponseNotebooksListGit(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseNotebooksListGitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseNotebooksListGitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseNotebooksPutGit(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseNotebooksPutGitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseNotebooksPutGitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseNotebooksPatchGit(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseNotebooksPatchGitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseNotebooksPatchGitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseNotebooksListGitCommits(Response):
    commit_hash: str
    author_name: str
    date: str
    message: str

class _ResponseNotebooksPostGitCommits(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseNotebooksGetGitCommits(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseOntologyList(Response):
    key: str
    title: str
    desc: str
    aliases: List[str]

class _ResponseOrganizationsListFavorites(Response):
    id: int
    object_id: int
    object_type: str
    object_name: str
    created_at: str
    object_updated_at: str
    object_author: _ResponseOrganizationsListFavoritesObjectAuthor
    position: int

class _ResponseOrganizationsListFavoritesObjectAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseOrganizationsPostFavorites(Response):
    id: int
    object_id: int
    object_type: str
    object_name: str
    created_at: str
    object_updated_at: str
    object_author: _ResponseOrganizationsPostFavoritesObjectAuthor

class _ResponseOrganizationsPostFavoritesObjectAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponsePermissionSetsList(Response):
    id: int
    name: str
    description: str
    author: _ResponsePermissionSetsListAuthor
    created_at: str
    updated_at: str
    archived: str

class _ResponsePermissionSetsListAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponsePermissionSetsPost(Response):
    id: int
    name: str
    description: str
    author: _ResponsePermissionSetsPostAuthor
    created_at: str
    updated_at: str
    archived: str

class _ResponsePermissionSetsPostAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponsePermissionSetsGet(Response):
    id: int
    name: str
    description: str
    author: _ResponsePermissionSetsGetAuthor
    created_at: str
    updated_at: str
    archived: str

class _ResponsePermissionSetsGetAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponsePermissionSetsPut(Response):
    id: int
    name: str
    description: str
    author: _ResponsePermissionSetsPutAuthor
    created_at: str
    updated_at: str
    archived: str

class _ResponsePermissionSetsPutAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponsePermissionSetsPatch(Response):
    id: int
    name: str
    description: str
    author: _ResponsePermissionSetsPatchAuthor
    created_at: str
    updated_at: str
    archived: str

class _ResponsePermissionSetsPatchAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponsePermissionSetsListShares(Response):
    readers: _ResponsePermissionSetsListSharesReaders
    writers: _ResponsePermissionSetsListSharesWriters
    owners: _ResponsePermissionSetsListSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponsePermissionSetsListSharesReaders(Response):
    users: List[_ResponsePermissionSetsListSharesReadersUsers]
    groups: List[_ResponsePermissionSetsListSharesReadersGroups]

class _ResponsePermissionSetsListSharesReadersUsers(Response):
    id: int
    name: str

class _ResponsePermissionSetsListSharesReadersGroups(Response):
    id: int
    name: str

class _ResponsePermissionSetsListSharesWriters(Response):
    users: List[_ResponsePermissionSetsListSharesWritersUsers]
    groups: List[_ResponsePermissionSetsListSharesWritersGroups]

class _ResponsePermissionSetsListSharesWritersUsers(Response):
    id: int
    name: str

class _ResponsePermissionSetsListSharesWritersGroups(Response):
    id: int
    name: str

class _ResponsePermissionSetsListSharesOwners(Response):
    users: List[_ResponsePermissionSetsListSharesOwnersUsers]
    groups: List[_ResponsePermissionSetsListSharesOwnersGroups]

class _ResponsePermissionSetsListSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponsePermissionSetsListSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutSharesUsers(Response):
    readers: _ResponsePermissionSetsPutSharesUsersReaders
    writers: _ResponsePermissionSetsPutSharesUsersWriters
    owners: _ResponsePermissionSetsPutSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponsePermissionSetsPutSharesUsersReaders(Response):
    users: List[_ResponsePermissionSetsPutSharesUsersReadersUsers]
    groups: List[_ResponsePermissionSetsPutSharesUsersReadersGroups]

class _ResponsePermissionSetsPutSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutSharesUsersWriters(Response):
    users: List[_ResponsePermissionSetsPutSharesUsersWritersUsers]
    groups: List[_ResponsePermissionSetsPutSharesUsersWritersGroups]

class _ResponsePermissionSetsPutSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutSharesUsersOwners(Response):
    users: List[_ResponsePermissionSetsPutSharesUsersOwnersUsers]
    groups: List[_ResponsePermissionSetsPutSharesUsersOwnersGroups]

class _ResponsePermissionSetsPutSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutSharesGroups(Response):
    readers: _ResponsePermissionSetsPutSharesGroupsReaders
    writers: _ResponsePermissionSetsPutSharesGroupsWriters
    owners: _ResponsePermissionSetsPutSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponsePermissionSetsPutSharesGroupsReaders(Response):
    users: List[_ResponsePermissionSetsPutSharesGroupsReadersUsers]
    groups: List[_ResponsePermissionSetsPutSharesGroupsReadersGroups]

class _ResponsePermissionSetsPutSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutSharesGroupsWriters(Response):
    users: List[_ResponsePermissionSetsPutSharesGroupsWritersUsers]
    groups: List[_ResponsePermissionSetsPutSharesGroupsWritersGroups]

class _ResponsePermissionSetsPutSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutSharesGroupsOwners(Response):
    users: List[_ResponsePermissionSetsPutSharesGroupsOwnersUsers]
    groups: List[_ResponsePermissionSetsPutSharesGroupsOwnersGroups]

class _ResponsePermissionSetsPutSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponsePermissionSetsListDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponsePermissionSetsPutTransfer(Response):
    dependencies: List[_ResponsePermissionSetsPutTransferDependencies]

class _ResponsePermissionSetsPutTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponsePermissionSetsPutArchive(Response):
    id: int
    name: str
    description: str
    author: _ResponsePermissionSetsPutArchiveAuthor
    created_at: str
    updated_at: str
    archived: str

class _ResponsePermissionSetsPutArchiveAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponsePermissionSetsListUsersPermissions(Response):
    resource_name: str
    read: bool
    write: bool
    manage: bool

class _ResponsePermissionSetsListResources(Response):
    permission_set_id: int
    name: str
    description: str
    created_at: str
    updated_at: str

class _ResponsePermissionSetsPostResources(Response):
    permission_set_id: int
    name: str
    description: str
    created_at: str
    updated_at: str

class _ResponsePermissionSetsGetResources(Response):
    permission_set_id: int
    name: str
    description: str
    created_at: str
    updated_at: str

class _ResponsePermissionSetsPatchResources(Response):
    permission_set_id: int
    name: str
    description: str
    created_at: str
    updated_at: str

class _ResponsePermissionSetsListResourcesShares(Response):
    readers: _ResponsePermissionSetsListResourcesSharesReaders
    writers: _ResponsePermissionSetsListResourcesSharesWriters
    owners: _ResponsePermissionSetsListResourcesSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponsePermissionSetsListResourcesSharesReaders(Response):
    users: List[_ResponsePermissionSetsListResourcesSharesReadersUsers]
    groups: List[_ResponsePermissionSetsListResourcesSharesReadersGroups]

class _ResponsePermissionSetsListResourcesSharesReadersUsers(Response):
    id: int
    name: str

class _ResponsePermissionSetsListResourcesSharesReadersGroups(Response):
    id: int
    name: str

class _ResponsePermissionSetsListResourcesSharesWriters(Response):
    users: List[_ResponsePermissionSetsListResourcesSharesWritersUsers]
    groups: List[_ResponsePermissionSetsListResourcesSharesWritersGroups]

class _ResponsePermissionSetsListResourcesSharesWritersUsers(Response):
    id: int
    name: str

class _ResponsePermissionSetsListResourcesSharesWritersGroups(Response):
    id: int
    name: str

class _ResponsePermissionSetsListResourcesSharesOwners(Response):
    users: List[_ResponsePermissionSetsListResourcesSharesOwnersUsers]
    groups: List[_ResponsePermissionSetsListResourcesSharesOwnersGroups]

class _ResponsePermissionSetsListResourcesSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponsePermissionSetsListResourcesSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutResourcesSharesUsers(Response):
    readers: _ResponsePermissionSetsPutResourcesSharesUsersReaders
    writers: _ResponsePermissionSetsPutResourcesSharesUsersWriters
    owners: _ResponsePermissionSetsPutResourcesSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponsePermissionSetsPutResourcesSharesUsersReaders(Response):
    users: List[_ResponsePermissionSetsPutResourcesSharesUsersReadersUsers]
    groups: List[_ResponsePermissionSetsPutResourcesSharesUsersReadersGroups]

class _ResponsePermissionSetsPutResourcesSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutResourcesSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutResourcesSharesUsersWriters(Response):
    users: List[_ResponsePermissionSetsPutResourcesSharesUsersWritersUsers]
    groups: List[_ResponsePermissionSetsPutResourcesSharesUsersWritersGroups]

class _ResponsePermissionSetsPutResourcesSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutResourcesSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutResourcesSharesUsersOwners(Response):
    users: List[_ResponsePermissionSetsPutResourcesSharesUsersOwnersUsers]
    groups: List[_ResponsePermissionSetsPutResourcesSharesUsersOwnersGroups]

class _ResponsePermissionSetsPutResourcesSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutResourcesSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutResourcesSharesGroups(Response):
    readers: _ResponsePermissionSetsPutResourcesSharesGroupsReaders
    writers: _ResponsePermissionSetsPutResourcesSharesGroupsWriters
    owners: _ResponsePermissionSetsPutResourcesSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponsePermissionSetsPutResourcesSharesGroupsReaders(Response):
    users: List[_ResponsePermissionSetsPutResourcesSharesGroupsReadersUsers]
    groups: List[_ResponsePermissionSetsPutResourcesSharesGroupsReadersGroups]

class _ResponsePermissionSetsPutResourcesSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutResourcesSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutResourcesSharesGroupsWriters(Response):
    users: List[_ResponsePermissionSetsPutResourcesSharesGroupsWritersUsers]
    groups: List[_ResponsePermissionSetsPutResourcesSharesGroupsWritersGroups]

class _ResponsePermissionSetsPutResourcesSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutResourcesSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutResourcesSharesGroupsOwners(Response):
    users: List[_ResponsePermissionSetsPutResourcesSharesGroupsOwnersUsers]
    groups: List[_ResponsePermissionSetsPutResourcesSharesGroupsOwnersGroups]

class _ResponsePermissionSetsPutResourcesSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponsePermissionSetsPutResourcesSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponsePredictionsList(Response):
    id: int
    model_id: int
    scored_table_id: int
    scored_table_name: str
    output_table_name: str
    state: str
    error: str
    started_at: str
    finished_at: str
    last_run: _ResponsePredictionsListLastRun

class _ResponsePredictionsListLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponsePredictionsGet(Response):
    id: int
    model_id: int
    scored_table_id: int
    scored_table_name: str
    output_table_name: str
    state: str
    error: str
    started_at: str
    finished_at: str
    last_run: _ResponsePredictionsGetLastRun
    scored_tables: List[_ResponsePredictionsGetScoredTables]
    schedule: _ResponsePredictionsGetSchedule
    limiting_sql: str
    primary_key: List[str]

class _ResponsePredictionsGetLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponsePredictionsGetScoredTables(Response):
    id: int
    schema: str
    name: str
    created_at: str
    score_stats: List[_ResponsePredictionsGetScoredTablesScoreStats]

class _ResponsePredictionsGetScoredTablesScoreStats(Response):
    score_name: str
    histogram: List[int]
    avg_score: float
    min_score: float
    max_score: float

class _ResponsePredictionsGetSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponsePredictionsListSchedules(Response):
    id: int
    schedule: _ResponsePredictionsListSchedulesSchedule
    score_on_model_build: bool

class _ResponsePredictionsListSchedulesSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseProjectsList(Response):
    id: int
    author: _ResponseProjectsListAuthor
    name: str
    description: str
    users: List[_ResponseProjectsListUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseProjectsListAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseProjectsListUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseProjectsPost(Response):
    id: int
    author: _ResponseProjectsPostAuthor
    name: str
    description: str
    users: List[_ResponseProjectsPostUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    tables: List[_ResponseProjectsPostTables]
    surveys: List[_ResponseProjectsPostSurveys]
    scripts: List[_ResponseProjectsPostScripts]
    imports: List[_ResponseProjectsPostImports]
    exports: List[_ResponseProjectsPostExports]
    models: List[_ResponseProjectsPostModels]
    notebooks: List[_ResponseProjectsPostNotebooks]
    services: List[_ResponseProjectsPostServices]
    workflows: List[_ResponseProjectsPostWorkflows]
    reports: List[_ResponseProjectsPostReports]
    script_templates: List[_ResponseProjectsPostScriptTemplates]
    files: List[_ResponseProjectsPostFiles]
    enhancements: List[_ResponseProjectsPostEnhancements]
    projects: List[_ResponseProjectsPostProjects]
    all_objects: List[_ResponseProjectsPostAllObjects]
    note: str
    can_current_user_enable_auto_share: bool
    hidden: bool
    archived: str
    parent_project: _ResponseProjectsPostParentProject
    my_permission_level: str

class _ResponseProjectsPostAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseProjectsPostUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseProjectsPostTables(Response):
    schema: str
    name: str
    row_count: int
    column_count: int
    created_at: str
    updated_at: str

class _ResponseProjectsPostSurveys(Response):
    id: int
    created_at: str
    updated_at: str

class _ResponseProjectsPostScripts(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    type: str
    finished_at: str
    state: str
    last_run: _ResponseProjectsPostScriptsLastRun

class _ResponseProjectsPostScriptsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPostImports(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    type: str
    finished_at: str
    state: str
    last_run: _ResponseProjectsPostImportsLastRun

class _ResponseProjectsPostImportsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPostExports(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    type: str
    finished_at: str
    state: str
    last_run: _ResponseProjectsPostExportsLastRun

class _ResponseProjectsPostExportsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPostModels(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    state: str

class _ResponseProjectsPostNotebooks(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    current_deployment_id: int
    last_deploy: _ResponseProjectsPostNotebooksLastDeploy

class _ResponseProjectsPostNotebooksLastDeploy(Response):
    state: str
    updated_at: str

class _ResponseProjectsPostServices(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    current_deployment_id: int
    last_deploy: _ResponseProjectsPostServicesLastDeploy

class _ResponseProjectsPostServicesLastDeploy(Response):
    state: str
    updated_at: str

class _ResponseProjectsPostWorkflows(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    state: str
    last_execution: _ResponseProjectsPostWorkflowsLastExecution

class _ResponseProjectsPostWorkflowsLastExecution(Response):
    state: str
    updated_at: str

class _ResponseProjectsPostReports(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    state: str

class _ResponseProjectsPostScriptTemplates(Response):
    id: int
    created_at: str
    updated_at: str
    name: str

class _ResponseProjectsPostFiles(Response):
    id: int
    created_at: str
    updated_at: str
    file_name: str
    file_size: int
    expired: bool

class _ResponseProjectsPostEnhancements(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    last_run: _ResponseProjectsPostEnhancementsLastRun

class _ResponseProjectsPostEnhancementsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPostProjects(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    description: str

class _ResponseProjectsPostAllObjects(Response):
    project_id: int
    object_id: int
    object_type: str
    fco_type: str
    sub_type: str
    name: str
    icon: str
    author: str
    updated_at: str
    auto_share: bool
    archived: str
    hidden: bool
    my_permission_level: str

class _ResponseProjectsPostParentProject(Response):
    id: int
    name: int

class _ResponseProjectsPostClone(Response):
    id: int
    author: _ResponseProjectsPostCloneAuthor
    name: str
    description: str
    users: List[_ResponseProjectsPostCloneUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    tables: List[_ResponseProjectsPostCloneTables]
    surveys: List[_ResponseProjectsPostCloneSurveys]
    scripts: List[_ResponseProjectsPostCloneScripts]
    imports: List[_ResponseProjectsPostCloneImports]
    exports: List[_ResponseProjectsPostCloneExports]
    models: List[_ResponseProjectsPostCloneModels]
    notebooks: List[_ResponseProjectsPostCloneNotebooks]
    services: List[_ResponseProjectsPostCloneServices]
    workflows: List[_ResponseProjectsPostCloneWorkflows]
    reports: List[_ResponseProjectsPostCloneReports]
    script_templates: List[_ResponseProjectsPostCloneScriptTemplates]
    files: List[_ResponseProjectsPostCloneFiles]
    enhancements: List[_ResponseProjectsPostCloneEnhancements]
    projects: List[_ResponseProjectsPostCloneProjects]
    all_objects: List[_ResponseProjectsPostCloneAllObjects]
    note: str
    can_current_user_enable_auto_share: bool
    hidden: bool
    archived: str
    parent_project: _ResponseProjectsPostCloneParentProject
    my_permission_level: str

class _ResponseProjectsPostCloneAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseProjectsPostCloneUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseProjectsPostCloneTables(Response):
    schema: str
    name: str
    row_count: int
    column_count: int
    created_at: str
    updated_at: str

class _ResponseProjectsPostCloneSurveys(Response):
    id: int
    created_at: str
    updated_at: str

class _ResponseProjectsPostCloneScripts(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    type: str
    finished_at: str
    state: str
    last_run: _ResponseProjectsPostCloneScriptsLastRun

class _ResponseProjectsPostCloneScriptsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPostCloneImports(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    type: str
    finished_at: str
    state: str
    last_run: _ResponseProjectsPostCloneImportsLastRun

class _ResponseProjectsPostCloneImportsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPostCloneExports(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    type: str
    finished_at: str
    state: str
    last_run: _ResponseProjectsPostCloneExportsLastRun

class _ResponseProjectsPostCloneExportsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPostCloneModels(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    state: str

class _ResponseProjectsPostCloneNotebooks(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    current_deployment_id: int
    last_deploy: _ResponseProjectsPostCloneNotebooksLastDeploy

class _ResponseProjectsPostCloneNotebooksLastDeploy(Response):
    state: str
    updated_at: str

class _ResponseProjectsPostCloneServices(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    current_deployment_id: int
    last_deploy: _ResponseProjectsPostCloneServicesLastDeploy

class _ResponseProjectsPostCloneServicesLastDeploy(Response):
    state: str
    updated_at: str

class _ResponseProjectsPostCloneWorkflows(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    state: str
    last_execution: _ResponseProjectsPostCloneWorkflowsLastExecution

class _ResponseProjectsPostCloneWorkflowsLastExecution(Response):
    state: str
    updated_at: str

class _ResponseProjectsPostCloneReports(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    state: str

class _ResponseProjectsPostCloneScriptTemplates(Response):
    id: int
    created_at: str
    updated_at: str
    name: str

class _ResponseProjectsPostCloneFiles(Response):
    id: int
    created_at: str
    updated_at: str
    file_name: str
    file_size: int
    expired: bool

class _ResponseProjectsPostCloneEnhancements(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    last_run: _ResponseProjectsPostCloneEnhancementsLastRun

class _ResponseProjectsPostCloneEnhancementsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPostCloneProjects(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    description: str

class _ResponseProjectsPostCloneAllObjects(Response):
    project_id: int
    object_id: int
    object_type: str
    fco_type: str
    sub_type: str
    name: str
    icon: str
    author: str
    updated_at: str
    auto_share: bool
    archived: str
    hidden: bool
    my_permission_level: str

class _ResponseProjectsPostCloneParentProject(Response):
    id: int
    name: int

class _ResponseProjectsGet(Response):
    id: int
    author: _ResponseProjectsGetAuthor
    name: str
    description: str
    users: List[_ResponseProjectsGetUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    tables: List[_ResponseProjectsGetTables]
    surveys: List[_ResponseProjectsGetSurveys]
    scripts: List[_ResponseProjectsGetScripts]
    imports: List[_ResponseProjectsGetImports]
    exports: List[_ResponseProjectsGetExports]
    models: List[_ResponseProjectsGetModels]
    notebooks: List[_ResponseProjectsGetNotebooks]
    services: List[_ResponseProjectsGetServices]
    workflows: List[_ResponseProjectsGetWorkflows]
    reports: List[_ResponseProjectsGetReports]
    script_templates: List[_ResponseProjectsGetScriptTemplates]
    files: List[_ResponseProjectsGetFiles]
    enhancements: List[_ResponseProjectsGetEnhancements]
    projects: List[_ResponseProjectsGetProjects]
    all_objects: List[_ResponseProjectsGetAllObjects]
    note: str
    can_current_user_enable_auto_share: bool
    hidden: bool
    archived: str
    parent_project: _ResponseProjectsGetParentProject
    my_permission_level: str

class _ResponseProjectsGetAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseProjectsGetUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseProjectsGetTables(Response):
    schema: str
    name: str
    row_count: int
    column_count: int
    created_at: str
    updated_at: str

class _ResponseProjectsGetSurveys(Response):
    id: int
    created_at: str
    updated_at: str

class _ResponseProjectsGetScripts(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    type: str
    finished_at: str
    state: str
    last_run: _ResponseProjectsGetScriptsLastRun

class _ResponseProjectsGetScriptsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsGetImports(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    type: str
    finished_at: str
    state: str
    last_run: _ResponseProjectsGetImportsLastRun

class _ResponseProjectsGetImportsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsGetExports(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    type: str
    finished_at: str
    state: str
    last_run: _ResponseProjectsGetExportsLastRun

class _ResponseProjectsGetExportsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsGetModels(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    state: str

class _ResponseProjectsGetNotebooks(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    current_deployment_id: int
    last_deploy: _ResponseProjectsGetNotebooksLastDeploy

class _ResponseProjectsGetNotebooksLastDeploy(Response):
    state: str
    updated_at: str

class _ResponseProjectsGetServices(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    current_deployment_id: int
    last_deploy: _ResponseProjectsGetServicesLastDeploy

class _ResponseProjectsGetServicesLastDeploy(Response):
    state: str
    updated_at: str

class _ResponseProjectsGetWorkflows(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    state: str
    last_execution: _ResponseProjectsGetWorkflowsLastExecution

class _ResponseProjectsGetWorkflowsLastExecution(Response):
    state: str
    updated_at: str

class _ResponseProjectsGetReports(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    state: str

class _ResponseProjectsGetScriptTemplates(Response):
    id: int
    created_at: str
    updated_at: str
    name: str

class _ResponseProjectsGetFiles(Response):
    id: int
    created_at: str
    updated_at: str
    file_name: str
    file_size: int
    expired: bool

class _ResponseProjectsGetEnhancements(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    last_run: _ResponseProjectsGetEnhancementsLastRun

class _ResponseProjectsGetEnhancementsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsGetProjects(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    description: str

class _ResponseProjectsGetAllObjects(Response):
    project_id: int
    object_id: int
    object_type: str
    fco_type: str
    sub_type: str
    name: str
    icon: str
    author: str
    updated_at: str
    auto_share: bool
    archived: str
    hidden: bool
    my_permission_level: str

class _ResponseProjectsGetParentProject(Response):
    id: int
    name: int

class _ResponseProjectsPut(Response):
    id: int
    author: _ResponseProjectsPutAuthor
    name: str
    description: str
    users: List[_ResponseProjectsPutUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    tables: List[_ResponseProjectsPutTables]
    surveys: List[_ResponseProjectsPutSurveys]
    scripts: List[_ResponseProjectsPutScripts]
    imports: List[_ResponseProjectsPutImports]
    exports: List[_ResponseProjectsPutExports]
    models: List[_ResponseProjectsPutModels]
    notebooks: List[_ResponseProjectsPutNotebooks]
    services: List[_ResponseProjectsPutServices]
    workflows: List[_ResponseProjectsPutWorkflows]
    reports: List[_ResponseProjectsPutReports]
    script_templates: List[_ResponseProjectsPutScriptTemplates]
    files: List[_ResponseProjectsPutFiles]
    enhancements: List[_ResponseProjectsPutEnhancements]
    projects: List[_ResponseProjectsPutProjects]
    all_objects: List[_ResponseProjectsPutAllObjects]
    note: str
    can_current_user_enable_auto_share: bool
    hidden: bool
    archived: str
    parent_project: _ResponseProjectsPutParentProject
    my_permission_level: str

class _ResponseProjectsPutAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseProjectsPutUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseProjectsPutTables(Response):
    schema: str
    name: str
    row_count: int
    column_count: int
    created_at: str
    updated_at: str

class _ResponseProjectsPutSurveys(Response):
    id: int
    created_at: str
    updated_at: str

class _ResponseProjectsPutScripts(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    type: str
    finished_at: str
    state: str
    last_run: _ResponseProjectsPutScriptsLastRun

class _ResponseProjectsPutScriptsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutImports(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    type: str
    finished_at: str
    state: str
    last_run: _ResponseProjectsPutImportsLastRun

class _ResponseProjectsPutImportsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutExports(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    type: str
    finished_at: str
    state: str
    last_run: _ResponseProjectsPutExportsLastRun

class _ResponseProjectsPutExportsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutModels(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    state: str

class _ResponseProjectsPutNotebooks(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    current_deployment_id: int
    last_deploy: _ResponseProjectsPutNotebooksLastDeploy

class _ResponseProjectsPutNotebooksLastDeploy(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutServices(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    current_deployment_id: int
    last_deploy: _ResponseProjectsPutServicesLastDeploy

class _ResponseProjectsPutServicesLastDeploy(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutWorkflows(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    state: str
    last_execution: _ResponseProjectsPutWorkflowsLastExecution

class _ResponseProjectsPutWorkflowsLastExecution(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutReports(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    state: str

class _ResponseProjectsPutScriptTemplates(Response):
    id: int
    created_at: str
    updated_at: str
    name: str

class _ResponseProjectsPutFiles(Response):
    id: int
    created_at: str
    updated_at: str
    file_name: str
    file_size: int
    expired: bool

class _ResponseProjectsPutEnhancements(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    last_run: _ResponseProjectsPutEnhancementsLastRun

class _ResponseProjectsPutEnhancementsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutProjects(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    description: str

class _ResponseProjectsPutAllObjects(Response):
    project_id: int
    object_id: int
    object_type: str
    fco_type: str
    sub_type: str
    name: str
    icon: str
    author: str
    updated_at: str
    auto_share: bool
    archived: str
    hidden: bool
    my_permission_level: str

class _ResponseProjectsPutParentProject(Response):
    id: int
    name: int

class _ResponseProjectsPutAutoShare(Response):
    id: int
    author: _ResponseProjectsPutAutoShareAuthor
    name: str
    description: str
    users: List[_ResponseProjectsPutAutoShareUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    tables: List[_ResponseProjectsPutAutoShareTables]
    surveys: List[_ResponseProjectsPutAutoShareSurveys]
    scripts: List[_ResponseProjectsPutAutoShareScripts]
    imports: List[_ResponseProjectsPutAutoShareImports]
    exports: List[_ResponseProjectsPutAutoShareExports]
    models: List[_ResponseProjectsPutAutoShareModels]
    notebooks: List[_ResponseProjectsPutAutoShareNotebooks]
    services: List[_ResponseProjectsPutAutoShareServices]
    workflows: List[_ResponseProjectsPutAutoShareWorkflows]
    reports: List[_ResponseProjectsPutAutoShareReports]
    script_templates: List[_ResponseProjectsPutAutoShareScriptTemplates]
    files: List[_ResponseProjectsPutAutoShareFiles]
    enhancements: List[_ResponseProjectsPutAutoShareEnhancements]
    projects: List[_ResponseProjectsPutAutoShareProjects]
    all_objects: List[_ResponseProjectsPutAutoShareAllObjects]
    note: str
    can_current_user_enable_auto_share: bool
    hidden: bool
    archived: str
    parent_project: _ResponseProjectsPutAutoShareParentProject
    my_permission_level: str

class _ResponseProjectsPutAutoShareAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseProjectsPutAutoShareUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseProjectsPutAutoShareTables(Response):
    schema: str
    name: str
    row_count: int
    column_count: int
    created_at: str
    updated_at: str

class _ResponseProjectsPutAutoShareSurveys(Response):
    id: int
    created_at: str
    updated_at: str

class _ResponseProjectsPutAutoShareScripts(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    type: str
    finished_at: str
    state: str
    last_run: _ResponseProjectsPutAutoShareScriptsLastRun

class _ResponseProjectsPutAutoShareScriptsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutAutoShareImports(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    type: str
    finished_at: str
    state: str
    last_run: _ResponseProjectsPutAutoShareImportsLastRun

class _ResponseProjectsPutAutoShareImportsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutAutoShareExports(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    type: str
    finished_at: str
    state: str
    last_run: _ResponseProjectsPutAutoShareExportsLastRun

class _ResponseProjectsPutAutoShareExportsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutAutoShareModels(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    state: str

class _ResponseProjectsPutAutoShareNotebooks(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    current_deployment_id: int
    last_deploy: _ResponseProjectsPutAutoShareNotebooksLastDeploy

class _ResponseProjectsPutAutoShareNotebooksLastDeploy(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutAutoShareServices(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    current_deployment_id: int
    last_deploy: _ResponseProjectsPutAutoShareServicesLastDeploy

class _ResponseProjectsPutAutoShareServicesLastDeploy(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutAutoShareWorkflows(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    state: str
    last_execution: _ResponseProjectsPutAutoShareWorkflowsLastExecution

class _ResponseProjectsPutAutoShareWorkflowsLastExecution(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutAutoShareReports(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    state: str

class _ResponseProjectsPutAutoShareScriptTemplates(Response):
    id: int
    created_at: str
    updated_at: str
    name: str

class _ResponseProjectsPutAutoShareFiles(Response):
    id: int
    created_at: str
    updated_at: str
    file_name: str
    file_size: int
    expired: bool

class _ResponseProjectsPutAutoShareEnhancements(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    last_run: _ResponseProjectsPutAutoShareEnhancementsLastRun

class _ResponseProjectsPutAutoShareEnhancementsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutAutoShareProjects(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    description: str

class _ResponseProjectsPutAutoShareAllObjects(Response):
    project_id: int
    object_id: int
    object_type: str
    fco_type: str
    sub_type: str
    name: str
    icon: str
    author: str
    updated_at: str
    auto_share: bool
    archived: str
    hidden: bool
    my_permission_level: str

class _ResponseProjectsPutAutoShareParentProject(Response):
    id: int
    name: int

class _ResponseProjectsListShares(Response):
    readers: _ResponseProjectsListSharesReaders
    writers: _ResponseProjectsListSharesWriters
    owners: _ResponseProjectsListSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseProjectsListSharesReaders(Response):
    users: List[_ResponseProjectsListSharesReadersUsers]
    groups: List[_ResponseProjectsListSharesReadersGroups]

class _ResponseProjectsListSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseProjectsListSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseProjectsListSharesWriters(Response):
    users: List[_ResponseProjectsListSharesWritersUsers]
    groups: List[_ResponseProjectsListSharesWritersGroups]

class _ResponseProjectsListSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseProjectsListSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseProjectsListSharesOwners(Response):
    users: List[_ResponseProjectsListSharesOwnersUsers]
    groups: List[_ResponseProjectsListSharesOwnersGroups]

class _ResponseProjectsListSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseProjectsListSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseProjectsPutSharesUsers(Response):
    readers: _ResponseProjectsPutSharesUsersReaders
    writers: _ResponseProjectsPutSharesUsersWriters
    owners: _ResponseProjectsPutSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseProjectsPutSharesUsersReaders(Response):
    users: List[_ResponseProjectsPutSharesUsersReadersUsers]
    groups: List[_ResponseProjectsPutSharesUsersReadersGroups]

class _ResponseProjectsPutSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseProjectsPutSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseProjectsPutSharesUsersWriters(Response):
    users: List[_ResponseProjectsPutSharesUsersWritersUsers]
    groups: List[_ResponseProjectsPutSharesUsersWritersGroups]

class _ResponseProjectsPutSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseProjectsPutSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseProjectsPutSharesUsersOwners(Response):
    users: List[_ResponseProjectsPutSharesUsersOwnersUsers]
    groups: List[_ResponseProjectsPutSharesUsersOwnersGroups]

class _ResponseProjectsPutSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseProjectsPutSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseProjectsPutSharesGroups(Response):
    readers: _ResponseProjectsPutSharesGroupsReaders
    writers: _ResponseProjectsPutSharesGroupsWriters
    owners: _ResponseProjectsPutSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseProjectsPutSharesGroupsReaders(Response):
    users: List[_ResponseProjectsPutSharesGroupsReadersUsers]
    groups: List[_ResponseProjectsPutSharesGroupsReadersGroups]

class _ResponseProjectsPutSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseProjectsPutSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseProjectsPutSharesGroupsWriters(Response):
    users: List[_ResponseProjectsPutSharesGroupsWritersUsers]
    groups: List[_ResponseProjectsPutSharesGroupsWritersGroups]

class _ResponseProjectsPutSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseProjectsPutSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseProjectsPutSharesGroupsOwners(Response):
    users: List[_ResponseProjectsPutSharesGroupsOwnersUsers]
    groups: List[_ResponseProjectsPutSharesGroupsOwnersGroups]

class _ResponseProjectsPutSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseProjectsPutSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseProjectsListDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseProjectsPutTransfer(Response):
    dependencies: List[_ResponseProjectsPutTransferDependencies]

class _ResponseProjectsPutTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseProjectsPutArchive(Response):
    id: int
    author: _ResponseProjectsPutArchiveAuthor
    name: str
    description: str
    users: List[_ResponseProjectsPutArchiveUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    tables: List[_ResponseProjectsPutArchiveTables]
    surveys: List[_ResponseProjectsPutArchiveSurveys]
    scripts: List[_ResponseProjectsPutArchiveScripts]
    imports: List[_ResponseProjectsPutArchiveImports]
    exports: List[_ResponseProjectsPutArchiveExports]
    models: List[_ResponseProjectsPutArchiveModels]
    notebooks: List[_ResponseProjectsPutArchiveNotebooks]
    services: List[_ResponseProjectsPutArchiveServices]
    workflows: List[_ResponseProjectsPutArchiveWorkflows]
    reports: List[_ResponseProjectsPutArchiveReports]
    script_templates: List[_ResponseProjectsPutArchiveScriptTemplates]
    files: List[_ResponseProjectsPutArchiveFiles]
    enhancements: List[_ResponseProjectsPutArchiveEnhancements]
    projects: List[_ResponseProjectsPutArchiveProjects]
    all_objects: List[_ResponseProjectsPutArchiveAllObjects]
    note: str
    can_current_user_enable_auto_share: bool
    hidden: bool
    archived: str
    parent_project: _ResponseProjectsPutArchiveParentProject
    my_permission_level: str

class _ResponseProjectsPutArchiveAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseProjectsPutArchiveUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseProjectsPutArchiveTables(Response):
    schema: str
    name: str
    row_count: int
    column_count: int
    created_at: str
    updated_at: str

class _ResponseProjectsPutArchiveSurveys(Response):
    id: int
    created_at: str
    updated_at: str

class _ResponseProjectsPutArchiveScripts(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    type: str
    finished_at: str
    state: str
    last_run: _ResponseProjectsPutArchiveScriptsLastRun

class _ResponseProjectsPutArchiveScriptsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutArchiveImports(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    type: str
    finished_at: str
    state: str
    last_run: _ResponseProjectsPutArchiveImportsLastRun

class _ResponseProjectsPutArchiveImportsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutArchiveExports(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    type: str
    finished_at: str
    state: str
    last_run: _ResponseProjectsPutArchiveExportsLastRun

class _ResponseProjectsPutArchiveExportsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutArchiveModels(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    state: str

class _ResponseProjectsPutArchiveNotebooks(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    current_deployment_id: int
    last_deploy: _ResponseProjectsPutArchiveNotebooksLastDeploy

class _ResponseProjectsPutArchiveNotebooksLastDeploy(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutArchiveServices(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    current_deployment_id: int
    last_deploy: _ResponseProjectsPutArchiveServicesLastDeploy

class _ResponseProjectsPutArchiveServicesLastDeploy(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutArchiveWorkflows(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    state: str
    last_execution: _ResponseProjectsPutArchiveWorkflowsLastExecution

class _ResponseProjectsPutArchiveWorkflowsLastExecution(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutArchiveReports(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    state: str

class _ResponseProjectsPutArchiveScriptTemplates(Response):
    id: int
    created_at: str
    updated_at: str
    name: str

class _ResponseProjectsPutArchiveFiles(Response):
    id: int
    created_at: str
    updated_at: str
    file_name: str
    file_size: int
    expired: bool

class _ResponseProjectsPutArchiveEnhancements(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    last_run: _ResponseProjectsPutArchiveEnhancementsLastRun

class _ResponseProjectsPutArchiveEnhancementsLastRun(Response):
    state: str
    updated_at: str

class _ResponseProjectsPutArchiveProjects(Response):
    id: int
    created_at: str
    updated_at: str
    name: str
    description: str

class _ResponseProjectsPutArchiveAllObjects(Response):
    project_id: int
    object_id: int
    object_type: str
    fco_type: str
    sub_type: str
    name: str
    icon: str
    author: str
    updated_at: str
    auto_share: bool
    archived: str
    hidden: bool
    my_permission_level: str

class _ResponseProjectsPutArchiveParentProject(Response):
    id: int
    name: int

class _ResponseProjectsListParentProjects(Response):
    id: int
    author: _ResponseProjectsListParentProjectsAuthor
    name: str
    description: str
    users: List[_ResponseProjectsListParentProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseProjectsListParentProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseProjectsListParentProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseQueriesList(Response):
    id: int
    database: int
    sql: str
    credential: int
    result_rows: List[List]
    result_columns: List[str]
    error: str
    started_at: str
    finished_at: str
    state: str
    script_id: int
    exception: str
    created_at: str
    updated_at: str
    last_run_id: int
    archived: str
    preview_rows: int
    report_id: int

class _ResponseQueriesPost(Response):
    id: int
    database: int
    sql: str
    credential: int
    result_rows: List[List]
    result_columns: List[str]
    error: str
    started_at: str
    finished_at: str
    state: str
    script_id: int
    exception: str
    created_at: str
    updated_at: str
    last_run_id: int
    hidden: bool
    archived: str
    my_permission_level: str
    interactive: bool
    preview_rows: int
    include_header: bool
    compression: str
    column_delimiter: str
    unquoted: bool
    filename_prefix: str
    report_id: int

class _ResponseQueriesPostRuns(Response):
    id: int
    query_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseQueriesListRuns(Response):
    id: int
    query_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseQueriesGetRuns(Response):
    id: int
    query_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseQueriesListRunsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseQueriesPutScripts(Response):
    id: int
    database: int
    sql: str
    credential: int
    result_rows: List[List]
    result_columns: List[str]
    error: str
    started_at: str
    finished_at: str
    state: str
    script_id: int
    exception: str
    created_at: str
    updated_at: str
    last_run_id: int
    hidden: bool
    archived: str
    name: str
    author: _ResponseQueriesPutScriptsAuthor
    report_id: int

class _ResponseQueriesPutScriptsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseQueriesGet(Response):
    id: int
    database: int
    sql: str
    credential: int
    result_rows: List[List]
    result_columns: List[str]
    error: str
    started_at: str
    finished_at: str
    state: str
    script_id: int
    exception: str
    created_at: str
    updated_at: str
    last_run_id: int
    hidden: bool
    archived: str
    name: str
    author: _ResponseQueriesGetAuthor
    report_id: int

class _ResponseQueriesGetAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseQueriesDelete(Response):
    id: int
    database: int
    sql: str
    credential: int
    result_rows: List[List]
    result_columns: List[str]
    error: str
    started_at: str
    finished_at: str
    state: str
    script_id: int
    exception: str
    created_at: str
    updated_at: str
    last_run_id: int
    hidden: bool
    archived: str
    name: str
    author: _ResponseQueriesDeleteAuthor
    report_id: int

class _ResponseQueriesDeleteAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseRemoteHostsList(Response):
    id: int
    name: str
    type: str
    url: str

class _ResponseRemoteHostsPost(Response):
    id: int
    name: str
    type: str
    url: str
    description: str
    my_permission_level: str
    user: _ResponseRemoteHostsPostUser
    created_at: str
    updated_at: str

class _ResponseRemoteHostsPostUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseRemoteHostsGet(Response):
    id: int
    name: str
    type: str
    url: str
    description: str
    my_permission_level: str
    user: _ResponseRemoteHostsGetUser
    created_at: str
    updated_at: str

class _ResponseRemoteHostsGetUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseRemoteHostsPut(Response):
    id: int
    name: str
    type: str
    url: str
    description: str
    my_permission_level: str
    user: _ResponseRemoteHostsPutUser
    created_at: str
    updated_at: str

class _ResponseRemoteHostsPutUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseRemoteHostsPatch(Response):
    id: int
    name: str
    type: str
    url: str
    description: str
    my_permission_level: str
    user: _ResponseRemoteHostsPatchUser
    created_at: str
    updated_at: str

class _ResponseRemoteHostsPatchUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseRemoteHostsListShares(Response):
    readers: _ResponseRemoteHostsListSharesReaders
    writers: _ResponseRemoteHostsListSharesWriters
    owners: _ResponseRemoteHostsListSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseRemoteHostsListSharesReaders(Response):
    users: List[_ResponseRemoteHostsListSharesReadersUsers]
    groups: List[_ResponseRemoteHostsListSharesReadersGroups]

class _ResponseRemoteHostsListSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseRemoteHostsListSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseRemoteHostsListSharesWriters(Response):
    users: List[_ResponseRemoteHostsListSharesWritersUsers]
    groups: List[_ResponseRemoteHostsListSharesWritersGroups]

class _ResponseRemoteHostsListSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseRemoteHostsListSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseRemoteHostsListSharesOwners(Response):
    users: List[_ResponseRemoteHostsListSharesOwnersUsers]
    groups: List[_ResponseRemoteHostsListSharesOwnersGroups]

class _ResponseRemoteHostsListSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseRemoteHostsListSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseRemoteHostsPutSharesUsers(Response):
    readers: _ResponseRemoteHostsPutSharesUsersReaders
    writers: _ResponseRemoteHostsPutSharesUsersWriters
    owners: _ResponseRemoteHostsPutSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseRemoteHostsPutSharesUsersReaders(Response):
    users: List[_ResponseRemoteHostsPutSharesUsersReadersUsers]
    groups: List[_ResponseRemoteHostsPutSharesUsersReadersGroups]

class _ResponseRemoteHostsPutSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseRemoteHostsPutSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseRemoteHostsPutSharesUsersWriters(Response):
    users: List[_ResponseRemoteHostsPutSharesUsersWritersUsers]
    groups: List[_ResponseRemoteHostsPutSharesUsersWritersGroups]

class _ResponseRemoteHostsPutSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseRemoteHostsPutSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseRemoteHostsPutSharesUsersOwners(Response):
    users: List[_ResponseRemoteHostsPutSharesUsersOwnersUsers]
    groups: List[_ResponseRemoteHostsPutSharesUsersOwnersGroups]

class _ResponseRemoteHostsPutSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseRemoteHostsPutSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseRemoteHostsPutSharesGroups(Response):
    readers: _ResponseRemoteHostsPutSharesGroupsReaders
    writers: _ResponseRemoteHostsPutSharesGroupsWriters
    owners: _ResponseRemoteHostsPutSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseRemoteHostsPutSharesGroupsReaders(Response):
    users: List[_ResponseRemoteHostsPutSharesGroupsReadersUsers]
    groups: List[_ResponseRemoteHostsPutSharesGroupsReadersGroups]

class _ResponseRemoteHostsPutSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseRemoteHostsPutSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseRemoteHostsPutSharesGroupsWriters(Response):
    users: List[_ResponseRemoteHostsPutSharesGroupsWritersUsers]
    groups: List[_ResponseRemoteHostsPutSharesGroupsWritersGroups]

class _ResponseRemoteHostsPutSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseRemoteHostsPutSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseRemoteHostsPutSharesGroupsOwners(Response):
    users: List[_ResponseRemoteHostsPutSharesGroupsOwnersUsers]
    groups: List[_ResponseRemoteHostsPutSharesGroupsOwnersGroups]

class _ResponseRemoteHostsPutSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseRemoteHostsPutSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseRemoteHostsListDataSets(Response):
    name: str
    full_path: bool

class _ResponseReportsList(Response):
    id: int
    name: str
    user: _ResponseReportsListUser
    created_at: str
    updated_at: str
    type: str
    archived: str
    projects: List[_ResponseReportsListProjects]
    state: str
    finished_at: str
    viz_updated_at: str
    script: _ResponseReportsListScript
    job_path: str
    tableau_id: int
    template_id: int
    auth_thumbnail_url: str
    last_run: _ResponseReportsListLastRun

class _ResponseReportsListUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsListProjects(Response):
    id: int
    author: _ResponseReportsListProjectsAuthor
    name: str
    description: str
    users: List[_ResponseReportsListProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseReportsListScript(Response):
    id: int
    name: str
    sql: str

class _ResponseReportsListLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseReportsPost(Response):
    id: int
    name: str
    user: _ResponseReportsPostUser
    created_at: str
    updated_at: str
    type: str
    description: str
    my_permission_level: str
    archived: str
    projects: List[_ResponseReportsPostProjects]
    state: str
    finished_at: str
    viz_updated_at: str
    script: _ResponseReportsPostScript
    job_path: str
    tableau_id: int
    template_id: int
    auth_thumbnail_url: str
    last_run: _ResponseReportsPostLastRun
    hidden: bool
    auth_data_url: str
    auth_code_url: str
    config: str
    valid_output_file: bool
    provide_api_key: bool
    api_key: str
    api_key_id: int
    app_state: dict
    use_viewers_tableau_username: bool

class _ResponseReportsPostUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsPostProjects(Response):
    id: int
    name: str

class _ResponseReportsPostScript(Response):
    id: int
    name: str
    sql: str

class _ResponseReportsPostLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseReportsListGit(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseReportsListGitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseReportsListGitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseReportsPutGit(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseReportsPutGitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseReportsPutGitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseReportsPatchGit(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseReportsPatchGitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseReportsPatchGitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseReportsListGitCommits(Response):
    commit_hash: str
    author_name: str
    date: str
    message: str

class _ResponseReportsPostGitCommits(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseReportsGetGitCommits(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseReportsGet(Response):
    id: int
    name: str
    user: _ResponseReportsGetUser
    created_at: str
    updated_at: str
    type: str
    description: str
    my_permission_level: str
    archived: str
    projects: List[_ResponseReportsGetProjects]
    state: str
    finished_at: str
    viz_updated_at: str
    script: _ResponseReportsGetScript
    job_path: str
    tableau_id: int
    template_id: int
    auth_thumbnail_url: str
    last_run: _ResponseReportsGetLastRun
    hidden: bool
    auth_data_url: str
    auth_code_url: str
    config: str
    valid_output_file: bool
    provide_api_key: bool
    api_key: str
    api_key_id: int
    app_state: dict
    use_viewers_tableau_username: bool

class _ResponseReportsGetUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsGetProjects(Response):
    id: int
    name: str

class _ResponseReportsGetScript(Response):
    id: int
    name: str
    sql: str

class _ResponseReportsGetLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseReportsPatch(Response):
    id: int
    name: str
    user: _ResponseReportsPatchUser
    created_at: str
    updated_at: str
    type: str
    description: str
    my_permission_level: str
    archived: str
    projects: List[_ResponseReportsPatchProjects]
    state: str
    finished_at: str
    viz_updated_at: str
    script: _ResponseReportsPatchScript
    job_path: str
    tableau_id: int
    template_id: int
    auth_thumbnail_url: str
    last_run: _ResponseReportsPatchLastRun
    hidden: bool
    auth_data_url: str
    auth_code_url: str
    config: str
    valid_output_file: bool
    provide_api_key: bool
    api_key: str
    api_key_id: int
    app_state: dict
    use_viewers_tableau_username: bool

class _ResponseReportsPatchUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsPatchProjects(Response):
    id: int
    name: str

class _ResponseReportsPatchScript(Response):
    id: int
    name: str
    sql: str

class _ResponseReportsPatchLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseReportsPostGrants(Response):
    id: int
    name: str
    user: _ResponseReportsPostGrantsUser
    created_at: str
    updated_at: str
    type: str
    description: str
    my_permission_level: str
    archived: str
    projects: List[_ResponseReportsPostGrantsProjects]
    state: str
    finished_at: str
    viz_updated_at: str
    script: _ResponseReportsPostGrantsScript
    job_path: str
    tableau_id: int
    template_id: int
    auth_thumbnail_url: str
    last_run: _ResponseReportsPostGrantsLastRun
    hidden: bool
    auth_data_url: str
    auth_code_url: str
    config: str
    valid_output_file: bool
    provide_api_key: bool
    api_key: str
    api_key_id: int
    app_state: dict
    use_viewers_tableau_username: bool

class _ResponseReportsPostGrantsUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsPostGrantsProjects(Response):
    id: int
    name: str

class _ResponseReportsPostGrantsScript(Response):
    id: int
    name: str
    sql: str

class _ResponseReportsPostGrantsLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseReportsListShares(Response):
    readers: _ResponseReportsListSharesReaders
    writers: _ResponseReportsListSharesWriters
    owners: _ResponseReportsListSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseReportsListSharesReaders(Response):
    users: List[_ResponseReportsListSharesReadersUsers]
    groups: List[_ResponseReportsListSharesReadersGroups]

class _ResponseReportsListSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseReportsListSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseReportsListSharesWriters(Response):
    users: List[_ResponseReportsListSharesWritersUsers]
    groups: List[_ResponseReportsListSharesWritersGroups]

class _ResponseReportsListSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseReportsListSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseReportsListSharesOwners(Response):
    users: List[_ResponseReportsListSharesOwnersUsers]
    groups: List[_ResponseReportsListSharesOwnersGroups]

class _ResponseReportsListSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseReportsListSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseReportsPutSharesUsers(Response):
    readers: _ResponseReportsPutSharesUsersReaders
    writers: _ResponseReportsPutSharesUsersWriters
    owners: _ResponseReportsPutSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseReportsPutSharesUsersReaders(Response):
    users: List[_ResponseReportsPutSharesUsersReadersUsers]
    groups: List[_ResponseReportsPutSharesUsersReadersGroups]

class _ResponseReportsPutSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseReportsPutSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseReportsPutSharesUsersWriters(Response):
    users: List[_ResponseReportsPutSharesUsersWritersUsers]
    groups: List[_ResponseReportsPutSharesUsersWritersGroups]

class _ResponseReportsPutSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseReportsPutSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseReportsPutSharesUsersOwners(Response):
    users: List[_ResponseReportsPutSharesUsersOwnersUsers]
    groups: List[_ResponseReportsPutSharesUsersOwnersGroups]

class _ResponseReportsPutSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseReportsPutSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseReportsPutSharesGroups(Response):
    readers: _ResponseReportsPutSharesGroupsReaders
    writers: _ResponseReportsPutSharesGroupsWriters
    owners: _ResponseReportsPutSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseReportsPutSharesGroupsReaders(Response):
    users: List[_ResponseReportsPutSharesGroupsReadersUsers]
    groups: List[_ResponseReportsPutSharesGroupsReadersGroups]

class _ResponseReportsPutSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseReportsPutSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseReportsPutSharesGroupsWriters(Response):
    users: List[_ResponseReportsPutSharesGroupsWritersUsers]
    groups: List[_ResponseReportsPutSharesGroupsWritersGroups]

class _ResponseReportsPutSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseReportsPutSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseReportsPutSharesGroupsOwners(Response):
    users: List[_ResponseReportsPutSharesGroupsOwnersUsers]
    groups: List[_ResponseReportsPutSharesGroupsOwnersGroups]

class _ResponseReportsPutSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseReportsPutSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseReportsListDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseReportsPutTransfer(Response):
    dependencies: List[_ResponseReportsPutTransferDependencies]

class _ResponseReportsPutTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseReportsListProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsListProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsPutArchive(Response):
    id: int
    name: str
    user: _ResponseReportsPutArchiveUser
    created_at: str
    updated_at: str
    type: str
    description: str
    my_permission_level: str
    archived: str
    projects: List[_ResponseReportsPutArchiveProjects]
    state: str
    finished_at: str
    viz_updated_at: str
    script: _ResponseReportsPutArchiveScript
    job_path: str
    tableau_id: int
    template_id: int
    auth_thumbnail_url: str
    last_run: _ResponseReportsPutArchiveLastRun
    hidden: bool
    auth_data_url: str
    auth_code_url: str
    config: str
    valid_output_file: bool
    provide_api_key: bool
    api_key: str
    api_key_id: int
    app_state: dict
    use_viewers_tableau_username: bool

class _ResponseReportsPutArchiveUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsPutArchiveProjects(Response):
    id: int
    name: str

class _ResponseReportsPutArchiveScript(Response):
    id: int
    name: str
    sql: str

class _ResponseReportsPutArchiveLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseReportsGetServices(Response):
    id: int
    name: str
    user: _ResponseReportsGetServicesUser
    created_at: str
    updated_at: str
    type: str
    description: str
    my_permission_level: str
    archived: str
    host: str
    display_url: str
    service_id: int
    provide_api_key: bool
    api_key: str
    api_key_id: int

class _ResponseReportsGetServicesUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsPatchServices(Response):
    id: int
    name: str
    user: _ResponseReportsPatchServicesUser
    created_at: str
    updated_at: str
    type: str
    description: str
    my_permission_level: str
    archived: str
    host: str
    display_url: str
    service_id: int
    provide_api_key: bool
    api_key: str
    api_key_id: int

class _ResponseReportsPatchServicesUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsPostServices(Response):
    id: int
    name: str
    user: _ResponseReportsPostServicesUser
    created_at: str
    updated_at: str
    type: str
    description: str
    my_permission_level: str
    archived: str
    host: str
    display_url: str
    service_id: int
    provide_api_key: bool
    api_key: str
    api_key_id: int

class _ResponseReportsPostServicesUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsListServicesShares(Response):
    readers: _ResponseReportsListServicesSharesReaders
    writers: _ResponseReportsListServicesSharesWriters
    owners: _ResponseReportsListServicesSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseReportsListServicesSharesReaders(Response):
    users: List[_ResponseReportsListServicesSharesReadersUsers]
    groups: List[_ResponseReportsListServicesSharesReadersGroups]

class _ResponseReportsListServicesSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseReportsListServicesSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseReportsListServicesSharesWriters(Response):
    users: List[_ResponseReportsListServicesSharesWritersUsers]
    groups: List[_ResponseReportsListServicesSharesWritersGroups]

class _ResponseReportsListServicesSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseReportsListServicesSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseReportsListServicesSharesOwners(Response):
    users: List[_ResponseReportsListServicesSharesOwnersUsers]
    groups: List[_ResponseReportsListServicesSharesOwnersGroups]

class _ResponseReportsListServicesSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseReportsListServicesSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseReportsPutServicesSharesUsers(Response):
    readers: _ResponseReportsPutServicesSharesUsersReaders
    writers: _ResponseReportsPutServicesSharesUsersWriters
    owners: _ResponseReportsPutServicesSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseReportsPutServicesSharesUsersReaders(Response):
    users: List[_ResponseReportsPutServicesSharesUsersReadersUsers]
    groups: List[_ResponseReportsPutServicesSharesUsersReadersGroups]

class _ResponseReportsPutServicesSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseReportsPutServicesSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseReportsPutServicesSharesUsersWriters(Response):
    users: List[_ResponseReportsPutServicesSharesUsersWritersUsers]
    groups: List[_ResponseReportsPutServicesSharesUsersWritersGroups]

class _ResponseReportsPutServicesSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseReportsPutServicesSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseReportsPutServicesSharesUsersOwners(Response):
    users: List[_ResponseReportsPutServicesSharesUsersOwnersUsers]
    groups: List[_ResponseReportsPutServicesSharesUsersOwnersGroups]

class _ResponseReportsPutServicesSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseReportsPutServicesSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseReportsPutServicesSharesGroups(Response):
    readers: _ResponseReportsPutServicesSharesGroupsReaders
    writers: _ResponseReportsPutServicesSharesGroupsWriters
    owners: _ResponseReportsPutServicesSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseReportsPutServicesSharesGroupsReaders(Response):
    users: List[_ResponseReportsPutServicesSharesGroupsReadersUsers]
    groups: List[_ResponseReportsPutServicesSharesGroupsReadersGroups]

class _ResponseReportsPutServicesSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseReportsPutServicesSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseReportsPutServicesSharesGroupsWriters(Response):
    users: List[_ResponseReportsPutServicesSharesGroupsWritersUsers]
    groups: List[_ResponseReportsPutServicesSharesGroupsWritersGroups]

class _ResponseReportsPutServicesSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseReportsPutServicesSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseReportsPutServicesSharesGroupsOwners(Response):
    users: List[_ResponseReportsPutServicesSharesGroupsOwnersUsers]
    groups: List[_ResponseReportsPutServicesSharesGroupsOwnersGroups]

class _ResponseReportsPutServicesSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseReportsPutServicesSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseReportsListServicesDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseReportsPutServicesTransfer(Response):
    dependencies: List[_ResponseReportsPutServicesTransferDependencies]

class _ResponseReportsPutServicesTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseReportsListServicesProjects(Response):
    id: int
    author: _ResponseReportsListServicesProjectsAuthor
    name: str
    description: str
    users: List[_ResponseReportsListServicesProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseReportsListServicesProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsListServicesProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsPutServicesArchive(Response):
    id: int
    name: str
    user: _ResponseReportsPutServicesArchiveUser
    created_at: str
    updated_at: str
    type: str
    description: str
    my_permission_level: str
    archived: str
    host: str
    display_url: str
    service_id: int
    provide_api_key: bool
    api_key: str
    api_key_id: int

class _ResponseReportsPutServicesArchiveUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsPostRefresh(Response):
    id: int
    organization: _ResponseReportsPostRefreshOrganization

class _ResponseReportsPostRefreshOrganization(Response):
    id: int
    tableau_refresh_usage: int
    tableau_refresh_limit: int
    tableau_refresh_history: List

class _ResponseReportsPostSql(Response):
    id: int
    name: str
    user: _ResponseReportsPostSqlUser
    created_at: str
    updated_at: str
    type: str
    description: str
    my_permission_level: str
    archived: str
    config: str
    query: _ResponseReportsPostSqlQuery

class _ResponseReportsPostSqlUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsPostSqlQuery(Response):
    id: int
    database: int
    sql: str
    credential: int
    result_rows: List[List]
    result_columns: List[str]
    error: str
    started_at: str
    finished_at: str
    state: str
    running_as: _ResponseReportsPostSqlQueryRunningAs

class _ResponseReportsPostSqlQueryRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsGetSql(Response):
    id: int
    name: str
    user: _ResponseReportsGetSqlUser
    created_at: str
    updated_at: str
    type: str
    description: str
    my_permission_level: str
    archived: str
    config: str
    query: _ResponseReportsGetSqlQuery

class _ResponseReportsGetSqlUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsGetSqlQuery(Response):
    id: int
    database: int
    sql: str
    credential: int
    result_rows: List[List]
    result_columns: List[str]
    error: str
    started_at: str
    finished_at: str
    state: str
    running_as: _ResponseReportsGetSqlQueryRunningAs

class _ResponseReportsGetSqlQueryRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsPatchSql(Response):
    id: int
    name: str
    user: _ResponseReportsPatchSqlUser
    created_at: str
    updated_at: str
    type: str
    description: str
    my_permission_level: str
    archived: str
    config: str
    query: _ResponseReportsPatchSqlQuery

class _ResponseReportsPatchSqlUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsPatchSqlQuery(Response):
    id: int
    database: int
    sql: str
    credential: int
    result_rows: List[List]
    result_columns: List[str]
    error: str
    started_at: str
    finished_at: str
    state: str
    running_as: _ResponseReportsPatchSqlQueryRunningAs

class _ResponseReportsPatchSqlQueryRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsPostSqlRefresh(Response):
    id: int
    name: str
    user: _ResponseReportsPostSqlRefreshUser
    created_at: str
    updated_at: str
    type: str
    description: str
    my_permission_level: str
    archived: str
    config: str
    query: _ResponseReportsPostSqlRefreshQuery

class _ResponseReportsPostSqlRefreshUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsPostSqlRefreshQuery(Response):
    id: int
    database: int
    sql: str
    credential: int
    result_rows: List[List]
    result_columns: List[str]
    error: str
    started_at: str
    finished_at: str
    state: str
    running_as: _ResponseReportsPostSqlRefreshQueryRunningAs

class _ResponseReportsPostSqlRefreshQueryRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsListSqlShares(Response):
    readers: _ResponseReportsListSqlSharesReaders
    writers: _ResponseReportsListSqlSharesWriters
    owners: _ResponseReportsListSqlSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseReportsListSqlSharesReaders(Response):
    users: List[_ResponseReportsListSqlSharesReadersUsers]
    groups: List[_ResponseReportsListSqlSharesReadersGroups]

class _ResponseReportsListSqlSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseReportsListSqlSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseReportsListSqlSharesWriters(Response):
    users: List[_ResponseReportsListSqlSharesWritersUsers]
    groups: List[_ResponseReportsListSqlSharesWritersGroups]

class _ResponseReportsListSqlSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseReportsListSqlSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseReportsListSqlSharesOwners(Response):
    users: List[_ResponseReportsListSqlSharesOwnersUsers]
    groups: List[_ResponseReportsListSqlSharesOwnersGroups]

class _ResponseReportsListSqlSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseReportsListSqlSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseReportsPutSqlSharesUsers(Response):
    readers: _ResponseReportsPutSqlSharesUsersReaders
    writers: _ResponseReportsPutSqlSharesUsersWriters
    owners: _ResponseReportsPutSqlSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseReportsPutSqlSharesUsersReaders(Response):
    users: List[_ResponseReportsPutSqlSharesUsersReadersUsers]
    groups: List[_ResponseReportsPutSqlSharesUsersReadersGroups]

class _ResponseReportsPutSqlSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseReportsPutSqlSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseReportsPutSqlSharesUsersWriters(Response):
    users: List[_ResponseReportsPutSqlSharesUsersWritersUsers]
    groups: List[_ResponseReportsPutSqlSharesUsersWritersGroups]

class _ResponseReportsPutSqlSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseReportsPutSqlSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseReportsPutSqlSharesUsersOwners(Response):
    users: List[_ResponseReportsPutSqlSharesUsersOwnersUsers]
    groups: List[_ResponseReportsPutSqlSharesUsersOwnersGroups]

class _ResponseReportsPutSqlSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseReportsPutSqlSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseReportsPutSqlSharesGroups(Response):
    readers: _ResponseReportsPutSqlSharesGroupsReaders
    writers: _ResponseReportsPutSqlSharesGroupsWriters
    owners: _ResponseReportsPutSqlSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseReportsPutSqlSharesGroupsReaders(Response):
    users: List[_ResponseReportsPutSqlSharesGroupsReadersUsers]
    groups: List[_ResponseReportsPutSqlSharesGroupsReadersGroups]

class _ResponseReportsPutSqlSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseReportsPutSqlSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseReportsPutSqlSharesGroupsWriters(Response):
    users: List[_ResponseReportsPutSqlSharesGroupsWritersUsers]
    groups: List[_ResponseReportsPutSqlSharesGroupsWritersGroups]

class _ResponseReportsPutSqlSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseReportsPutSqlSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseReportsPutSqlSharesGroupsOwners(Response):
    users: List[_ResponseReportsPutSqlSharesGroupsOwnersUsers]
    groups: List[_ResponseReportsPutSqlSharesGroupsOwnersGroups]

class _ResponseReportsPutSqlSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseReportsPutSqlSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseReportsListSqlDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseReportsPutSqlTransfer(Response):
    dependencies: List[_ResponseReportsPutSqlTransferDependencies]

class _ResponseReportsPutSqlTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseReportsListSqlProjects(Response):
    id: int
    author: _ResponseReportsListSqlProjectsAuthor
    name: str
    description: str
    users: List[_ResponseReportsListSqlProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseReportsListSqlProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsListSqlProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsPutSqlArchive(Response):
    id: int
    name: str
    user: _ResponseReportsPutSqlArchiveUser
    created_at: str
    updated_at: str
    type: str
    description: str
    my_permission_level: str
    archived: str
    config: str
    query: _ResponseReportsPutSqlArchiveQuery

class _ResponseReportsPutSqlArchiveUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseReportsPutSqlArchiveQuery(Response):
    id: int
    database: int
    sql: str
    credential: int
    result_rows: List[List]
    result_columns: List[str]
    error: str
    started_at: str
    finished_at: str
    state: str
    running_as: _ResponseReportsPutSqlArchiveQueryRunningAs

class _ResponseReportsPutSqlArchiveQueryRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseRolesList(Response):
    id: int
    name: str
    slug: str
    description: str

class _ResponseScriptsListTypes(Response):
    name: str

class _ResponseScriptsListHistory(Response):
    id: int
    sql_id: int
    state: str
    is_cancel_requested: bool
    finished_at: str
    error: str
    output: List[_ResponseScriptsListHistoryOutput]

class _ResponseScriptsListHistoryOutput(Response):
    output_name: str
    file_id: int
    path: str

class _ResponseScriptsPost(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPostAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPostProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPostParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPostLinks
    schedule: _ResponseScriptsPostSchedule
    notifications: _ResponseScriptsPostNotifications
    running_as: _ResponseScriptsPostRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPostLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    template_script_id: int

class _ResponseScriptsPostAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostProjects(Response):
    id: int
    name: str

class _ResponseScriptsPostParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPostLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPostSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPostNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPostRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsList(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsListAuthor
    state: str
    finished_at: str
    projects: List[_ResponseScriptsListProjects]
    parent_id: int
    is_template: bool
    from_template_id: int
    links: _ResponseScriptsListLinks
    time_zone: str
    last_run: _ResponseScriptsListLastRun
    archived: str
    template_script_id: int

class _ResponseScriptsListAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsListProjects(Response):
    id: int
    name: str

class _ResponseScriptsListLinks(Response):
    details: str
    runs: str

class _ResponseScriptsListLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPostCancel(Response):
    id: int
    state: str
    is_cancel_requested: bool

class _ResponseScriptsGet(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsGetAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsGetProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsGetParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsGetLinks
    schedule: _ResponseScriptsGetSchedule
    notifications: _ResponseScriptsGetNotifications
    running_as: _ResponseScriptsGetRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsGetLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    sql: str
    expanded_arguments: dict
    template_script_id: int

class _ResponseScriptsGetAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsGetProjects(Response):
    id: int
    name: str

class _ResponseScriptsGetParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsGetLinks(Response):
    details: str
    runs: str

class _ResponseScriptsGetSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsGetNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsGetRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsGetLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPostContainers(Response):
    id: int
    from_template_aliases: List[_ResponseScriptsPostContainersFromTemplateAliases]
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPostContainersAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPostContainersProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPostContainersParams]
    arguments: dict
    is_template: bool
    template_dependents_count: int
    published_as_template_id: int
    from_template_id: int
    template_script_name: str
    links: _ResponseScriptsPostContainersLinks
    schedule: _ResponseScriptsPostContainersSchedule
    notifications: _ResponseScriptsPostContainersNotifications
    running_as: _ResponseScriptsPostContainersRunningAs
    required_resources: _ResponseScriptsPostContainersRequiredResources
    repo_http_uri: str
    repo_ref: str
    remote_host_credential_id: int
    git_credential_id: int
    docker_command: str
    docker_image_name: str
    docker_image_tag: str
    instance_type: str
    cancel_timeout: int
    last_run: _ResponseScriptsPostContainersLastRun
    time_zone: str
    partition_label: str
    my_permission_level: str
    hidden: bool
    archived: str
    target_project_id: int
    running_as_id: int

class _ResponseScriptsPostContainersFromTemplateAliases(Response):
    id: int
    object_id: int
    alias: str

class _ResponseScriptsPostContainersAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostContainersProjects(Response):
    id: int
    name: str

class _ResponseScriptsPostContainersParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPostContainersLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPostContainersSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPostContainersNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPostContainersRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostContainersRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPostContainersLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsGetContainers(Response):
    id: int
    from_template_aliases: List[_ResponseScriptsGetContainersFromTemplateAliases]
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsGetContainersAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsGetContainersProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsGetContainersParams]
    arguments: dict
    is_template: bool
    template_dependents_count: int
    published_as_template_id: int
    from_template_id: int
    template_script_name: str
    links: _ResponseScriptsGetContainersLinks
    schedule: _ResponseScriptsGetContainersSchedule
    notifications: _ResponseScriptsGetContainersNotifications
    running_as: _ResponseScriptsGetContainersRunningAs
    required_resources: _ResponseScriptsGetContainersRequiredResources
    repo_http_uri: str
    repo_ref: str
    remote_host_credential_id: int
    git_credential_id: int
    docker_command: str
    docker_image_name: str
    docker_image_tag: str
    instance_type: str
    cancel_timeout: int
    last_run: _ResponseScriptsGetContainersLastRun
    time_zone: str
    partition_label: str
    my_permission_level: str
    hidden: bool
    archived: str
    target_project_id: int
    running_as_id: int

class _ResponseScriptsGetContainersFromTemplateAliases(Response):
    id: int
    object_id: int
    alias: str

class _ResponseScriptsGetContainersAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsGetContainersProjects(Response):
    id: int
    name: str

class _ResponseScriptsGetContainersParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsGetContainersLinks(Response):
    details: str
    runs: str

class _ResponseScriptsGetContainersSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsGetContainersNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsGetContainersRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsGetContainersRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsGetContainersLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPutContainers(Response):
    id: int
    from_template_aliases: List[_ResponseScriptsPutContainersFromTemplateAliases]
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPutContainersAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPutContainersProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPutContainersParams]
    arguments: dict
    is_template: bool
    template_dependents_count: int
    published_as_template_id: int
    from_template_id: int
    template_script_name: str
    links: _ResponseScriptsPutContainersLinks
    schedule: _ResponseScriptsPutContainersSchedule
    notifications: _ResponseScriptsPutContainersNotifications
    running_as: _ResponseScriptsPutContainersRunningAs
    required_resources: _ResponseScriptsPutContainersRequiredResources
    repo_http_uri: str
    repo_ref: str
    remote_host_credential_id: int
    git_credential_id: int
    docker_command: str
    docker_image_name: str
    docker_image_tag: str
    instance_type: str
    cancel_timeout: int
    last_run: _ResponseScriptsPutContainersLastRun
    time_zone: str
    partition_label: str
    my_permission_level: str
    hidden: bool
    archived: str
    target_project_id: int
    running_as_id: int

class _ResponseScriptsPutContainersFromTemplateAliases(Response):
    id: int
    object_id: int
    alias: str

class _ResponseScriptsPutContainersAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutContainersProjects(Response):
    id: int
    name: str

class _ResponseScriptsPutContainersParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPutContainersLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPutContainersSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPutContainersNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPutContainersRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutContainersRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPutContainersLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPatchContainers(Response):
    id: int
    from_template_aliases: List[_ResponseScriptsPatchContainersFromTemplateAliases]
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPatchContainersAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPatchContainersProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPatchContainersParams]
    arguments: dict
    is_template: bool
    template_dependents_count: int
    published_as_template_id: int
    from_template_id: int
    template_script_name: str
    links: _ResponseScriptsPatchContainersLinks
    schedule: _ResponseScriptsPatchContainersSchedule
    notifications: _ResponseScriptsPatchContainersNotifications
    running_as: _ResponseScriptsPatchContainersRunningAs
    required_resources: _ResponseScriptsPatchContainersRequiredResources
    repo_http_uri: str
    repo_ref: str
    remote_host_credential_id: int
    git_credential_id: int
    docker_command: str
    docker_image_name: str
    docker_image_tag: str
    instance_type: str
    cancel_timeout: int
    last_run: _ResponseScriptsPatchContainersLastRun
    time_zone: str
    partition_label: str
    my_permission_level: str
    hidden: bool
    archived: str
    target_project_id: int
    running_as_id: int

class _ResponseScriptsPatchContainersFromTemplateAliases(Response):
    id: int
    object_id: int
    alias: str

class _ResponseScriptsPatchContainersAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPatchContainersProjects(Response):
    id: int
    name: str

class _ResponseScriptsPatchContainersParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPatchContainersLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPatchContainersSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPatchContainersNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPatchContainersRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPatchContainersRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPatchContainersLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsListContainersRunsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseScriptsPostSql(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPostSqlAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPostSqlProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPostSqlParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPostSqlLinks
    schedule: _ResponseScriptsPostSqlSchedule
    notifications: _ResponseScriptsPostSqlNotifications
    running_as: _ResponseScriptsPostSqlRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPostSqlLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    sql: str
    expanded_arguments: dict
    remote_host_id: int
    credential_id: int
    code_preview: str
    csv_settings: _ResponseScriptsPostSqlCsvSettings
    running_as_id: int

class _ResponseScriptsPostSqlAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostSqlProjects(Response):
    id: int
    name: str

class _ResponseScriptsPostSqlParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPostSqlLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPostSqlSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPostSqlNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPostSqlRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostSqlLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPostSqlCsvSettings(Response):
    include_header: bool
    compression: str
    column_delimiter: str
    unquoted: bool
    force_multifile: bool
    filename_prefix: str
    max_file_size: int

class _ResponseScriptsGetSql(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsGetSqlAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsGetSqlProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsGetSqlParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsGetSqlLinks
    schedule: _ResponseScriptsGetSqlSchedule
    notifications: _ResponseScriptsGetSqlNotifications
    running_as: _ResponseScriptsGetSqlRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsGetSqlLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    sql: str
    expanded_arguments: dict
    remote_host_id: int
    credential_id: int
    code_preview: str
    csv_settings: _ResponseScriptsGetSqlCsvSettings
    running_as_id: int

class _ResponseScriptsGetSqlAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsGetSqlProjects(Response):
    id: int
    name: str

class _ResponseScriptsGetSqlParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsGetSqlLinks(Response):
    details: str
    runs: str

class _ResponseScriptsGetSqlSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsGetSqlNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsGetSqlRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsGetSqlLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsGetSqlCsvSettings(Response):
    include_header: bool
    compression: str
    column_delimiter: str
    unquoted: bool
    force_multifile: bool
    filename_prefix: str
    max_file_size: int

class _ResponseScriptsPutSql(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPutSqlAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPutSqlProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPutSqlParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPutSqlLinks
    schedule: _ResponseScriptsPutSqlSchedule
    notifications: _ResponseScriptsPutSqlNotifications
    running_as: _ResponseScriptsPutSqlRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPutSqlLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    sql: str
    expanded_arguments: dict
    remote_host_id: int
    credential_id: int
    code_preview: str
    csv_settings: _ResponseScriptsPutSqlCsvSettings
    running_as_id: int

class _ResponseScriptsPutSqlAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutSqlProjects(Response):
    id: int
    name: str

class _ResponseScriptsPutSqlParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPutSqlLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPutSqlSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPutSqlNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPutSqlRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutSqlLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPutSqlCsvSettings(Response):
    include_header: bool
    compression: str
    column_delimiter: str
    unquoted: bool
    force_multifile: bool
    filename_prefix: str
    max_file_size: int

class _ResponseScriptsPatchSql(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPatchSqlAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPatchSqlProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPatchSqlParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPatchSqlLinks
    schedule: _ResponseScriptsPatchSqlSchedule
    notifications: _ResponseScriptsPatchSqlNotifications
    running_as: _ResponseScriptsPatchSqlRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPatchSqlLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    sql: str
    expanded_arguments: dict
    remote_host_id: int
    credential_id: int
    code_preview: str
    csv_settings: _ResponseScriptsPatchSqlCsvSettings
    running_as_id: int

class _ResponseScriptsPatchSqlAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPatchSqlProjects(Response):
    id: int
    name: str

class _ResponseScriptsPatchSqlParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPatchSqlLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPatchSqlSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPatchSqlNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPatchSqlRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPatchSqlLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPatchSqlCsvSettings(Response):
    include_header: bool
    compression: str
    column_delimiter: str
    unquoted: bool
    force_multifile: bool
    filename_prefix: str
    max_file_size: int

class _ResponseScriptsPostPython3(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPostPython3Author
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPostPython3Projects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPostPython3Params]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPostPython3Links
    schedule: _ResponseScriptsPostPython3Schedule
    notifications: _ResponseScriptsPostPython3Notifications
    running_as: _ResponseScriptsPostPython3RunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPostPython3LastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    required_resources: _ResponseScriptsPostPython3RequiredResources
    instance_type: str
    cancel_timeout: int
    docker_image_tag: str
    partition_label: str
    running_as_id: int
    source: str

class _ResponseScriptsPostPython3Author(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostPython3Projects(Response):
    id: int
    name: str

class _ResponseScriptsPostPython3Params(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPostPython3Links(Response):
    details: str
    runs: str

class _ResponseScriptsPostPython3Schedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPostPython3Notifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPostPython3RunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostPython3LastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPostPython3RequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsGetPython3(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsGetPython3Author
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsGetPython3Projects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsGetPython3Params]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsGetPython3Links
    schedule: _ResponseScriptsGetPython3Schedule
    notifications: _ResponseScriptsGetPython3Notifications
    running_as: _ResponseScriptsGetPython3RunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsGetPython3LastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    required_resources: _ResponseScriptsGetPython3RequiredResources
    instance_type: str
    cancel_timeout: int
    docker_image_tag: str
    partition_label: str
    running_as_id: int
    source: str

class _ResponseScriptsGetPython3Author(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsGetPython3Projects(Response):
    id: int
    name: str

class _ResponseScriptsGetPython3Params(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsGetPython3Links(Response):
    details: str
    runs: str

class _ResponseScriptsGetPython3Schedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsGetPython3Notifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsGetPython3RunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsGetPython3LastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsGetPython3RequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPutPython3(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPutPython3Author
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPutPython3Projects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPutPython3Params]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPutPython3Links
    schedule: _ResponseScriptsPutPython3Schedule
    notifications: _ResponseScriptsPutPython3Notifications
    running_as: _ResponseScriptsPutPython3RunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPutPython3LastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    required_resources: _ResponseScriptsPutPython3RequiredResources
    instance_type: str
    cancel_timeout: int
    docker_image_tag: str
    partition_label: str
    running_as_id: int
    source: str

class _ResponseScriptsPutPython3Author(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutPython3Projects(Response):
    id: int
    name: str

class _ResponseScriptsPutPython3Params(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPutPython3Links(Response):
    details: str
    runs: str

class _ResponseScriptsPutPython3Schedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPutPython3Notifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPutPython3RunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutPython3LastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPutPython3RequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPatchPython3(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPatchPython3Author
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPatchPython3Projects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPatchPython3Params]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPatchPython3Links
    schedule: _ResponseScriptsPatchPython3Schedule
    notifications: _ResponseScriptsPatchPython3Notifications
    running_as: _ResponseScriptsPatchPython3RunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPatchPython3LastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    required_resources: _ResponseScriptsPatchPython3RequiredResources
    instance_type: str
    cancel_timeout: int
    docker_image_tag: str
    partition_label: str
    running_as_id: int
    source: str

class _ResponseScriptsPatchPython3Author(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPatchPython3Projects(Response):
    id: int
    name: str

class _ResponseScriptsPatchPython3Params(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPatchPython3Links(Response):
    details: str
    runs: str

class _ResponseScriptsPatchPython3Schedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPatchPython3Notifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPatchPython3RunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPatchPython3LastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPatchPython3RequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPostR(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPostRAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPostRProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPostRParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPostRLinks
    schedule: _ResponseScriptsPostRSchedule
    notifications: _ResponseScriptsPostRNotifications
    running_as: _ResponseScriptsPostRRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPostRLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    required_resources: _ResponseScriptsPostRRequiredResources
    instance_type: str
    cancel_timeout: int
    docker_image_tag: str
    partition_label: str
    running_as_id: int
    source: str

class _ResponseScriptsPostRAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostRProjects(Response):
    id: int
    name: str

class _ResponseScriptsPostRParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPostRLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPostRSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPostRNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPostRRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostRLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPostRRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsGetR(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsGetRAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsGetRProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsGetRParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsGetRLinks
    schedule: _ResponseScriptsGetRSchedule
    notifications: _ResponseScriptsGetRNotifications
    running_as: _ResponseScriptsGetRRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsGetRLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    required_resources: _ResponseScriptsGetRRequiredResources
    instance_type: str
    cancel_timeout: int
    docker_image_tag: str
    partition_label: str
    running_as_id: int
    source: str

class _ResponseScriptsGetRAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsGetRProjects(Response):
    id: int
    name: str

class _ResponseScriptsGetRParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsGetRLinks(Response):
    details: str
    runs: str

class _ResponseScriptsGetRSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsGetRNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsGetRRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsGetRLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsGetRRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPutR(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPutRAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPutRProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPutRParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPutRLinks
    schedule: _ResponseScriptsPutRSchedule
    notifications: _ResponseScriptsPutRNotifications
    running_as: _ResponseScriptsPutRRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPutRLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    required_resources: _ResponseScriptsPutRRequiredResources
    instance_type: str
    cancel_timeout: int
    docker_image_tag: str
    partition_label: str
    running_as_id: int
    source: str

class _ResponseScriptsPutRAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutRProjects(Response):
    id: int
    name: str

class _ResponseScriptsPutRParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPutRLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPutRSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPutRNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPutRRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutRLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPutRRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPatchR(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPatchRAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPatchRProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPatchRParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPatchRLinks
    schedule: _ResponseScriptsPatchRSchedule
    notifications: _ResponseScriptsPatchRNotifications
    running_as: _ResponseScriptsPatchRRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPatchRLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    required_resources: _ResponseScriptsPatchRRequiredResources
    instance_type: str
    cancel_timeout: int
    docker_image_tag: str
    partition_label: str
    running_as_id: int
    source: str

class _ResponseScriptsPatchRAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPatchRProjects(Response):
    id: int
    name: str

class _ResponseScriptsPatchRParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPatchRLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPatchRSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPatchRNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPatchRRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPatchRLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPatchRRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPostDbt(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPostDbtAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPostDbtProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPostDbtParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPostDbtLinks
    schedule: _ResponseScriptsPostDbtSchedule
    notifications: _ResponseScriptsPostDbtNotifications
    running_as: _ResponseScriptsPostDbtRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPostDbtLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    required_resources: _ResponseScriptsPostDbtRequiredResources
    instance_type: str
    cancel_timeout: int
    docker_image_tag: str
    partition_label: str
    running_as_id: int
    dbt_project: _ResponseScriptsPostDbtDbtProject
    repo_http_uri: str
    repo_ref: str
    target_database: _ResponseScriptsPostDbtTargetDatabase

class _ResponseScriptsPostDbtAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostDbtProjects(Response):
    id: int
    name: str

class _ResponseScriptsPostDbtParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPostDbtLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPostDbtSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPostDbtNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPostDbtRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostDbtLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPostDbtRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPostDbtDbtProject(Response):
    target: str
    schema: str
    project_dir: str
    profiles_dir: str
    dbt_version: str
    dbt_command: str
    dbt_command_line_args: str
    docs_report_id: str
    skip_docs_generation: bool
    generate_profiles: bool

class _ResponseScriptsPostDbtTargetDatabase(Response):
    remote_host_id: int
    credential_id: int

class _ResponseScriptsGetDbt(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsGetDbtAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsGetDbtProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsGetDbtParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsGetDbtLinks
    schedule: _ResponseScriptsGetDbtSchedule
    notifications: _ResponseScriptsGetDbtNotifications
    running_as: _ResponseScriptsGetDbtRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsGetDbtLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    required_resources: _ResponseScriptsGetDbtRequiredResources
    instance_type: str
    cancel_timeout: int
    docker_image_tag: str
    partition_label: str
    running_as_id: int
    dbt_project: _ResponseScriptsGetDbtDbtProject
    repo_http_uri: str
    repo_ref: str
    target_database: _ResponseScriptsGetDbtTargetDatabase

class _ResponseScriptsGetDbtAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsGetDbtProjects(Response):
    id: int
    name: str

class _ResponseScriptsGetDbtParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsGetDbtLinks(Response):
    details: str
    runs: str

class _ResponseScriptsGetDbtSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsGetDbtNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsGetDbtRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsGetDbtLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsGetDbtRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsGetDbtDbtProject(Response):
    target: str
    schema: str
    project_dir: str
    profiles_dir: str
    dbt_version: str
    dbt_command: str
    dbt_command_line_args: str
    docs_report_id: str
    skip_docs_generation: bool
    generate_profiles: bool

class _ResponseScriptsGetDbtTargetDatabase(Response):
    remote_host_id: int
    credential_id: int

class _ResponseScriptsPutDbt(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPutDbtAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPutDbtProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPutDbtParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPutDbtLinks
    schedule: _ResponseScriptsPutDbtSchedule
    notifications: _ResponseScriptsPutDbtNotifications
    running_as: _ResponseScriptsPutDbtRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPutDbtLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    required_resources: _ResponseScriptsPutDbtRequiredResources
    instance_type: str
    cancel_timeout: int
    docker_image_tag: str
    partition_label: str
    running_as_id: int
    dbt_project: _ResponseScriptsPutDbtDbtProject
    repo_http_uri: str
    repo_ref: str
    target_database: _ResponseScriptsPutDbtTargetDatabase

class _ResponseScriptsPutDbtAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutDbtProjects(Response):
    id: int
    name: str

class _ResponseScriptsPutDbtParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPutDbtLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPutDbtSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPutDbtNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPutDbtRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutDbtLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPutDbtRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPutDbtDbtProject(Response):
    target: str
    schema: str
    project_dir: str
    profiles_dir: str
    dbt_version: str
    dbt_command: str
    dbt_command_line_args: str
    docs_report_id: str
    skip_docs_generation: bool
    generate_profiles: bool

class _ResponseScriptsPutDbtTargetDatabase(Response):
    remote_host_id: int
    credential_id: int

class _ResponseScriptsPatchDbt(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPatchDbtAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPatchDbtProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPatchDbtParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPatchDbtLinks
    schedule: _ResponseScriptsPatchDbtSchedule
    notifications: _ResponseScriptsPatchDbtNotifications
    running_as: _ResponseScriptsPatchDbtRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPatchDbtLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    required_resources: _ResponseScriptsPatchDbtRequiredResources
    instance_type: str
    cancel_timeout: int
    docker_image_tag: str
    partition_label: str
    running_as_id: int
    dbt_project: _ResponseScriptsPatchDbtDbtProject
    repo_http_uri: str
    repo_ref: str
    target_database: _ResponseScriptsPatchDbtTargetDatabase

class _ResponseScriptsPatchDbtAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPatchDbtProjects(Response):
    id: int
    name: str

class _ResponseScriptsPatchDbtParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPatchDbtLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPatchDbtSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPatchDbtNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPatchDbtRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPatchDbtLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPatchDbtRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPatchDbtDbtProject(Response):
    target: str
    schema: str
    project_dir: str
    profiles_dir: str
    dbt_version: str
    dbt_command: str
    dbt_command_line_args: str
    docs_report_id: str
    skip_docs_generation: bool
    generate_profiles: bool

class _ResponseScriptsPatchDbtTargetDatabase(Response):
    remote_host_id: int
    credential_id: int

class _ResponseScriptsPostJavascript(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPostJavascriptAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPostJavascriptProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPostJavascriptParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPostJavascriptLinks
    schedule: _ResponseScriptsPostJavascriptSchedule
    notifications: _ResponseScriptsPostJavascriptNotifications
    running_as: _ResponseScriptsPostJavascriptRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPostJavascriptLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    source: str
    remote_host_id: int
    credential_id: int
    running_as_id: int

class _ResponseScriptsPostJavascriptAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostJavascriptProjects(Response):
    id: int
    name: str

class _ResponseScriptsPostJavascriptParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPostJavascriptLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPostJavascriptSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPostJavascriptNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPostJavascriptRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostJavascriptLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsGetJavascript(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsGetJavascriptAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsGetJavascriptProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsGetJavascriptParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsGetJavascriptLinks
    schedule: _ResponseScriptsGetJavascriptSchedule
    notifications: _ResponseScriptsGetJavascriptNotifications
    running_as: _ResponseScriptsGetJavascriptRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsGetJavascriptLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    source: str
    remote_host_id: int
    credential_id: int
    running_as_id: int

class _ResponseScriptsGetJavascriptAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsGetJavascriptProjects(Response):
    id: int
    name: str

class _ResponseScriptsGetJavascriptParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsGetJavascriptLinks(Response):
    details: str
    runs: str

class _ResponseScriptsGetJavascriptSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsGetJavascriptNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsGetJavascriptRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsGetJavascriptLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPutJavascript(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPutJavascriptAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPutJavascriptProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPutJavascriptParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPutJavascriptLinks
    schedule: _ResponseScriptsPutJavascriptSchedule
    notifications: _ResponseScriptsPutJavascriptNotifications
    running_as: _ResponseScriptsPutJavascriptRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPutJavascriptLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    source: str
    remote_host_id: int
    credential_id: int
    running_as_id: int

class _ResponseScriptsPutJavascriptAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutJavascriptProjects(Response):
    id: int
    name: str

class _ResponseScriptsPutJavascriptParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPutJavascriptLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPutJavascriptSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPutJavascriptNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPutJavascriptRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutJavascriptLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPatchJavascript(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPatchJavascriptAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPatchJavascriptProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPatchJavascriptParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPatchJavascriptLinks
    schedule: _ResponseScriptsPatchJavascriptSchedule
    notifications: _ResponseScriptsPatchJavascriptNotifications
    running_as: _ResponseScriptsPatchJavascriptRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPatchJavascriptLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    source: str
    remote_host_id: int
    credential_id: int
    running_as_id: int

class _ResponseScriptsPatchJavascriptAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPatchJavascriptProjects(Response):
    id: int
    name: str

class _ResponseScriptsPatchJavascriptParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPatchJavascriptLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPatchJavascriptSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPatchJavascriptNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPatchJavascriptRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPatchJavascriptLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsListCustom(Response):
    id: int
    name: str
    type: str
    backing_script_type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsListCustomAuthor
    state: str
    finished_at: str
    projects: List[_ResponseScriptsListCustomProjects]
    parent_id: int
    from_template_id: int
    time_zone: str
    last_run: _ResponseScriptsListCustomLastRun
    archived: str
    last_successful_run: _ResponseScriptsListCustomLastSuccessfulRun

class _ResponseScriptsListCustomAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsListCustomProjects(Response):
    id: int
    author: _ResponseScriptsListCustomProjectsAuthor
    name: str
    description: str
    users: List[_ResponseScriptsListCustomProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseScriptsListCustomLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsListCustomLastSuccessfulRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPostCustom(Response):
    id: int
    from_template_aliases: List[_ResponseScriptsPostCustomFromTemplateAliases]
    name: str
    type: str
    backing_script_type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPostCustomAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPostCustomProjects]
    parent_id: int
    params: List[_ResponseScriptsPostCustomParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    ui_report_url: int
    ui_report_id: int
    ui_report_provide_api_key: bool
    template_script_name: str
    template_note: str
    remote_host_id: int
    credential_id: int
    code_preview: str
    schedule: _ResponseScriptsPostCustomSchedule
    notifications: _ResponseScriptsPostCustomNotifications
    running_as: _ResponseScriptsPostCustomRunningAs
    time_zone: str
    last_run: _ResponseScriptsPostCustomLastRun
    my_permission_level: str
    hidden: bool
    archived: str
    target_project_id: int
    last_successful_run: _ResponseScriptsPostCustomLastSuccessfulRun
    required_resources: _ResponseScriptsPostCustomRequiredResources
    partition_label: str
    running_as_id: int

class _ResponseScriptsPostCustomFromTemplateAliases(Response):
    id: int
    object_id: int
    alias: str

class _ResponseScriptsPostCustomAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostCustomProjects(Response):
    id: int
    name: str

class _ResponseScriptsPostCustomParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPostCustomSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPostCustomNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPostCustomRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostCustomLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPostCustomLastSuccessfulRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPostCustomRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsGetCustom(Response):
    id: int
    from_template_aliases: List[_ResponseScriptsGetCustomFromTemplateAliases]
    name: str
    type: str
    backing_script_type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsGetCustomAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsGetCustomProjects]
    parent_id: int
    params: List[_ResponseScriptsGetCustomParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    ui_report_url: int
    ui_report_id: int
    ui_report_provide_api_key: bool
    template_script_name: str
    template_note: str
    remote_host_id: int
    credential_id: int
    code_preview: str
    schedule: _ResponseScriptsGetCustomSchedule
    notifications: _ResponseScriptsGetCustomNotifications
    running_as: _ResponseScriptsGetCustomRunningAs
    time_zone: str
    last_run: _ResponseScriptsGetCustomLastRun
    my_permission_level: str
    hidden: bool
    archived: str
    target_project_id: int
    last_successful_run: _ResponseScriptsGetCustomLastSuccessfulRun
    required_resources: _ResponseScriptsGetCustomRequiredResources
    partition_label: str
    running_as_id: int

class _ResponseScriptsGetCustomFromTemplateAliases(Response):
    id: int
    object_id: int
    alias: str

class _ResponseScriptsGetCustomAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsGetCustomProjects(Response):
    id: int
    name: str

class _ResponseScriptsGetCustomParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsGetCustomSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsGetCustomNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsGetCustomRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsGetCustomLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsGetCustomLastSuccessfulRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsGetCustomRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPutCustom(Response):
    id: int
    from_template_aliases: List[_ResponseScriptsPutCustomFromTemplateAliases]
    name: str
    type: str
    backing_script_type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPutCustomAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPutCustomProjects]
    parent_id: int
    params: List[_ResponseScriptsPutCustomParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    ui_report_url: int
    ui_report_id: int
    ui_report_provide_api_key: bool
    template_script_name: str
    template_note: str
    remote_host_id: int
    credential_id: int
    code_preview: str
    schedule: _ResponseScriptsPutCustomSchedule
    notifications: _ResponseScriptsPutCustomNotifications
    running_as: _ResponseScriptsPutCustomRunningAs
    time_zone: str
    last_run: _ResponseScriptsPutCustomLastRun
    my_permission_level: str
    hidden: bool
    archived: str
    target_project_id: int
    last_successful_run: _ResponseScriptsPutCustomLastSuccessfulRun
    required_resources: _ResponseScriptsPutCustomRequiredResources
    partition_label: str
    running_as_id: int

class _ResponseScriptsPutCustomFromTemplateAliases(Response):
    id: int
    object_id: int
    alias: str

class _ResponseScriptsPutCustomAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutCustomProjects(Response):
    id: int
    name: str

class _ResponseScriptsPutCustomParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPutCustomSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPutCustomNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPutCustomRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutCustomLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPutCustomLastSuccessfulRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPutCustomRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPatchCustom(Response):
    id: int
    from_template_aliases: List[_ResponseScriptsPatchCustomFromTemplateAliases]
    name: str
    type: str
    backing_script_type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPatchCustomAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPatchCustomProjects]
    parent_id: int
    params: List[_ResponseScriptsPatchCustomParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    ui_report_url: int
    ui_report_id: int
    ui_report_provide_api_key: bool
    template_script_name: str
    template_note: str
    remote_host_id: int
    credential_id: int
    code_preview: str
    schedule: _ResponseScriptsPatchCustomSchedule
    notifications: _ResponseScriptsPatchCustomNotifications
    running_as: _ResponseScriptsPatchCustomRunningAs
    time_zone: str
    last_run: _ResponseScriptsPatchCustomLastRun
    my_permission_level: str
    hidden: bool
    archived: str
    target_project_id: int
    last_successful_run: _ResponseScriptsPatchCustomLastSuccessfulRun
    required_resources: _ResponseScriptsPatchCustomRequiredResources
    partition_label: str
    running_as_id: int

class _ResponseScriptsPatchCustomFromTemplateAliases(Response):
    id: int
    object_id: int
    alias: str

class _ResponseScriptsPatchCustomAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPatchCustomProjects(Response):
    id: int
    name: str

class _ResponseScriptsPatchCustomParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPatchCustomSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPatchCustomNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPatchCustomRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPatchCustomLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPatchCustomLastSuccessfulRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPatchCustomRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPostSqlRuns(Response):
    id: int
    sql_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    output: List[_ResponseScriptsPostSqlRunsOutput]
    output_cached_on: str

class _ResponseScriptsPostSqlRunsOutput(Response):
    output_name: str
    file_id: int
    path: str

class _ResponseScriptsListSqlRuns(Response):
    id: int
    sql_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    output: List[_ResponseScriptsListSqlRunsOutput]
    output_cached_on: str

class _ResponseScriptsListSqlRunsOutput(Response):
    output_name: str
    file_id: int
    path: str

class _ResponseScriptsGetSqlRuns(Response):
    id: int
    sql_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    output: List[_ResponseScriptsGetSqlRunsOutput]
    output_cached_on: str

class _ResponseScriptsGetSqlRunsOutput(Response):
    output_name: str
    file_id: int
    path: str

class _ResponseScriptsListSqlRunsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseScriptsPostContainersRuns(Response):
    id: int
    container_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    max_memory_usage: float
    max_cpu_usage: float

class _ResponseScriptsListContainersRuns(Response):
    id: int
    container_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    max_memory_usage: float
    max_cpu_usage: float

class _ResponseScriptsGetContainersRuns(Response):
    id: int
    container_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    max_memory_usage: float
    max_cpu_usage: float

class _ResponseScriptsPostPython3Runs(Response):
    id: int
    python_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    max_memory_usage: float
    max_cpu_usage: float

class _ResponseScriptsListPython3Runs(Response):
    id: int
    python_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    max_memory_usage: float
    max_cpu_usage: float

class _ResponseScriptsGetPython3Runs(Response):
    id: int
    python_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    max_memory_usage: float
    max_cpu_usage: float

class _ResponseScriptsListPython3RunsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseScriptsPostRRuns(Response):
    id: int
    r_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    max_memory_usage: float
    max_cpu_usage: float

class _ResponseScriptsListRRuns(Response):
    id: int
    r_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    max_memory_usage: float
    max_cpu_usage: float

class _ResponseScriptsGetRRuns(Response):
    id: int
    r_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    max_memory_usage: float
    max_cpu_usage: float

class _ResponseScriptsListRRunsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseScriptsPostDbtRuns(Response):
    id: int
    dbt_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    max_memory_usage: float
    max_cpu_usage: float

class _ResponseScriptsListDbtRuns(Response):
    id: int
    dbt_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    max_memory_usage: float
    max_cpu_usage: float

class _ResponseScriptsGetDbtRuns(Response):
    id: int
    dbt_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    max_memory_usage: float
    max_cpu_usage: float

class _ResponseScriptsListDbtRunsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseScriptsPostJavascriptRuns(Response):
    id: int
    javascript_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsListJavascriptRuns(Response):
    id: int
    javascript_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsGetJavascriptRuns(Response):
    id: int
    javascript_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsListJavascriptRunsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseScriptsPostCustomRuns(Response):
    id: int
    custom_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    max_memory_usage: float
    max_cpu_usage: float

class _ResponseScriptsListCustomRuns(Response):
    id: int
    custom_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    max_memory_usage: float
    max_cpu_usage: float

class _ResponseScriptsGetCustomRuns(Response):
    id: int
    custom_id: int
    state: str
    is_cancel_requested: bool
    created_at: str
    started_at: str
    finished_at: str
    error: str
    max_memory_usage: float
    max_cpu_usage: float

class _ResponseScriptsListCustomRunsLogs(Response):
    id: int
    created_at: str
    message: str
    level: str

class _ResponseScriptsListSqlRunsOutputs(Response):
    object_type: str
    object_id: int
    name: str
    link: str
    value: object

class _ResponseScriptsListContainersRunsOutputs(Response):
    object_type: str
    object_id: int
    name: str
    link: str
    value: object

class _ResponseScriptsPostContainersRunsOutputs(Response):
    object_type: str
    object_id: int
    name: str
    link: str
    value: object

class _ResponseScriptsListPython3RunsOutputs(Response):
    object_type: str
    object_id: int
    name: str
    link: str
    value: object

class _ResponseScriptsPostPython3RunsOutputs(Response):
    object_type: str
    object_id: int
    name: str
    link: str
    value: object

class _ResponseScriptsListRRunsOutputs(Response):
    object_type: str
    object_id: int
    name: str
    link: str
    value: object

class _ResponseScriptsPostRRunsOutputs(Response):
    object_type: str
    object_id: int
    name: str
    link: str
    value: object

class _ResponseScriptsListDbtRunsOutputs(Response):
    object_type: str
    object_id: int
    name: str
    link: str
    value: object

class _ResponseScriptsPostDbtRunsOutputs(Response):
    object_type: str
    object_id: int
    name: str
    link: str
    value: object

class _ResponseScriptsListJavascriptRunsOutputs(Response):
    object_type: str
    object_id: int
    name: str
    link: str
    value: object

class _ResponseScriptsPostJavascriptRunsOutputs(Response):
    object_type: str
    object_id: int
    name: str
    link: str
    value: object

class _ResponseScriptsListCustomRunsOutputs(Response):
    object_type: str
    object_id: int
    name: str
    link: str
    value: object

class _ResponseScriptsPostCustomRunsOutputs(Response):
    object_type: str
    object_id: int
    name: str
    link: str
    value: object

class _ResponseScriptsListSqlGit(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseScriptsListSqlGitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseScriptsListSqlGitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseScriptsPutSqlGit(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseScriptsPutSqlGitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseScriptsPutSqlGitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseScriptsPatchSqlGit(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseScriptsPatchSqlGitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseScriptsPatchSqlGitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseScriptsListSqlGitCommits(Response):
    commit_hash: str
    author_name: str
    date: str
    message: str

class _ResponseScriptsPostSqlGitCommits(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseScriptsGetSqlGitCommits(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseScriptsPostSqlGitCheckoutLatest(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseScriptsPostSqlGitCheckout(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseScriptsListJavascriptGit(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseScriptsListJavascriptGitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseScriptsListJavascriptGitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseScriptsPutJavascriptGit(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseScriptsPutJavascriptGitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseScriptsPutJavascriptGitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseScriptsPatchJavascriptGit(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseScriptsPatchJavascriptGitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseScriptsPatchJavascriptGitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseScriptsListJavascriptGitCommits(Response):
    commit_hash: str
    author_name: str
    date: str
    message: str

class _ResponseScriptsPostJavascriptGitCommits(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseScriptsGetJavascriptGitCommits(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseScriptsPostJavascriptGitCheckoutLatest(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseScriptsPostJavascriptGitCheckout(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseScriptsListPython3Git(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseScriptsListPython3GitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseScriptsListPython3GitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseScriptsPutPython3Git(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseScriptsPutPython3GitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseScriptsPutPython3GitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseScriptsPatchPython3Git(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseScriptsPatchPython3GitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseScriptsPatchPython3GitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseScriptsListPython3GitCommits(Response):
    commit_hash: str
    author_name: str
    date: str
    message: str

class _ResponseScriptsPostPython3GitCommits(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseScriptsGetPython3GitCommits(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseScriptsPostPython3GitCheckoutLatest(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseScriptsPostPython3GitCheckout(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseScriptsListRGit(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseScriptsListRGitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseScriptsListRGitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseScriptsPutRGit(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseScriptsPutRGitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseScriptsPutRGitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseScriptsPatchRGit(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseScriptsPatchRGitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseScriptsPatchRGitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseScriptsListRGitCommits(Response):
    commit_hash: str
    author_name: str
    date: str
    message: str

class _ResponseScriptsPostRGitCommits(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseScriptsGetRGitCommits(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseScriptsPostRGitCheckoutLatest(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseScriptsPostRGitCheckout(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseScriptsListSqlShares(Response):
    readers: _ResponseScriptsListSqlSharesReaders
    writers: _ResponseScriptsListSqlSharesWriters
    owners: _ResponseScriptsListSqlSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsListSqlSharesReaders(Response):
    users: List[_ResponseScriptsListSqlSharesReadersUsers]
    groups: List[_ResponseScriptsListSqlSharesReadersGroups]

class _ResponseScriptsListSqlSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListSqlSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListSqlSharesWriters(Response):
    users: List[_ResponseScriptsListSqlSharesWritersUsers]
    groups: List[_ResponseScriptsListSqlSharesWritersGroups]

class _ResponseScriptsListSqlSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListSqlSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListSqlSharesOwners(Response):
    users: List[_ResponseScriptsListSqlSharesOwnersUsers]
    groups: List[_ResponseScriptsListSqlSharesOwnersGroups]

class _ResponseScriptsListSqlSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListSqlSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutSqlSharesUsers(Response):
    readers: _ResponseScriptsPutSqlSharesUsersReaders
    writers: _ResponseScriptsPutSqlSharesUsersWriters
    owners: _ResponseScriptsPutSqlSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsPutSqlSharesUsersReaders(Response):
    users: List[_ResponseScriptsPutSqlSharesUsersReadersUsers]
    groups: List[_ResponseScriptsPutSqlSharesUsersReadersGroups]

class _ResponseScriptsPutSqlSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutSqlSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutSqlSharesUsersWriters(Response):
    users: List[_ResponseScriptsPutSqlSharesUsersWritersUsers]
    groups: List[_ResponseScriptsPutSqlSharesUsersWritersGroups]

class _ResponseScriptsPutSqlSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutSqlSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutSqlSharesUsersOwners(Response):
    users: List[_ResponseScriptsPutSqlSharesUsersOwnersUsers]
    groups: List[_ResponseScriptsPutSqlSharesUsersOwnersGroups]

class _ResponseScriptsPutSqlSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutSqlSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutSqlSharesGroups(Response):
    readers: _ResponseScriptsPutSqlSharesGroupsReaders
    writers: _ResponseScriptsPutSqlSharesGroupsWriters
    owners: _ResponseScriptsPutSqlSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsPutSqlSharesGroupsReaders(Response):
    users: List[_ResponseScriptsPutSqlSharesGroupsReadersUsers]
    groups: List[_ResponseScriptsPutSqlSharesGroupsReadersGroups]

class _ResponseScriptsPutSqlSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutSqlSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutSqlSharesGroupsWriters(Response):
    users: List[_ResponseScriptsPutSqlSharesGroupsWritersUsers]
    groups: List[_ResponseScriptsPutSqlSharesGroupsWritersGroups]

class _ResponseScriptsPutSqlSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutSqlSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutSqlSharesGroupsOwners(Response):
    users: List[_ResponseScriptsPutSqlSharesGroupsOwnersUsers]
    groups: List[_ResponseScriptsPutSqlSharesGroupsOwnersGroups]

class _ResponseScriptsPutSqlSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutSqlSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListSqlDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseScriptsPutSqlTransfer(Response):
    dependencies: List[_ResponseScriptsPutSqlTransferDependencies]

class _ResponseScriptsPutSqlTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseScriptsListSqlProjects(Response):
    id: int
    author: _ResponseScriptsListSqlProjectsAuthor
    name: str
    description: str
    users: List[_ResponseScriptsListSqlProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseScriptsListSqlProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsListSqlProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutSqlArchive(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPutSqlArchiveAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPutSqlArchiveProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPutSqlArchiveParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPutSqlArchiveLinks
    schedule: _ResponseScriptsPutSqlArchiveSchedule
    notifications: _ResponseScriptsPutSqlArchiveNotifications
    running_as: _ResponseScriptsPutSqlArchiveRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPutSqlArchiveLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    sql: str
    expanded_arguments: dict
    remote_host_id: int
    credential_id: int
    code_preview: str
    csv_settings: _ResponseScriptsPutSqlArchiveCsvSettings
    running_as_id: int

class _ResponseScriptsPutSqlArchiveAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutSqlArchiveProjects(Response):
    id: int
    name: str

class _ResponseScriptsPutSqlArchiveParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPutSqlArchiveLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPutSqlArchiveSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPutSqlArchiveNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPutSqlArchiveRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutSqlArchiveLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPutSqlArchiveCsvSettings(Response):
    include_header: bool
    compression: str
    column_delimiter: str
    unquoted: bool
    force_multifile: bool
    filename_prefix: str
    max_file_size: int

class _ResponseScriptsListContainersShares(Response):
    readers: _ResponseScriptsListContainersSharesReaders
    writers: _ResponseScriptsListContainersSharesWriters
    owners: _ResponseScriptsListContainersSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsListContainersSharesReaders(Response):
    users: List[_ResponseScriptsListContainersSharesReadersUsers]
    groups: List[_ResponseScriptsListContainersSharesReadersGroups]

class _ResponseScriptsListContainersSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListContainersSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListContainersSharesWriters(Response):
    users: List[_ResponseScriptsListContainersSharesWritersUsers]
    groups: List[_ResponseScriptsListContainersSharesWritersGroups]

class _ResponseScriptsListContainersSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListContainersSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListContainersSharesOwners(Response):
    users: List[_ResponseScriptsListContainersSharesOwnersUsers]
    groups: List[_ResponseScriptsListContainersSharesOwnersGroups]

class _ResponseScriptsListContainersSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListContainersSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutContainersSharesUsers(Response):
    readers: _ResponseScriptsPutContainersSharesUsersReaders
    writers: _ResponseScriptsPutContainersSharesUsersWriters
    owners: _ResponseScriptsPutContainersSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsPutContainersSharesUsersReaders(Response):
    users: List[_ResponseScriptsPutContainersSharesUsersReadersUsers]
    groups: List[_ResponseScriptsPutContainersSharesUsersReadersGroups]

class _ResponseScriptsPutContainersSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutContainersSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutContainersSharesUsersWriters(Response):
    users: List[_ResponseScriptsPutContainersSharesUsersWritersUsers]
    groups: List[_ResponseScriptsPutContainersSharesUsersWritersGroups]

class _ResponseScriptsPutContainersSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutContainersSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutContainersSharesUsersOwners(Response):
    users: List[_ResponseScriptsPutContainersSharesUsersOwnersUsers]
    groups: List[_ResponseScriptsPutContainersSharesUsersOwnersGroups]

class _ResponseScriptsPutContainersSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutContainersSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutContainersSharesGroups(Response):
    readers: _ResponseScriptsPutContainersSharesGroupsReaders
    writers: _ResponseScriptsPutContainersSharesGroupsWriters
    owners: _ResponseScriptsPutContainersSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsPutContainersSharesGroupsReaders(Response):
    users: List[_ResponseScriptsPutContainersSharesGroupsReadersUsers]
    groups: List[_ResponseScriptsPutContainersSharesGroupsReadersGroups]

class _ResponseScriptsPutContainersSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutContainersSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutContainersSharesGroupsWriters(Response):
    users: List[_ResponseScriptsPutContainersSharesGroupsWritersUsers]
    groups: List[_ResponseScriptsPutContainersSharesGroupsWritersGroups]

class _ResponseScriptsPutContainersSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutContainersSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutContainersSharesGroupsOwners(Response):
    users: List[_ResponseScriptsPutContainersSharesGroupsOwnersUsers]
    groups: List[_ResponseScriptsPutContainersSharesGroupsOwnersGroups]

class _ResponseScriptsPutContainersSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutContainersSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListContainersDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseScriptsPutContainersTransfer(Response):
    dependencies: List[_ResponseScriptsPutContainersTransferDependencies]

class _ResponseScriptsPutContainersTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseScriptsListContainersProjects(Response):
    id: int
    author: _ResponseScriptsListContainersProjectsAuthor
    name: str
    description: str
    users: List[_ResponseScriptsListContainersProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseScriptsListContainersProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsListContainersProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutContainersArchive(Response):
    id: int
    from_template_aliases: List[_ResponseScriptsPutContainersArchiveFromTemplateAliases]
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPutContainersArchiveAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPutContainersArchiveProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPutContainersArchiveParams]
    arguments: dict
    is_template: bool
    template_dependents_count: int
    published_as_template_id: int
    from_template_id: int
    template_script_name: str
    links: _ResponseScriptsPutContainersArchiveLinks
    schedule: _ResponseScriptsPutContainersArchiveSchedule
    notifications: _ResponseScriptsPutContainersArchiveNotifications
    running_as: _ResponseScriptsPutContainersArchiveRunningAs
    required_resources: _ResponseScriptsPutContainersArchiveRequiredResources
    repo_http_uri: str
    repo_ref: str
    remote_host_credential_id: int
    git_credential_id: int
    docker_command: str
    docker_image_name: str
    docker_image_tag: str
    instance_type: str
    cancel_timeout: int
    last_run: _ResponseScriptsPutContainersArchiveLastRun
    time_zone: str
    partition_label: str
    my_permission_level: str
    hidden: bool
    archived: str
    target_project_id: int
    running_as_id: int

class _ResponseScriptsPutContainersArchiveFromTemplateAliases(Response):
    id: int
    object_id: int
    alias: str

class _ResponseScriptsPutContainersArchiveAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutContainersArchiveProjects(Response):
    id: int
    name: str

class _ResponseScriptsPutContainersArchiveParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPutContainersArchiveLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPutContainersArchiveSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPutContainersArchiveNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPutContainersArchiveRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutContainersArchiveRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPutContainersArchiveLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsListPython3Shares(Response):
    readers: _ResponseScriptsListPython3SharesReaders
    writers: _ResponseScriptsListPython3SharesWriters
    owners: _ResponseScriptsListPython3SharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsListPython3SharesReaders(Response):
    users: List[_ResponseScriptsListPython3SharesReadersUsers]
    groups: List[_ResponseScriptsListPython3SharesReadersGroups]

class _ResponseScriptsListPython3SharesReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListPython3SharesReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListPython3SharesWriters(Response):
    users: List[_ResponseScriptsListPython3SharesWritersUsers]
    groups: List[_ResponseScriptsListPython3SharesWritersGroups]

class _ResponseScriptsListPython3SharesWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListPython3SharesWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListPython3SharesOwners(Response):
    users: List[_ResponseScriptsListPython3SharesOwnersUsers]
    groups: List[_ResponseScriptsListPython3SharesOwnersGroups]

class _ResponseScriptsListPython3SharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListPython3SharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutPython3SharesUsers(Response):
    readers: _ResponseScriptsPutPython3SharesUsersReaders
    writers: _ResponseScriptsPutPython3SharesUsersWriters
    owners: _ResponseScriptsPutPython3SharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsPutPython3SharesUsersReaders(Response):
    users: List[_ResponseScriptsPutPython3SharesUsersReadersUsers]
    groups: List[_ResponseScriptsPutPython3SharesUsersReadersGroups]

class _ResponseScriptsPutPython3SharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutPython3SharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutPython3SharesUsersWriters(Response):
    users: List[_ResponseScriptsPutPython3SharesUsersWritersUsers]
    groups: List[_ResponseScriptsPutPython3SharesUsersWritersGroups]

class _ResponseScriptsPutPython3SharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutPython3SharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutPython3SharesUsersOwners(Response):
    users: List[_ResponseScriptsPutPython3SharesUsersOwnersUsers]
    groups: List[_ResponseScriptsPutPython3SharesUsersOwnersGroups]

class _ResponseScriptsPutPython3SharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutPython3SharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutPython3SharesGroups(Response):
    readers: _ResponseScriptsPutPython3SharesGroupsReaders
    writers: _ResponseScriptsPutPython3SharesGroupsWriters
    owners: _ResponseScriptsPutPython3SharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsPutPython3SharesGroupsReaders(Response):
    users: List[_ResponseScriptsPutPython3SharesGroupsReadersUsers]
    groups: List[_ResponseScriptsPutPython3SharesGroupsReadersGroups]

class _ResponseScriptsPutPython3SharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutPython3SharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutPython3SharesGroupsWriters(Response):
    users: List[_ResponseScriptsPutPython3SharesGroupsWritersUsers]
    groups: List[_ResponseScriptsPutPython3SharesGroupsWritersGroups]

class _ResponseScriptsPutPython3SharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutPython3SharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutPython3SharesGroupsOwners(Response):
    users: List[_ResponseScriptsPutPython3SharesGroupsOwnersUsers]
    groups: List[_ResponseScriptsPutPython3SharesGroupsOwnersGroups]

class _ResponseScriptsPutPython3SharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutPython3SharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListPython3Dependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseScriptsPutPython3Transfer(Response):
    dependencies: List[_ResponseScriptsPutPython3TransferDependencies]

class _ResponseScriptsPutPython3TransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseScriptsListPython3Projects(Response):
    id: int
    author: _ResponseScriptsListPython3ProjectsAuthor
    name: str
    description: str
    users: List[_ResponseScriptsListPython3ProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseScriptsListPython3ProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsListPython3ProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutPython3Archive(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPutPython3ArchiveAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPutPython3ArchiveProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPutPython3ArchiveParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPutPython3ArchiveLinks
    schedule: _ResponseScriptsPutPython3ArchiveSchedule
    notifications: _ResponseScriptsPutPython3ArchiveNotifications
    running_as: _ResponseScriptsPutPython3ArchiveRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPutPython3ArchiveLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    required_resources: _ResponseScriptsPutPython3ArchiveRequiredResources
    instance_type: str
    cancel_timeout: int
    docker_image_tag: str
    partition_label: str
    running_as_id: int
    source: str

class _ResponseScriptsPutPython3ArchiveAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutPython3ArchiveProjects(Response):
    id: int
    name: str

class _ResponseScriptsPutPython3ArchiveParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPutPython3ArchiveLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPutPython3ArchiveSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPutPython3ArchiveNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPutPython3ArchiveRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutPython3ArchiveLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPutPython3ArchiveRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsListRShares(Response):
    readers: _ResponseScriptsListRSharesReaders
    writers: _ResponseScriptsListRSharesWriters
    owners: _ResponseScriptsListRSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsListRSharesReaders(Response):
    users: List[_ResponseScriptsListRSharesReadersUsers]
    groups: List[_ResponseScriptsListRSharesReadersGroups]

class _ResponseScriptsListRSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListRSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListRSharesWriters(Response):
    users: List[_ResponseScriptsListRSharesWritersUsers]
    groups: List[_ResponseScriptsListRSharesWritersGroups]

class _ResponseScriptsListRSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListRSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListRSharesOwners(Response):
    users: List[_ResponseScriptsListRSharesOwnersUsers]
    groups: List[_ResponseScriptsListRSharesOwnersGroups]

class _ResponseScriptsListRSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListRSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutRSharesUsers(Response):
    readers: _ResponseScriptsPutRSharesUsersReaders
    writers: _ResponseScriptsPutRSharesUsersWriters
    owners: _ResponseScriptsPutRSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsPutRSharesUsersReaders(Response):
    users: List[_ResponseScriptsPutRSharesUsersReadersUsers]
    groups: List[_ResponseScriptsPutRSharesUsersReadersGroups]

class _ResponseScriptsPutRSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutRSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutRSharesUsersWriters(Response):
    users: List[_ResponseScriptsPutRSharesUsersWritersUsers]
    groups: List[_ResponseScriptsPutRSharesUsersWritersGroups]

class _ResponseScriptsPutRSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutRSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutRSharesUsersOwners(Response):
    users: List[_ResponseScriptsPutRSharesUsersOwnersUsers]
    groups: List[_ResponseScriptsPutRSharesUsersOwnersGroups]

class _ResponseScriptsPutRSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutRSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutRSharesGroups(Response):
    readers: _ResponseScriptsPutRSharesGroupsReaders
    writers: _ResponseScriptsPutRSharesGroupsWriters
    owners: _ResponseScriptsPutRSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsPutRSharesGroupsReaders(Response):
    users: List[_ResponseScriptsPutRSharesGroupsReadersUsers]
    groups: List[_ResponseScriptsPutRSharesGroupsReadersGroups]

class _ResponseScriptsPutRSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutRSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutRSharesGroupsWriters(Response):
    users: List[_ResponseScriptsPutRSharesGroupsWritersUsers]
    groups: List[_ResponseScriptsPutRSharesGroupsWritersGroups]

class _ResponseScriptsPutRSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutRSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutRSharesGroupsOwners(Response):
    users: List[_ResponseScriptsPutRSharesGroupsOwnersUsers]
    groups: List[_ResponseScriptsPutRSharesGroupsOwnersGroups]

class _ResponseScriptsPutRSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutRSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListRDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseScriptsPutRTransfer(Response):
    dependencies: List[_ResponseScriptsPutRTransferDependencies]

class _ResponseScriptsPutRTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseScriptsListRProjects(Response):
    id: int
    author: _ResponseScriptsListRProjectsAuthor
    name: str
    description: str
    users: List[_ResponseScriptsListRProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseScriptsListRProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsListRProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutRArchive(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPutRArchiveAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPutRArchiveProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPutRArchiveParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPutRArchiveLinks
    schedule: _ResponseScriptsPutRArchiveSchedule
    notifications: _ResponseScriptsPutRArchiveNotifications
    running_as: _ResponseScriptsPutRArchiveRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPutRArchiveLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    required_resources: _ResponseScriptsPutRArchiveRequiredResources
    instance_type: str
    cancel_timeout: int
    docker_image_tag: str
    partition_label: str
    running_as_id: int
    source: str

class _ResponseScriptsPutRArchiveAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutRArchiveProjects(Response):
    id: int
    name: str

class _ResponseScriptsPutRArchiveParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPutRArchiveLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPutRArchiveSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPutRArchiveNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPutRArchiveRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutRArchiveLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPutRArchiveRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsListDbtShares(Response):
    readers: _ResponseScriptsListDbtSharesReaders
    writers: _ResponseScriptsListDbtSharesWriters
    owners: _ResponseScriptsListDbtSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsListDbtSharesReaders(Response):
    users: List[_ResponseScriptsListDbtSharesReadersUsers]
    groups: List[_ResponseScriptsListDbtSharesReadersGroups]

class _ResponseScriptsListDbtSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListDbtSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListDbtSharesWriters(Response):
    users: List[_ResponseScriptsListDbtSharesWritersUsers]
    groups: List[_ResponseScriptsListDbtSharesWritersGroups]

class _ResponseScriptsListDbtSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListDbtSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListDbtSharesOwners(Response):
    users: List[_ResponseScriptsListDbtSharesOwnersUsers]
    groups: List[_ResponseScriptsListDbtSharesOwnersGroups]

class _ResponseScriptsListDbtSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListDbtSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutDbtSharesUsers(Response):
    readers: _ResponseScriptsPutDbtSharesUsersReaders
    writers: _ResponseScriptsPutDbtSharesUsersWriters
    owners: _ResponseScriptsPutDbtSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsPutDbtSharesUsersReaders(Response):
    users: List[_ResponseScriptsPutDbtSharesUsersReadersUsers]
    groups: List[_ResponseScriptsPutDbtSharesUsersReadersGroups]

class _ResponseScriptsPutDbtSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutDbtSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutDbtSharesUsersWriters(Response):
    users: List[_ResponseScriptsPutDbtSharesUsersWritersUsers]
    groups: List[_ResponseScriptsPutDbtSharesUsersWritersGroups]

class _ResponseScriptsPutDbtSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutDbtSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutDbtSharesUsersOwners(Response):
    users: List[_ResponseScriptsPutDbtSharesUsersOwnersUsers]
    groups: List[_ResponseScriptsPutDbtSharesUsersOwnersGroups]

class _ResponseScriptsPutDbtSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutDbtSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutDbtSharesGroups(Response):
    readers: _ResponseScriptsPutDbtSharesGroupsReaders
    writers: _ResponseScriptsPutDbtSharesGroupsWriters
    owners: _ResponseScriptsPutDbtSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsPutDbtSharesGroupsReaders(Response):
    users: List[_ResponseScriptsPutDbtSharesGroupsReadersUsers]
    groups: List[_ResponseScriptsPutDbtSharesGroupsReadersGroups]

class _ResponseScriptsPutDbtSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutDbtSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutDbtSharesGroupsWriters(Response):
    users: List[_ResponseScriptsPutDbtSharesGroupsWritersUsers]
    groups: List[_ResponseScriptsPutDbtSharesGroupsWritersGroups]

class _ResponseScriptsPutDbtSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutDbtSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutDbtSharesGroupsOwners(Response):
    users: List[_ResponseScriptsPutDbtSharesGroupsOwnersUsers]
    groups: List[_ResponseScriptsPutDbtSharesGroupsOwnersGroups]

class _ResponseScriptsPutDbtSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutDbtSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListDbtDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseScriptsPutDbtTransfer(Response):
    dependencies: List[_ResponseScriptsPutDbtTransferDependencies]

class _ResponseScriptsPutDbtTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseScriptsListDbtProjects(Response):
    id: int
    author: _ResponseScriptsListDbtProjectsAuthor
    name: str
    description: str
    users: List[_ResponseScriptsListDbtProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseScriptsListDbtProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsListDbtProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutDbtArchive(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPutDbtArchiveAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPutDbtArchiveProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPutDbtArchiveParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPutDbtArchiveLinks
    schedule: _ResponseScriptsPutDbtArchiveSchedule
    notifications: _ResponseScriptsPutDbtArchiveNotifications
    running_as: _ResponseScriptsPutDbtArchiveRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPutDbtArchiveLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    required_resources: _ResponseScriptsPutDbtArchiveRequiredResources
    instance_type: str
    cancel_timeout: int
    docker_image_tag: str
    partition_label: str
    running_as_id: int
    dbt_project: _ResponseScriptsPutDbtArchiveDbtProject
    repo_http_uri: str
    repo_ref: str
    target_database: _ResponseScriptsPutDbtArchiveTargetDatabase

class _ResponseScriptsPutDbtArchiveAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutDbtArchiveProjects(Response):
    id: int
    name: str

class _ResponseScriptsPutDbtArchiveParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPutDbtArchiveLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPutDbtArchiveSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPutDbtArchiveNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPutDbtArchiveRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutDbtArchiveLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPutDbtArchiveRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPutDbtArchiveDbtProject(Response):
    target: str
    schema: str
    project_dir: str
    profiles_dir: str
    dbt_version: str
    dbt_command: str
    dbt_command_line_args: str
    docs_report_id: str
    skip_docs_generation: bool
    generate_profiles: bool

class _ResponseScriptsPutDbtArchiveTargetDatabase(Response):
    remote_host_id: int
    credential_id: int

class _ResponseScriptsListJavascriptShares(Response):
    readers: _ResponseScriptsListJavascriptSharesReaders
    writers: _ResponseScriptsListJavascriptSharesWriters
    owners: _ResponseScriptsListJavascriptSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsListJavascriptSharesReaders(Response):
    users: List[_ResponseScriptsListJavascriptSharesReadersUsers]
    groups: List[_ResponseScriptsListJavascriptSharesReadersGroups]

class _ResponseScriptsListJavascriptSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListJavascriptSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListJavascriptSharesWriters(Response):
    users: List[_ResponseScriptsListJavascriptSharesWritersUsers]
    groups: List[_ResponseScriptsListJavascriptSharesWritersGroups]

class _ResponseScriptsListJavascriptSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListJavascriptSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListJavascriptSharesOwners(Response):
    users: List[_ResponseScriptsListJavascriptSharesOwnersUsers]
    groups: List[_ResponseScriptsListJavascriptSharesOwnersGroups]

class _ResponseScriptsListJavascriptSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListJavascriptSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutJavascriptSharesUsers(Response):
    readers: _ResponseScriptsPutJavascriptSharesUsersReaders
    writers: _ResponseScriptsPutJavascriptSharesUsersWriters
    owners: _ResponseScriptsPutJavascriptSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsPutJavascriptSharesUsersReaders(Response):
    users: List[_ResponseScriptsPutJavascriptSharesUsersReadersUsers]
    groups: List[_ResponseScriptsPutJavascriptSharesUsersReadersGroups]

class _ResponseScriptsPutJavascriptSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutJavascriptSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutJavascriptSharesUsersWriters(Response):
    users: List[_ResponseScriptsPutJavascriptSharesUsersWritersUsers]
    groups: List[_ResponseScriptsPutJavascriptSharesUsersWritersGroups]

class _ResponseScriptsPutJavascriptSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutJavascriptSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutJavascriptSharesUsersOwners(Response):
    users: List[_ResponseScriptsPutJavascriptSharesUsersOwnersUsers]
    groups: List[_ResponseScriptsPutJavascriptSharesUsersOwnersGroups]

class _ResponseScriptsPutJavascriptSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutJavascriptSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutJavascriptSharesGroups(Response):
    readers: _ResponseScriptsPutJavascriptSharesGroupsReaders
    writers: _ResponseScriptsPutJavascriptSharesGroupsWriters
    owners: _ResponseScriptsPutJavascriptSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsPutJavascriptSharesGroupsReaders(Response):
    users: List[_ResponseScriptsPutJavascriptSharesGroupsReadersUsers]
    groups: List[_ResponseScriptsPutJavascriptSharesGroupsReadersGroups]

class _ResponseScriptsPutJavascriptSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutJavascriptSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutJavascriptSharesGroupsWriters(Response):
    users: List[_ResponseScriptsPutJavascriptSharesGroupsWritersUsers]
    groups: List[_ResponseScriptsPutJavascriptSharesGroupsWritersGroups]

class _ResponseScriptsPutJavascriptSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutJavascriptSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutJavascriptSharesGroupsOwners(Response):
    users: List[_ResponseScriptsPutJavascriptSharesGroupsOwnersUsers]
    groups: List[_ResponseScriptsPutJavascriptSharesGroupsOwnersGroups]

class _ResponseScriptsPutJavascriptSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutJavascriptSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListJavascriptDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseScriptsPutJavascriptTransfer(Response):
    dependencies: List[_ResponseScriptsPutJavascriptTransferDependencies]

class _ResponseScriptsPutJavascriptTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseScriptsListJavascriptProjects(Response):
    id: int
    author: _ResponseScriptsListJavascriptProjectsAuthor
    name: str
    description: str
    users: List[_ResponseScriptsListJavascriptProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseScriptsListJavascriptProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsListJavascriptProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutJavascriptArchive(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPutJavascriptArchiveAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPutJavascriptArchiveProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPutJavascriptArchiveParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPutJavascriptArchiveLinks
    schedule: _ResponseScriptsPutJavascriptArchiveSchedule
    notifications: _ResponseScriptsPutJavascriptArchiveNotifications
    running_as: _ResponseScriptsPutJavascriptArchiveRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPutJavascriptArchiveLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    source: str
    remote_host_id: int
    credential_id: int
    running_as_id: int

class _ResponseScriptsPutJavascriptArchiveAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutJavascriptArchiveProjects(Response):
    id: int
    name: str

class _ResponseScriptsPutJavascriptArchiveParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPutJavascriptArchiveLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPutJavascriptArchiveSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPutJavascriptArchiveNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPutJavascriptArchiveRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutJavascriptArchiveLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsListCustomShares(Response):
    readers: _ResponseScriptsListCustomSharesReaders
    writers: _ResponseScriptsListCustomSharesWriters
    owners: _ResponseScriptsListCustomSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsListCustomSharesReaders(Response):
    users: List[_ResponseScriptsListCustomSharesReadersUsers]
    groups: List[_ResponseScriptsListCustomSharesReadersGroups]

class _ResponseScriptsListCustomSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListCustomSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListCustomSharesWriters(Response):
    users: List[_ResponseScriptsListCustomSharesWritersUsers]
    groups: List[_ResponseScriptsListCustomSharesWritersGroups]

class _ResponseScriptsListCustomSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListCustomSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListCustomSharesOwners(Response):
    users: List[_ResponseScriptsListCustomSharesOwnersUsers]
    groups: List[_ResponseScriptsListCustomSharesOwnersGroups]

class _ResponseScriptsListCustomSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsListCustomSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutCustomSharesUsers(Response):
    readers: _ResponseScriptsPutCustomSharesUsersReaders
    writers: _ResponseScriptsPutCustomSharesUsersWriters
    owners: _ResponseScriptsPutCustomSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsPutCustomSharesUsersReaders(Response):
    users: List[_ResponseScriptsPutCustomSharesUsersReadersUsers]
    groups: List[_ResponseScriptsPutCustomSharesUsersReadersGroups]

class _ResponseScriptsPutCustomSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutCustomSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutCustomSharesUsersWriters(Response):
    users: List[_ResponseScriptsPutCustomSharesUsersWritersUsers]
    groups: List[_ResponseScriptsPutCustomSharesUsersWritersGroups]

class _ResponseScriptsPutCustomSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutCustomSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutCustomSharesUsersOwners(Response):
    users: List[_ResponseScriptsPutCustomSharesUsersOwnersUsers]
    groups: List[_ResponseScriptsPutCustomSharesUsersOwnersGroups]

class _ResponseScriptsPutCustomSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutCustomSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutCustomSharesGroups(Response):
    readers: _ResponseScriptsPutCustomSharesGroupsReaders
    writers: _ResponseScriptsPutCustomSharesGroupsWriters
    owners: _ResponseScriptsPutCustomSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseScriptsPutCustomSharesGroupsReaders(Response):
    users: List[_ResponseScriptsPutCustomSharesGroupsReadersUsers]
    groups: List[_ResponseScriptsPutCustomSharesGroupsReadersGroups]

class _ResponseScriptsPutCustomSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutCustomSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutCustomSharesGroupsWriters(Response):
    users: List[_ResponseScriptsPutCustomSharesGroupsWritersUsers]
    groups: List[_ResponseScriptsPutCustomSharesGroupsWritersGroups]

class _ResponseScriptsPutCustomSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutCustomSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseScriptsPutCustomSharesGroupsOwners(Response):
    users: List[_ResponseScriptsPutCustomSharesGroupsOwnersUsers]
    groups: List[_ResponseScriptsPutCustomSharesGroupsOwnersGroups]

class _ResponseScriptsPutCustomSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseScriptsPutCustomSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseScriptsListCustomDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseScriptsPutCustomTransfer(Response):
    dependencies: List[_ResponseScriptsPutCustomTransferDependencies]

class _ResponseScriptsPutCustomTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseScriptsListCustomProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsListCustomProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutCustomArchive(Response):
    id: int
    from_template_aliases: List[_ResponseScriptsPutCustomArchiveFromTemplateAliases]
    name: str
    type: str
    backing_script_type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPutCustomArchiveAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPutCustomArchiveProjects]
    parent_id: int
    params: List[_ResponseScriptsPutCustomArchiveParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    ui_report_url: int
    ui_report_id: int
    ui_report_provide_api_key: bool
    template_script_name: str
    template_note: str
    remote_host_id: int
    credential_id: int
    code_preview: str
    schedule: _ResponseScriptsPutCustomArchiveSchedule
    notifications: _ResponseScriptsPutCustomArchiveNotifications
    running_as: _ResponseScriptsPutCustomArchiveRunningAs
    time_zone: str
    last_run: _ResponseScriptsPutCustomArchiveLastRun
    my_permission_level: str
    hidden: bool
    archived: str
    target_project_id: int
    last_successful_run: _ResponseScriptsPutCustomArchiveLastSuccessfulRun
    required_resources: _ResponseScriptsPutCustomArchiveRequiredResources
    partition_label: str
    running_as_id: int

class _ResponseScriptsPutCustomArchiveFromTemplateAliases(Response):
    id: int
    object_id: int
    alias: str

class _ResponseScriptsPutCustomArchiveAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutCustomArchiveProjects(Response):
    id: int
    name: str

class _ResponseScriptsPutCustomArchiveParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPutCustomArchiveSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPutCustomArchiveNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPutCustomArchiveRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPutCustomArchiveLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPutCustomArchiveLastSuccessfulRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPutCustomArchiveRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPostSqlClone(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPostSqlCloneAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPostSqlCloneProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPostSqlCloneParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPostSqlCloneLinks
    schedule: _ResponseScriptsPostSqlCloneSchedule
    notifications: _ResponseScriptsPostSqlCloneNotifications
    running_as: _ResponseScriptsPostSqlCloneRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPostSqlCloneLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    sql: str
    expanded_arguments: dict
    remote_host_id: int
    credential_id: int
    code_preview: str
    csv_settings: _ResponseScriptsPostSqlCloneCsvSettings
    running_as_id: int

class _ResponseScriptsPostSqlCloneAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostSqlCloneProjects(Response):
    id: int
    name: str

class _ResponseScriptsPostSqlCloneParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPostSqlCloneLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPostSqlCloneSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPostSqlCloneNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPostSqlCloneRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostSqlCloneLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPostSqlCloneCsvSettings(Response):
    include_header: bool
    compression: str
    column_delimiter: str
    unquoted: bool
    force_multifile: bool
    filename_prefix: str
    max_file_size: int

class _ResponseScriptsPostJavascriptClone(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPostJavascriptCloneAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPostJavascriptCloneProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPostJavascriptCloneParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPostJavascriptCloneLinks
    schedule: _ResponseScriptsPostJavascriptCloneSchedule
    notifications: _ResponseScriptsPostJavascriptCloneNotifications
    running_as: _ResponseScriptsPostJavascriptCloneRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPostJavascriptCloneLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    source: str
    remote_host_id: int
    credential_id: int
    running_as_id: int

class _ResponseScriptsPostJavascriptCloneAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostJavascriptCloneProjects(Response):
    id: int
    name: str

class _ResponseScriptsPostJavascriptCloneParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPostJavascriptCloneLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPostJavascriptCloneSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPostJavascriptCloneNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPostJavascriptCloneRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostJavascriptCloneLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPostPython3Clone(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPostPython3CloneAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPostPython3CloneProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPostPython3CloneParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPostPython3CloneLinks
    schedule: _ResponseScriptsPostPython3CloneSchedule
    notifications: _ResponseScriptsPostPython3CloneNotifications
    running_as: _ResponseScriptsPostPython3CloneRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPostPython3CloneLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    required_resources: _ResponseScriptsPostPython3CloneRequiredResources
    instance_type: str
    cancel_timeout: int
    docker_image_tag: str
    partition_label: str
    running_as_id: int
    source: str

class _ResponseScriptsPostPython3CloneAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostPython3CloneProjects(Response):
    id: int
    name: str

class _ResponseScriptsPostPython3CloneParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPostPython3CloneLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPostPython3CloneSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPostPython3CloneNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPostPython3CloneRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostPython3CloneLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPostPython3CloneRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPostRClone(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPostRCloneAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPostRCloneProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPostRCloneParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPostRCloneLinks
    schedule: _ResponseScriptsPostRCloneSchedule
    notifications: _ResponseScriptsPostRCloneNotifications
    running_as: _ResponseScriptsPostRCloneRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPostRCloneLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    required_resources: _ResponseScriptsPostRCloneRequiredResources
    instance_type: str
    cancel_timeout: int
    docker_image_tag: str
    partition_label: str
    running_as_id: int
    source: str

class _ResponseScriptsPostRCloneAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostRCloneProjects(Response):
    id: int
    name: str

class _ResponseScriptsPostRCloneParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPostRCloneLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPostRCloneSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPostRCloneNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPostRCloneRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostRCloneLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPostRCloneRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPostContainersClone(Response):
    id: int
    from_template_aliases: List[_ResponseScriptsPostContainersCloneFromTemplateAliases]
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPostContainersCloneAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPostContainersCloneProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPostContainersCloneParams]
    arguments: dict
    is_template: bool
    template_dependents_count: int
    published_as_template_id: int
    from_template_id: int
    template_script_name: str
    links: _ResponseScriptsPostContainersCloneLinks
    schedule: _ResponseScriptsPostContainersCloneSchedule
    notifications: _ResponseScriptsPostContainersCloneNotifications
    running_as: _ResponseScriptsPostContainersCloneRunningAs
    required_resources: _ResponseScriptsPostContainersCloneRequiredResources
    repo_http_uri: str
    repo_ref: str
    remote_host_credential_id: int
    git_credential_id: int
    docker_command: str
    docker_image_name: str
    docker_image_tag: str
    instance_type: str
    cancel_timeout: int
    last_run: _ResponseScriptsPostContainersCloneLastRun
    time_zone: str
    partition_label: str
    my_permission_level: str
    hidden: bool
    archived: str
    target_project_id: int
    running_as_id: int

class _ResponseScriptsPostContainersCloneFromTemplateAliases(Response):
    id: int
    object_id: int
    alias: str

class _ResponseScriptsPostContainersCloneAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostContainersCloneProjects(Response):
    id: int
    name: str

class _ResponseScriptsPostContainersCloneParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPostContainersCloneLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPostContainersCloneSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPostContainersCloneNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPostContainersCloneRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostContainersCloneRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPostContainersCloneLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPostDbtClone(Response):
    id: int
    name: str
    type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPostDbtCloneAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPostDbtCloneProjects]
    parent_id: int
    user_context: str
    params: List[_ResponseScriptsPostDbtCloneParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    template_dependents_count: int
    template_script_name: str
    links: _ResponseScriptsPostDbtCloneLinks
    schedule: _ResponseScriptsPostDbtCloneSchedule
    notifications: _ResponseScriptsPostDbtCloneNotifications
    running_as: _ResponseScriptsPostDbtCloneRunningAs
    next_run_at: str
    time_zone: str
    last_run: _ResponseScriptsPostDbtCloneLastRun
    my_permission_level: str
    hidden: bool
    target_project_id: int
    archived: str
    required_resources: _ResponseScriptsPostDbtCloneRequiredResources
    instance_type: str
    cancel_timeout: int
    docker_image_tag: str
    partition_label: str
    running_as_id: int
    dbt_project: _ResponseScriptsPostDbtCloneDbtProject
    repo_http_uri: str
    repo_ref: str
    target_database: _ResponseScriptsPostDbtCloneTargetDatabase

class _ResponseScriptsPostDbtCloneAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostDbtCloneProjects(Response):
    id: int
    name: str

class _ResponseScriptsPostDbtCloneParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPostDbtCloneLinks(Response):
    details: str
    runs: str

class _ResponseScriptsPostDbtCloneSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPostDbtCloneNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPostDbtCloneRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostDbtCloneLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPostDbtCloneRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseScriptsPostDbtCloneDbtProject(Response):
    target: str
    schema: str
    project_dir: str
    profiles_dir: str
    dbt_version: str
    dbt_command: str
    dbt_command_line_args: str
    docs_report_id: str
    skip_docs_generation: bool
    generate_profiles: bool

class _ResponseScriptsPostDbtCloneTargetDatabase(Response):
    remote_host_id: int
    credential_id: int

class _ResponseScriptsPostCustomClone(Response):
    id: int
    from_template_aliases: List[_ResponseScriptsPostCustomCloneFromTemplateAliases]
    name: str
    type: str
    backing_script_type: str
    created_at: str
    updated_at: str
    author: _ResponseScriptsPostCustomCloneAuthor
    state: str
    finished_at: str
    category: str
    projects: List[_ResponseScriptsPostCustomCloneProjects]
    parent_id: int
    params: List[_ResponseScriptsPostCustomCloneParams]
    arguments: dict
    is_template: bool
    published_as_template_id: int
    from_template_id: int
    ui_report_url: int
    ui_report_id: int
    ui_report_provide_api_key: bool
    template_script_name: str
    template_note: str
    remote_host_id: int
    credential_id: int
    code_preview: str
    schedule: _ResponseScriptsPostCustomCloneSchedule
    notifications: _ResponseScriptsPostCustomCloneNotifications
    running_as: _ResponseScriptsPostCustomCloneRunningAs
    time_zone: str
    last_run: _ResponseScriptsPostCustomCloneLastRun
    my_permission_level: str
    hidden: bool
    archived: str
    target_project_id: int
    last_successful_run: _ResponseScriptsPostCustomCloneLastSuccessfulRun
    required_resources: _ResponseScriptsPostCustomCloneRequiredResources
    partition_label: str
    running_as_id: int

class _ResponseScriptsPostCustomCloneFromTemplateAliases(Response):
    id: int
    object_id: int
    alias: str

class _ResponseScriptsPostCustomCloneAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostCustomCloneProjects(Response):
    id: int
    name: str

class _ResponseScriptsPostCustomCloneParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseScriptsPostCustomCloneSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseScriptsPostCustomCloneNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    success_email_from_name: str
    success_email_reply_to: str
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseScriptsPostCustomCloneRunningAs(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseScriptsPostCustomCloneLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPostCustomCloneLastSuccessfulRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseScriptsPostCustomCloneRequiredResources(Response):
    cpu: int
    memory: int
    disk_space: float

class _ResponseSearchList(Response):
    total_results: int
    aggregations: dict
    results: List[_ResponseSearchListResults]

class _ResponseSearchListResults(Response):
    score: float
    type: str
    id: int
    name: str
    type_name: str
    updated_at: str
    owner: str
    use_count: int
    last_run_id: int
    last_run_state: str
    last_run_start: str
    last_run_finish: str
    public: bool
    last_run_exception: str
    auto_share: bool

class _ResponseSearchListTypes(Response):
    type: str

class _ResponseSearchListQueries(Response):
    id: int
    database: int
    credential: int
    sql: str
    author_id: int
    archived: bool
    created_at: str
    updated_at: str
    last_run: _ResponseSearchListQueriesLastRun

class _ResponseSearchListQueriesLastRun(Response):
    id: int
    state: str
    started_at: str
    finished_at: str
    error: str

class _ResponseServicesList(Response):
    id: int
    name: str
    description: str
    user: _ResponseServicesListUser
    type: str
    created_at: str
    updated_at: str
    git_repo_url: str
    git_repo_ref: str
    git_path_dir: str
    current_deployment: _ResponseServicesListCurrentDeployment
    archived: str

class _ResponseServicesListUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseServicesListCurrentDeployment(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    service_id: int

class _ResponseServicesPost(Response):
    id: int
    name: str
    description: str
    user: _ResponseServicesPostUser
    type: str
    docker_image_name: str
    docker_image_tag: str
    schedule: _ResponseServicesPostSchedule
    time_zone: str
    replicas: int
    max_replicas: int
    instance_type: str
    memory: int
    cpu: int
    created_at: str
    updated_at: str
    credentials: List[int]
    permission_set_id: int
    git_repo_url: str
    git_repo_ref: str
    git_path_dir: str
    report_id: int
    current_deployment: _ResponseServicesPostCurrentDeployment
    current_url: str
    environment_variables: dict
    notifications: _ResponseServicesPostNotifications
    partition_label: str
    my_permission_level: str
    archived: str
    hidden: bool

class _ResponseServicesPostUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseServicesPostSchedule(Response):
    runtime_plan: str
    recurrences: List[_ResponseServicesPostScheduleRecurrences]

class _ResponseServicesPostScheduleRecurrences(Response):
    scheduled_days: List[int]
    scheduled_hours: List[int]

class _ResponseServicesPostCurrentDeployment(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    display_url: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    service_id: int

class _ResponseServicesPostNotifications(Response):
    failure_email_addresses: List[str]
    failure_on: bool

class _ResponseServicesGet(Response):
    id: int
    name: str
    description: str
    user: _ResponseServicesGetUser
    type: str
    docker_image_name: str
    docker_image_tag: str
    schedule: _ResponseServicesGetSchedule
    time_zone: str
    replicas: int
    max_replicas: int
    instance_type: str
    memory: int
    cpu: int
    created_at: str
    updated_at: str
    credentials: List[int]
    permission_set_id: int
    git_repo_url: str
    git_repo_ref: str
    git_path_dir: str
    report_id: int
    current_deployment: _ResponseServicesGetCurrentDeployment
    current_url: str
    environment_variables: dict
    notifications: _ResponseServicesGetNotifications
    partition_label: str
    my_permission_level: str
    archived: str
    hidden: bool

class _ResponseServicesGetUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseServicesGetSchedule(Response):
    runtime_plan: str
    recurrences: List[_ResponseServicesGetScheduleRecurrences]

class _ResponseServicesGetScheduleRecurrences(Response):
    scheduled_days: List[int]
    scheduled_hours: List[int]

class _ResponseServicesGetCurrentDeployment(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    display_url: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    service_id: int

class _ResponseServicesGetNotifications(Response):
    failure_email_addresses: List[str]
    failure_on: bool

class _ResponseServicesPut(Response):
    id: int
    name: str
    description: str
    user: _ResponseServicesPutUser
    type: str
    docker_image_name: str
    docker_image_tag: str
    schedule: _ResponseServicesPutSchedule
    time_zone: str
    replicas: int
    max_replicas: int
    instance_type: str
    memory: int
    cpu: int
    created_at: str
    updated_at: str
    credentials: List[int]
    permission_set_id: int
    git_repo_url: str
    git_repo_ref: str
    git_path_dir: str
    report_id: int
    current_deployment: _ResponseServicesPutCurrentDeployment
    current_url: str
    environment_variables: dict
    notifications: _ResponseServicesPutNotifications
    partition_label: str
    my_permission_level: str
    archived: str
    hidden: bool

class _ResponseServicesPutUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseServicesPutSchedule(Response):
    runtime_plan: str
    recurrences: List[_ResponseServicesPutScheduleRecurrences]

class _ResponseServicesPutScheduleRecurrences(Response):
    scheduled_days: List[int]
    scheduled_hours: List[int]

class _ResponseServicesPutCurrentDeployment(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    display_url: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    service_id: int

class _ResponseServicesPutNotifications(Response):
    failure_email_addresses: List[str]
    failure_on: bool

class _ResponseServicesPatch(Response):
    id: int
    name: str
    description: str
    user: _ResponseServicesPatchUser
    type: str
    docker_image_name: str
    docker_image_tag: str
    schedule: _ResponseServicesPatchSchedule
    time_zone: str
    replicas: int
    max_replicas: int
    instance_type: str
    memory: int
    cpu: int
    created_at: str
    updated_at: str
    credentials: List[int]
    permission_set_id: int
    git_repo_url: str
    git_repo_ref: str
    git_path_dir: str
    report_id: int
    current_deployment: _ResponseServicesPatchCurrentDeployment
    current_url: str
    environment_variables: dict
    notifications: _ResponseServicesPatchNotifications
    partition_label: str
    my_permission_level: str
    archived: str
    hidden: bool

class _ResponseServicesPatchUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseServicesPatchSchedule(Response):
    runtime_plan: str
    recurrences: List[_ResponseServicesPatchScheduleRecurrences]

class _ResponseServicesPatchScheduleRecurrences(Response):
    scheduled_days: List[int]
    scheduled_hours: List[int]

class _ResponseServicesPatchCurrentDeployment(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    display_url: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    service_id: int

class _ResponseServicesPatchNotifications(Response):
    failure_email_addresses: List[str]
    failure_on: bool

class _ResponseServicesListShares(Response):
    readers: _ResponseServicesListSharesReaders
    writers: _ResponseServicesListSharesWriters
    owners: _ResponseServicesListSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseServicesListSharesReaders(Response):
    users: List[_ResponseServicesListSharesReadersUsers]
    groups: List[_ResponseServicesListSharesReadersGroups]

class _ResponseServicesListSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseServicesListSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseServicesListSharesWriters(Response):
    users: List[_ResponseServicesListSharesWritersUsers]
    groups: List[_ResponseServicesListSharesWritersGroups]

class _ResponseServicesListSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseServicesListSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseServicesListSharesOwners(Response):
    users: List[_ResponseServicesListSharesOwnersUsers]
    groups: List[_ResponseServicesListSharesOwnersGroups]

class _ResponseServicesListSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseServicesListSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseServicesPutSharesUsers(Response):
    readers: _ResponseServicesPutSharesUsersReaders
    writers: _ResponseServicesPutSharesUsersWriters
    owners: _ResponseServicesPutSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseServicesPutSharesUsersReaders(Response):
    users: List[_ResponseServicesPutSharesUsersReadersUsers]
    groups: List[_ResponseServicesPutSharesUsersReadersGroups]

class _ResponseServicesPutSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseServicesPutSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseServicesPutSharesUsersWriters(Response):
    users: List[_ResponseServicesPutSharesUsersWritersUsers]
    groups: List[_ResponseServicesPutSharesUsersWritersGroups]

class _ResponseServicesPutSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseServicesPutSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseServicesPutSharesUsersOwners(Response):
    users: List[_ResponseServicesPutSharesUsersOwnersUsers]
    groups: List[_ResponseServicesPutSharesUsersOwnersGroups]

class _ResponseServicesPutSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseServicesPutSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseServicesPutSharesGroups(Response):
    readers: _ResponseServicesPutSharesGroupsReaders
    writers: _ResponseServicesPutSharesGroupsWriters
    owners: _ResponseServicesPutSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseServicesPutSharesGroupsReaders(Response):
    users: List[_ResponseServicesPutSharesGroupsReadersUsers]
    groups: List[_ResponseServicesPutSharesGroupsReadersGroups]

class _ResponseServicesPutSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseServicesPutSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseServicesPutSharesGroupsWriters(Response):
    users: List[_ResponseServicesPutSharesGroupsWritersUsers]
    groups: List[_ResponseServicesPutSharesGroupsWritersGroups]

class _ResponseServicesPutSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseServicesPutSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseServicesPutSharesGroupsOwners(Response):
    users: List[_ResponseServicesPutSharesGroupsOwnersUsers]
    groups: List[_ResponseServicesPutSharesGroupsOwnersGroups]

class _ResponseServicesPutSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseServicesPutSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseServicesListDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseServicesPutTransfer(Response):
    dependencies: List[_ResponseServicesPutTransferDependencies]

class _ResponseServicesPutTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseServicesPutArchive(Response):
    id: int
    name: str
    description: str
    user: _ResponseServicesPutArchiveUser
    type: str
    docker_image_name: str
    docker_image_tag: str
    schedule: _ResponseServicesPutArchiveSchedule
    time_zone: str
    replicas: int
    max_replicas: int
    instance_type: str
    memory: int
    cpu: int
    created_at: str
    updated_at: str
    credentials: List[int]
    permission_set_id: int
    git_repo_url: str
    git_repo_ref: str
    git_path_dir: str
    report_id: int
    current_deployment: _ResponseServicesPutArchiveCurrentDeployment
    current_url: str
    environment_variables: dict
    notifications: _ResponseServicesPutArchiveNotifications
    partition_label: str
    my_permission_level: str
    archived: str
    hidden: bool

class _ResponseServicesPutArchiveUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseServicesPutArchiveSchedule(Response):
    runtime_plan: str
    recurrences: List[_ResponseServicesPutArchiveScheduleRecurrences]

class _ResponseServicesPutArchiveScheduleRecurrences(Response):
    scheduled_days: List[int]
    scheduled_hours: List[int]

class _ResponseServicesPutArchiveCurrentDeployment(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    display_url: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    service_id: int

class _ResponseServicesPutArchiveNotifications(Response):
    failure_email_addresses: List[str]
    failure_on: bool

class _ResponseServicesListProjects(Response):
    id: int
    author: _ResponseServicesListProjectsAuthor
    name: str
    description: str
    users: List[_ResponseServicesListProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseServicesListProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseServicesListProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseServicesListDeployments(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    service_id: int

class _ResponseServicesPostDeployments(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    display_url: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    service_id: int

class _ResponseServicesGetDeployments(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    display_url: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    service_id: int

class _ResponseServicesPostRedeploy(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    display_url: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    service_id: int

class _ResponseServicesListDeploymentsLogs(Response):
    message: str
    stream: str
    created_at: str
    source: str

class _ResponseServicesPostClone(Response):
    id: int
    name: str
    description: str
    user: _ResponseServicesPostCloneUser
    type: str
    docker_image_name: str
    docker_image_tag: str
    schedule: _ResponseServicesPostCloneSchedule
    time_zone: str
    replicas: int
    max_replicas: int
    instance_type: str
    memory: int
    cpu: int
    created_at: str
    updated_at: str
    credentials: List[int]
    permission_set_id: int
    git_repo_url: str
    git_repo_ref: str
    git_path_dir: str
    report_id: int
    current_deployment: _ResponseServicesPostCloneCurrentDeployment
    current_url: str
    environment_variables: dict
    notifications: _ResponseServicesPostCloneNotifications
    partition_label: str
    my_permission_level: str
    archived: str
    hidden: bool

class _ResponseServicesPostCloneUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseServicesPostCloneSchedule(Response):
    runtime_plan: str
    recurrences: List[_ResponseServicesPostCloneScheduleRecurrences]

class _ResponseServicesPostCloneScheduleRecurrences(Response):
    scheduled_days: List[int]
    scheduled_hours: List[int]

class _ResponseServicesPostCloneCurrentDeployment(Response):
    deployment_id: int
    user_id: int
    host: str
    name: str
    docker_image_name: str
    docker_image_tag: str
    display_url: str
    instance_type: str
    memory: int
    cpu: int
    state: str
    state_message: str
    max_memory_usage: float
    max_cpu_usage: float
    created_at: str
    updated_at: str
    service_id: int

class _ResponseServicesPostCloneNotifications(Response):
    failure_email_addresses: List[str]
    failure_on: bool

class _ResponseServicesPostTokens(Response):
    id: int
    name: str
    user: _ResponseServicesPostTokensUser
    machine_token: bool
    expires_at: str
    created_at: str
    token: str

class _ResponseServicesPostTokensUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseServicesListTokens(Response):
    id: int
    name: str
    user: _ResponseServicesListTokensUser
    machine_token: bool
    expires_at: str
    created_at: str

class _ResponseServicesListTokensUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseStorageHostsList(Response):
    id: int
    owner: _ResponseStorageHostsListOwner
    name: str
    provider: str
    bucket: str
    s3_options: _ResponseStorageHostsListS3Options

class _ResponseStorageHostsListOwner(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseStorageHostsListS3Options(Response):
    region: str

class _ResponseStorageHostsPost(Response):
    id: int
    owner: _ResponseStorageHostsPostOwner
    name: str
    provider: str
    bucket: str
    s3_options: _ResponseStorageHostsPostS3Options

class _ResponseStorageHostsPostOwner(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseStorageHostsPostS3Options(Response):
    region: str

class _ResponseStorageHostsGet(Response):
    id: int
    owner: _ResponseStorageHostsGetOwner
    name: str
    provider: str
    bucket: str
    s3_options: _ResponseStorageHostsGetS3Options

class _ResponseStorageHostsGetOwner(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseStorageHostsGetS3Options(Response):
    region: str

class _ResponseStorageHostsPut(Response):
    id: int
    owner: _ResponseStorageHostsPutOwner
    name: str
    provider: str
    bucket: str
    s3_options: _ResponseStorageHostsPutS3Options

class _ResponseStorageHostsPutOwner(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseStorageHostsPutS3Options(Response):
    region: str

class _ResponseStorageHostsPatch(Response):
    id: int
    owner: _ResponseStorageHostsPatchOwner
    name: str
    provider: str
    bucket: str
    s3_options: _ResponseStorageHostsPatchS3Options

class _ResponseStorageHostsPatchOwner(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseStorageHostsPatchS3Options(Response):
    region: str

class _ResponseStorageHostsListShares(Response):
    readers: _ResponseStorageHostsListSharesReaders
    writers: _ResponseStorageHostsListSharesWriters
    owners: _ResponseStorageHostsListSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseStorageHostsListSharesReaders(Response):
    users: List[_ResponseStorageHostsListSharesReadersUsers]
    groups: List[_ResponseStorageHostsListSharesReadersGroups]

class _ResponseStorageHostsListSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseStorageHostsListSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseStorageHostsListSharesWriters(Response):
    users: List[_ResponseStorageHostsListSharesWritersUsers]
    groups: List[_ResponseStorageHostsListSharesWritersGroups]

class _ResponseStorageHostsListSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseStorageHostsListSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseStorageHostsListSharesOwners(Response):
    users: List[_ResponseStorageHostsListSharesOwnersUsers]
    groups: List[_ResponseStorageHostsListSharesOwnersGroups]

class _ResponseStorageHostsListSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseStorageHostsListSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseStorageHostsPutSharesUsers(Response):
    readers: _ResponseStorageHostsPutSharesUsersReaders
    writers: _ResponseStorageHostsPutSharesUsersWriters
    owners: _ResponseStorageHostsPutSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseStorageHostsPutSharesUsersReaders(Response):
    users: List[_ResponseStorageHostsPutSharesUsersReadersUsers]
    groups: List[_ResponseStorageHostsPutSharesUsersReadersGroups]

class _ResponseStorageHostsPutSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseStorageHostsPutSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseStorageHostsPutSharesUsersWriters(Response):
    users: List[_ResponseStorageHostsPutSharesUsersWritersUsers]
    groups: List[_ResponseStorageHostsPutSharesUsersWritersGroups]

class _ResponseStorageHostsPutSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseStorageHostsPutSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseStorageHostsPutSharesUsersOwners(Response):
    users: List[_ResponseStorageHostsPutSharesUsersOwnersUsers]
    groups: List[_ResponseStorageHostsPutSharesUsersOwnersGroups]

class _ResponseStorageHostsPutSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseStorageHostsPutSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseStorageHostsPutSharesGroups(Response):
    readers: _ResponseStorageHostsPutSharesGroupsReaders
    writers: _ResponseStorageHostsPutSharesGroupsWriters
    owners: _ResponseStorageHostsPutSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseStorageHostsPutSharesGroupsReaders(Response):
    users: List[_ResponseStorageHostsPutSharesGroupsReadersUsers]
    groups: List[_ResponseStorageHostsPutSharesGroupsReadersGroups]

class _ResponseStorageHostsPutSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseStorageHostsPutSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseStorageHostsPutSharesGroupsWriters(Response):
    users: List[_ResponseStorageHostsPutSharesGroupsWritersUsers]
    groups: List[_ResponseStorageHostsPutSharesGroupsWritersGroups]

class _ResponseStorageHostsPutSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseStorageHostsPutSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseStorageHostsPutSharesGroupsOwners(Response):
    users: List[_ResponseStorageHostsPutSharesGroupsOwnersUsers]
    groups: List[_ResponseStorageHostsPutSharesGroupsOwnersGroups]

class _ResponseStorageHostsPutSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseStorageHostsPutSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseStorageHostsListDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseStorageHostsPutTransfer(Response):
    dependencies: List[_ResponseStorageHostsPutTransferDependencies]

class _ResponseStorageHostsPutTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseTableTagsList(Response):
    id: int
    name: str
    table_count: int
    user: _ResponseTableTagsListUser

class _ResponseTableTagsListUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseTableTagsPost(Response):
    id: int
    name: str
    created_at: str
    updated_at: str
    table_count: int
    user: _ResponseTableTagsPostUser

class _ResponseTableTagsPostUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseTableTagsGet(Response):
    id: int
    name: str
    created_at: str
    updated_at: str
    table_count: int
    user: _ResponseTableTagsGetUser

class _ResponseTableTagsGetUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseTablesPostEnhancementsGeocodings(Response):
    id: int
    source_table_id: int
    state: str
    enhanced_table_schema: str
    enhanced_table_name: str

class _ResponseTablesPostEnhancementsCassNcoa(Response):
    id: int
    source_table_id: int
    state: str
    enhanced_table_schema: str
    enhanced_table_name: str
    perform_ncoa: bool
    ncoa_credential_id: int
    output_level: str
    batch_size: int

class _ResponseTablesGetEnhancementsGeocodings(Response):
    id: int
    source_table_id: int
    state: str
    enhanced_table_schema: str
    enhanced_table_name: str

class _ResponseTablesGetEnhancementsCassNcoa(Response):
    id: int
    source_table_id: int
    state: str
    enhanced_table_schema: str
    enhanced_table_name: str
    perform_ncoa: bool
    ncoa_credential_id: int
    output_level: str
    batch_size: int

class _ResponseTablesPostScan(Response):
    job_id: int
    run_id: int

class _ResponseTablesPostRefresh(Response):
    id: int
    database_id: int
    schema: str
    name: str
    description: str
    is_view: bool
    row_count: int
    column_count: int
    size_mb: float
    owner: str
    distkey: str
    sortkeys: str
    refresh_status: str
    last_refresh: str
    data_updated_at: str
    schema_updated_at: str
    refresh_id: str
    last_run: _ResponseTablesPostRefreshLastRun
    primary_keys: List[str]
    last_modified_keys: List[str]
    table_tags: List[_ResponseTablesPostRefreshTableTags]
    ontology_mapping: dict
    columns: List[_ResponseTablesPostRefreshColumns]
    joins: List[_ResponseTablesPostRefreshJoins]
    multipart_key: List[str]
    enhancements: List[_ResponseTablesPostRefreshEnhancements]
    view_def: str
    table_def: str
    outgoing_table_matches: List[_ResponseTablesPostRefreshOutgoingTableMatches]

class _ResponseTablesPostRefreshLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseTablesPostRefreshTableTags(Response):
    id: int
    name: str

class _ResponseTablesPostRefreshColumns(Response):
    name: str
    civis_data_type: str
    sql_type: str
    sample_values: List[str]
    encoding: str
    description: str
    order: int
    min_value: str
    max_value: str
    avg_value: float
    stddev: float
    value_distribution_percent: dict
    coverage_count: int
    null_count: int
    possible_dependent_variable_types: List[str]
    useable_as_independent_variable: bool
    useable_as_primary_key: bool
    value_distribution: dict
    distinct_count: int

class _ResponseTablesPostRefreshJoins(Response):
    id: int
    left_table_id: int
    left_identifier: str
    right_table_id: int
    right_identifier: str
    on: str
    left_join: bool
    created_at: str
    updated_at: str

class _ResponseTablesPostRefreshEnhancements(Response):
    type: str
    created_at: str
    updated_at: str
    join_id: int

class _ResponseTablesPostRefreshOutgoingTableMatches(Response):
    source_table_id: int
    target_type: str
    target_id: int
    target: _ResponseTablesPostRefreshOutgoingTableMatchesTarget
    job: _ResponseTablesPostRefreshOutgoingTableMatchesJob

class _ResponseTablesPostRefreshOutgoingTableMatchesTarget(Response):
    name: str

class _ResponseTablesPostRefreshOutgoingTableMatchesJob(Response):
    id: int
    name: str
    type: str
    from_template_id: int
    state: str
    created_at: str
    updated_at: str
    runs: List[_ResponseTablesPostRefreshOutgoingTableMatchesJobRuns]
    last_run: _ResponseTablesPostRefreshOutgoingTableMatchesJobLastRun
    hidden: bool
    match_options: _ResponseTablesPostRefreshOutgoingTableMatchesJobMatchOptions

class _ResponseTablesPostRefreshOutgoingTableMatchesJobRuns(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseTablesPostRefreshOutgoingTableMatchesJobLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseTablesPostRefreshOutgoingTableMatchesJobMatchOptions(Response):
    max_matches: int
    threshold: str

class _ResponseTablesList(Response):
    id: int
    database_id: int
    schema: str
    name: str
    description: str
    is_view: bool
    row_count: int
    column_count: int
    size_mb: float
    owner: str
    distkey: str
    sortkeys: str
    refresh_status: str
    last_refresh: str
    refresh_id: str
    last_run: _ResponseTablesListLastRun
    table_tags: List[_ResponseTablesListTableTags]

class _ResponseTablesListLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseTablesListTableTags(Response):
    id: int
    name: str

class _ResponseTablesGet(Response):
    id: int
    database_id: int
    schema: str
    name: str
    description: str
    is_view: bool
    row_count: int
    column_count: int
    size_mb: float
    owner: str
    distkey: str
    sortkeys: str
    refresh_status: str
    last_refresh: str
    data_updated_at: str
    schema_updated_at: str
    refresh_id: str
    last_run: _ResponseTablesGetLastRun
    primary_keys: List[str]
    last_modified_keys: List[str]
    table_tags: List[_ResponseTablesGetTableTags]
    ontology_mapping: dict
    columns: List[_ResponseTablesGetColumns]
    joins: List[_ResponseTablesGetJoins]
    multipart_key: List[str]
    enhancements: List[_ResponseTablesGetEnhancements]
    view_def: str
    table_def: str
    outgoing_table_matches: List[_ResponseTablesGetOutgoingTableMatches]

class _ResponseTablesGetLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseTablesGetTableTags(Response):
    id: int
    name: str

class _ResponseTablesGetColumns(Response):
    name: str
    civis_data_type: str
    sql_type: str
    sample_values: List[str]
    encoding: str
    description: str
    order: int
    min_value: str
    max_value: str
    avg_value: float
    stddev: float
    value_distribution_percent: dict
    coverage_count: int
    null_count: int
    possible_dependent_variable_types: List[str]
    useable_as_independent_variable: bool
    useable_as_primary_key: bool
    value_distribution: dict
    distinct_count: int

class _ResponseTablesGetJoins(Response):
    id: int
    left_table_id: int
    left_identifier: str
    right_table_id: int
    right_identifier: str
    on: str
    left_join: bool
    created_at: str
    updated_at: str

class _ResponseTablesGetEnhancements(Response):
    type: str
    created_at: str
    updated_at: str
    join_id: int

class _ResponseTablesGetOutgoingTableMatches(Response):
    source_table_id: int
    target_type: str
    target_id: int
    target: _ResponseTablesGetOutgoingTableMatchesTarget
    job: _ResponseTablesGetOutgoingTableMatchesJob

class _ResponseTablesGetOutgoingTableMatchesTarget(Response):
    name: str

class _ResponseTablesGetOutgoingTableMatchesJob(Response):
    id: int
    name: str
    type: str
    from_template_id: int
    state: str
    created_at: str
    updated_at: str
    runs: List[_ResponseTablesGetOutgoingTableMatchesJobRuns]
    last_run: _ResponseTablesGetOutgoingTableMatchesJobLastRun
    hidden: bool
    match_options: _ResponseTablesGetOutgoingTableMatchesJobMatchOptions

class _ResponseTablesGetOutgoingTableMatchesJobRuns(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseTablesGetOutgoingTableMatchesJobLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseTablesGetOutgoingTableMatchesJobMatchOptions(Response):
    max_matches: int
    threshold: str

class _ResponseTablesPatch(Response):
    id: int
    database_id: int
    schema: str
    name: str
    description: str
    is_view: bool
    row_count: int
    column_count: int
    size_mb: float
    owner: str
    distkey: str
    sortkeys: str
    refresh_status: str
    last_refresh: str
    data_updated_at: str
    schema_updated_at: str
    refresh_id: str
    last_run: _ResponseTablesPatchLastRun
    primary_keys: List[str]
    last_modified_keys: List[str]
    table_tags: List[_ResponseTablesPatchTableTags]
    ontology_mapping: dict

class _ResponseTablesPatchLastRun(Response):
    id: int
    state: str
    created_at: str
    started_at: str
    finished_at: str
    error: str

class _ResponseTablesPatchTableTags(Response):
    id: int
    name: str

class _ResponseTablesListColumns(Response):
    name: str
    civis_data_type: str
    sql_type: str
    sample_values: List[str]
    encoding: str
    description: str
    order: int
    min_value: str
    max_value: str
    avg_value: float
    stddev: float
    value_distribution_percent: dict
    coverage_count: int
    null_count: int
    possible_dependent_variable_types: List[str]
    useable_as_independent_variable: bool
    useable_as_primary_key: bool
    value_distribution: dict
    distinct_count: int

class _ResponseTablesPutTags(Response):
    id: int
    table_tag_id: int

class _ResponseTablesListProjects(Response):
    id: int
    author: _ResponseTablesListProjectsAuthor
    name: str
    description: str
    users: List[_ResponseTablesListProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseTablesListProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseTablesListProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseTemplatesListReportsShares(Response):
    readers: _ResponseTemplatesListReportsSharesReaders
    writers: _ResponseTemplatesListReportsSharesWriters
    owners: _ResponseTemplatesListReportsSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseTemplatesListReportsSharesReaders(Response):
    users: List[_ResponseTemplatesListReportsSharesReadersUsers]
    groups: List[_ResponseTemplatesListReportsSharesReadersGroups]

class _ResponseTemplatesListReportsSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseTemplatesListReportsSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseTemplatesListReportsSharesWriters(Response):
    users: List[_ResponseTemplatesListReportsSharesWritersUsers]
    groups: List[_ResponseTemplatesListReportsSharesWritersGroups]

class _ResponseTemplatesListReportsSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseTemplatesListReportsSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseTemplatesListReportsSharesOwners(Response):
    users: List[_ResponseTemplatesListReportsSharesOwnersUsers]
    groups: List[_ResponseTemplatesListReportsSharesOwnersGroups]

class _ResponseTemplatesListReportsSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseTemplatesListReportsSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseTemplatesPutReportsSharesUsers(Response):
    readers: _ResponseTemplatesPutReportsSharesUsersReaders
    writers: _ResponseTemplatesPutReportsSharesUsersWriters
    owners: _ResponseTemplatesPutReportsSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseTemplatesPutReportsSharesUsersReaders(Response):
    users: List[_ResponseTemplatesPutReportsSharesUsersReadersUsers]
    groups: List[_ResponseTemplatesPutReportsSharesUsersReadersGroups]

class _ResponseTemplatesPutReportsSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseTemplatesPutReportsSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseTemplatesPutReportsSharesUsersWriters(Response):
    users: List[_ResponseTemplatesPutReportsSharesUsersWritersUsers]
    groups: List[_ResponseTemplatesPutReportsSharesUsersWritersGroups]

class _ResponseTemplatesPutReportsSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseTemplatesPutReportsSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseTemplatesPutReportsSharesUsersOwners(Response):
    users: List[_ResponseTemplatesPutReportsSharesUsersOwnersUsers]
    groups: List[_ResponseTemplatesPutReportsSharesUsersOwnersGroups]

class _ResponseTemplatesPutReportsSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseTemplatesPutReportsSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseTemplatesPutReportsSharesGroups(Response):
    readers: _ResponseTemplatesPutReportsSharesGroupsReaders
    writers: _ResponseTemplatesPutReportsSharesGroupsWriters
    owners: _ResponseTemplatesPutReportsSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseTemplatesPutReportsSharesGroupsReaders(Response):
    users: List[_ResponseTemplatesPutReportsSharesGroupsReadersUsers]
    groups: List[_ResponseTemplatesPutReportsSharesGroupsReadersGroups]

class _ResponseTemplatesPutReportsSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseTemplatesPutReportsSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseTemplatesPutReportsSharesGroupsWriters(Response):
    users: List[_ResponseTemplatesPutReportsSharesGroupsWritersUsers]
    groups: List[_ResponseTemplatesPutReportsSharesGroupsWritersGroups]

class _ResponseTemplatesPutReportsSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseTemplatesPutReportsSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseTemplatesPutReportsSharesGroupsOwners(Response):
    users: List[_ResponseTemplatesPutReportsSharesGroupsOwnersUsers]
    groups: List[_ResponseTemplatesPutReportsSharesGroupsOwnersGroups]

class _ResponseTemplatesPutReportsSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseTemplatesPutReportsSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseTemplatesListReportsDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseTemplatesPutReportsTransfer(Response):
    dependencies: List[_ResponseTemplatesPutReportsTransferDependencies]

class _ResponseTemplatesPutReportsTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseTemplatesListReports(Response):
    id: int
    name: str
    category: str
    created_at: str
    updated_at: str
    use_count: int
    archived: bool
    tech_reviewed: bool
    author: _ResponseTemplatesListReportsAuthor

class _ResponseTemplatesListReportsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseTemplatesPostReports(Response):
    id: int
    name: str
    category: str
    created_at: str
    updated_at: str
    use_count: int
    archived: bool
    tech_reviewed: bool
    author: _ResponseTemplatesPostReportsAuthor
    auth_code_url: str
    provide_api_key: bool
    hidden: bool

class _ResponseTemplatesPostReportsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseTemplatesGetReports(Response):
    id: int
    name: str
    category: str
    created_at: str
    updated_at: str
    use_count: int
    archived: bool
    tech_reviewed: bool
    author: _ResponseTemplatesGetReportsAuthor
    auth_code_url: str
    provide_api_key: bool
    hidden: bool

class _ResponseTemplatesGetReportsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseTemplatesPutReports(Response):
    id: int
    name: str
    category: str
    created_at: str
    updated_at: str
    use_count: int
    archived: bool
    tech_reviewed: bool
    author: _ResponseTemplatesPutReportsAuthor
    auth_code_url: str
    provide_api_key: bool
    hidden: bool

class _ResponseTemplatesPutReportsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseTemplatesPatchReports(Response):
    id: int
    name: str
    category: str
    created_at: str
    updated_at: str
    use_count: int
    archived: bool
    tech_reviewed: bool
    author: _ResponseTemplatesPatchReportsAuthor
    auth_code_url: str
    provide_api_key: bool
    hidden: bool

class _ResponseTemplatesPatchReportsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseTemplatesListScriptsShares(Response):
    readers: _ResponseTemplatesListScriptsSharesReaders
    writers: _ResponseTemplatesListScriptsSharesWriters
    owners: _ResponseTemplatesListScriptsSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseTemplatesListScriptsSharesReaders(Response):
    users: List[_ResponseTemplatesListScriptsSharesReadersUsers]
    groups: List[_ResponseTemplatesListScriptsSharesReadersGroups]

class _ResponseTemplatesListScriptsSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseTemplatesListScriptsSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseTemplatesListScriptsSharesWriters(Response):
    users: List[_ResponseTemplatesListScriptsSharesWritersUsers]
    groups: List[_ResponseTemplatesListScriptsSharesWritersGroups]

class _ResponseTemplatesListScriptsSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseTemplatesListScriptsSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseTemplatesListScriptsSharesOwners(Response):
    users: List[_ResponseTemplatesListScriptsSharesOwnersUsers]
    groups: List[_ResponseTemplatesListScriptsSharesOwnersGroups]

class _ResponseTemplatesListScriptsSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseTemplatesListScriptsSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseTemplatesPutScriptsSharesUsers(Response):
    readers: _ResponseTemplatesPutScriptsSharesUsersReaders
    writers: _ResponseTemplatesPutScriptsSharesUsersWriters
    owners: _ResponseTemplatesPutScriptsSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseTemplatesPutScriptsSharesUsersReaders(Response):
    users: List[_ResponseTemplatesPutScriptsSharesUsersReadersUsers]
    groups: List[_ResponseTemplatesPutScriptsSharesUsersReadersGroups]

class _ResponseTemplatesPutScriptsSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseTemplatesPutScriptsSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseTemplatesPutScriptsSharesUsersWriters(Response):
    users: List[_ResponseTemplatesPutScriptsSharesUsersWritersUsers]
    groups: List[_ResponseTemplatesPutScriptsSharesUsersWritersGroups]

class _ResponseTemplatesPutScriptsSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseTemplatesPutScriptsSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseTemplatesPutScriptsSharesUsersOwners(Response):
    users: List[_ResponseTemplatesPutScriptsSharesUsersOwnersUsers]
    groups: List[_ResponseTemplatesPutScriptsSharesUsersOwnersGroups]

class _ResponseTemplatesPutScriptsSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseTemplatesPutScriptsSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseTemplatesPutScriptsSharesGroups(Response):
    readers: _ResponseTemplatesPutScriptsSharesGroupsReaders
    writers: _ResponseTemplatesPutScriptsSharesGroupsWriters
    owners: _ResponseTemplatesPutScriptsSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseTemplatesPutScriptsSharesGroupsReaders(Response):
    users: List[_ResponseTemplatesPutScriptsSharesGroupsReadersUsers]
    groups: List[_ResponseTemplatesPutScriptsSharesGroupsReadersGroups]

class _ResponseTemplatesPutScriptsSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseTemplatesPutScriptsSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseTemplatesPutScriptsSharesGroupsWriters(Response):
    users: List[_ResponseTemplatesPutScriptsSharesGroupsWritersUsers]
    groups: List[_ResponseTemplatesPutScriptsSharesGroupsWritersGroups]

class _ResponseTemplatesPutScriptsSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseTemplatesPutScriptsSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseTemplatesPutScriptsSharesGroupsOwners(Response):
    users: List[_ResponseTemplatesPutScriptsSharesGroupsOwnersUsers]
    groups: List[_ResponseTemplatesPutScriptsSharesGroupsOwnersGroups]

class _ResponseTemplatesPutScriptsSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseTemplatesPutScriptsSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseTemplatesListScriptsDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseTemplatesPutScriptsTransfer(Response):
    dependencies: List[_ResponseTemplatesPutScriptsTransferDependencies]

class _ResponseTemplatesPutScriptsTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseTemplatesListScriptsProjects(Response):
    id: int
    author: _ResponseTemplatesListScriptsProjectsAuthor
    name: str
    description: str
    users: List[_ResponseTemplatesListScriptsProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseTemplatesListScriptsProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseTemplatesListScriptsProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseTemplatesListScripts(Response):
    id: int
    public: bool
    script_id: int
    user_context: str
    name: str
    category: str
    created_at: str
    updated_at: str
    use_count: int
    ui_report_id: int
    tech_reviewed: bool
    archived: bool
    author: _ResponseTemplatesListScriptsAuthor

class _ResponseTemplatesListScriptsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseTemplatesPostScripts(Response):
    id: int
    public: bool
    script_id: int
    script_type: str
    user_context: str
    params: List[_ResponseTemplatesPostScriptsParams]
    name: str
    category: str
    note: str
    created_at: str
    updated_at: str
    use_count: int
    ui_report_id: int
    tech_reviewed: bool
    archived: bool
    hidden: bool
    author: _ResponseTemplatesPostScriptsAuthor
    my_permission_level: str

class _ResponseTemplatesPostScriptsParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseTemplatesPostScriptsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseTemplatesGetScripts(Response):
    id: int
    public: bool
    script_id: int
    script_type: str
    user_context: str
    params: List[_ResponseTemplatesGetScriptsParams]
    name: str
    category: str
    note: str
    created_at: str
    updated_at: str
    use_count: int
    ui_report_id: int
    tech_reviewed: bool
    archived: bool
    hidden: bool
    author: _ResponseTemplatesGetScriptsAuthor
    my_permission_level: str

class _ResponseTemplatesGetScriptsParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseTemplatesGetScriptsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseTemplatesPutScripts(Response):
    id: int
    public: bool
    script_id: int
    script_type: str
    user_context: str
    params: List[_ResponseTemplatesPutScriptsParams]
    name: str
    category: str
    note: str
    created_at: str
    updated_at: str
    use_count: int
    ui_report_id: int
    tech_reviewed: bool
    archived: bool
    hidden: bool
    author: _ResponseTemplatesPutScriptsAuthor
    my_permission_level: str

class _ResponseTemplatesPutScriptsParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseTemplatesPutScriptsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseTemplatesPatchScripts(Response):
    id: int
    public: bool
    script_id: int
    script_type: str
    user_context: str
    params: List[_ResponseTemplatesPatchScriptsParams]
    name: str
    category: str
    note: str
    created_at: str
    updated_at: str
    use_count: int
    ui_report_id: int
    tech_reviewed: bool
    archived: bool
    hidden: bool
    author: _ResponseTemplatesPatchScriptsAuthor
    my_permission_level: str

class _ResponseTemplatesPatchScriptsParams(Response):
    name: str
    label: str
    description: str
    type: str
    required: bool
    value: object
    default: str
    allowed_values: List

class _ResponseTemplatesPatchScriptsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseUsageListMatching(Response):
    run_id: int
    job_id: int
    user_id: int
    organization_id: int
    run_created_at: str
    run_time: int
    num_records: int
    task: str

class _ResponseUsageListLlm(Response):
    id: int
    run_id: int
    job_id: int
    user_id: int
    organization_id: int
    run_created_at: str
    run_time: int
    credits: float
    input_tokens: int
    output_tokens: int
    model_id: str

class _ResponseUsageGetLlm(Response):
    id: int
    run_id: int
    job_id: int
    user_id: int
    organization_id: int
    run_created_at: str
    run_time: int
    credits: float
    input_tokens: int
    output_tokens: int
    model_id: str

class _ResponseUsageListLlmOrganizationSummary(Response):
    credits: float
    organization_id: int

class _ResponseUsageLimitsListMatching(Response):
    id: int
    organization_id: int
    created_at: str
    updated_at: str
    hard_limit: int
    task: str
    notification_emails: List[str]

class _ResponseUsageLimitsGetMatching(Response):
    id: int
    organization_id: int
    created_at: str
    updated_at: str
    hard_limit: int
    task: str
    notification_emails: List[str]

class _ResponseUsageLimitsListLlm(Response):
    id: int
    organization_id: int
    created_at: str
    updated_at: str
    hard_limit: int

class _ResponseUsageLimitsGetLlm(Response):
    id: int
    organization_id: int
    created_at: str
    updated_at: str
    hard_limit: int

class _ResponseUsersList(Response):
    id: int
    user: str
    name: str
    email: str
    active: bool
    primary_group_id: int
    groups: List[_ResponseUsersListGroups]
    created_at: str
    current_sign_in_at: str
    updated_at: str
    last_seen_at: str
    suspended: bool
    created_by_id: int
    last_updated_by_id: int

class _ResponseUsersListGroups(Response):
    id: int
    name: str
    slug: str
    organization_id: int
    organization_name: str

class _ResponseUsersPost(Response):
    id: int
    user: str
    name: str
    email: str
    active: bool
    primary_group_id: int
    groups: List[_ResponseUsersPostGroups]
    city: str
    state: str
    time_zone: str
    initials: str
    department: str
    title: str
    github_username: str
    prefers_sms_otp: bool
    vpn_enabled: bool
    sso_disabled: bool
    otp_required_for_login: bool
    exempt_from_org_sms_otp_disabled: bool
    sms_otp_allowed: bool
    robot: bool
    phone: str
    organization_slug: str
    organization_sso_disable_capable: bool
    organization_login_type: str
    organization_sms_otp_disabled: bool
    my_permission_level: str
    created_at: str
    updated_at: str
    last_seen_at: str
    suspended: bool
    created_by_id: int
    last_updated_by_id: int
    unconfirmed_email: str
    account_status: str

class _ResponseUsersPostGroups(Response):
    id: int
    name: str
    slug: str
    organization_id: int
    organization_name: str

class _ResponseUsersListMe(Response):
    id: int
    name: str
    email: str
    username: str
    initials: str
    last_checked_announcements: str
    feature_flags: dict
    roles: List[str]
    preferences: dict
    custom_branding: str
    primary_group_id: int
    groups: List[_ResponseUsersListMeGroups]
    organization_name: str
    organization_slug: str
    organization_default_theme_id: int
    created_at: str
    sign_in_count: int
    assuming_role: bool
    assuming_admin: bool
    assuming_admin_expiration: str
    superadmin_mode_expiration: str
    disable_non_compliant_fedramp_features: bool
    persona_role: str
    created_by_id: int
    last_updated_by_id: int

class _ResponseUsersListMeGroups(Response):
    id: int
    name: str
    slug: str
    organization_id: int
    organization_name: str

class _ResponseUsersPatchMe(Response):
    id: int
    name: str
    email: str
    username: str
    initials: str
    last_checked_announcements: str
    feature_flags: dict
    roles: List[str]
    preferences: dict
    custom_branding: str
    primary_group_id: int
    groups: List[_ResponseUsersPatchMeGroups]
    organization_name: str
    organization_slug: str
    organization_default_theme_id: int
    created_at: str
    sign_in_count: int
    assuming_role: bool
    assuming_admin: bool
    assuming_admin_expiration: str
    superadmin_mode_expiration: str
    disable_non_compliant_fedramp_features: bool
    persona_role: str
    created_by_id: int
    last_updated_by_id: int

class _ResponseUsersPatchMeGroups(Response):
    id: int
    name: str
    slug: str
    organization_id: int
    organization_name: str

class _ResponseUsersListMeActivity(Response):
    id: str
    name: str
    type: str
    user: str
    category: str
    state: str
    updated_at: str
    next_run_at: str
    last_run_id: str
    last_run_state: str

class _ResponseUsersListMeOrganizationAdmins(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool
    email: str

class _ResponseUsersListMeThemes(Response):
    id: int
    name: str
    created_at: str
    updated_at: str

class _ResponseUsersGetMeThemes(Response):
    id: int
    name: str
    organization_ids: List[int]
    settings: str
    logo_file: _ResponseUsersGetMeThemesLogoFile
    created_at: str
    updated_at: str

class _ResponseUsersGetMeThemesLogoFile(Response):
    id: int
    download_url: str

class _ResponseUsersGet(Response):
    id: int
    user: str
    name: str
    email: str
    active: bool
    primary_group_id: int
    groups: List[_ResponseUsersGetGroups]
    city: str
    state: str
    time_zone: str
    initials: str
    department: str
    title: str
    github_username: str
    prefers_sms_otp: bool
    vpn_enabled: bool
    sso_disabled: bool
    otp_required_for_login: bool
    exempt_from_org_sms_otp_disabled: bool
    sms_otp_allowed: bool
    robot: bool
    phone: str
    organization_slug: str
    organization_sso_disable_capable: bool
    organization_login_type: str
    organization_sms_otp_disabled: bool
    my_permission_level: str
    created_at: str
    updated_at: str
    last_seen_at: str
    suspended: bool
    created_by_id: int
    last_updated_by_id: int
    unconfirmed_email: str
    account_status: str

class _ResponseUsersGetGroups(Response):
    id: int
    name: str
    slug: str
    organization_id: int
    organization_name: str

class _ResponseUsersPatch(Response):
    id: int
    user: str
    name: str
    email: str
    active: bool
    primary_group_id: int
    groups: List[_ResponseUsersPatchGroups]
    city: str
    state: str
    time_zone: str
    initials: str
    department: str
    title: str
    github_username: str
    prefers_sms_otp: bool
    vpn_enabled: bool
    sso_disabled: bool
    otp_required_for_login: bool
    exempt_from_org_sms_otp_disabled: bool
    sms_otp_allowed: bool
    robot: bool
    phone: str
    organization_slug: str
    organization_sso_disable_capable: bool
    organization_login_type: str
    organization_sms_otp_disabled: bool
    my_permission_level: str
    created_at: str
    updated_at: str
    last_seen_at: str
    suspended: bool
    created_by_id: int
    last_updated_by_id: int
    unconfirmed_email: str
    account_status: str

class _ResponseUsersPatchGroups(Response):
    id: int
    name: str
    slug: str
    organization_id: int
    organization_name: str

class _ResponseUsersListApiKeys(Response):
    id: int
    name: str
    expires_at: str
    created_at: str
    revoked_at: str
    last_used_at: str
    scopes: List[str]
    use_count: int
    expired: bool
    active: bool
    constraint_count: int

class _ResponseUsersPostApiKeys(Response):
    id: int
    name: str
    expires_at: str
    created_at: str
    revoked_at: str
    last_used_at: str
    scopes: List[str]
    use_count: int
    expired: bool
    active: bool
    constraints: List[_ResponseUsersPostApiKeysConstraints]
    token: str

class _ResponseUsersPostApiKeysConstraints(Response):
    constraint: str
    constraint_type: str
    get_allowed: bool
    head_allowed: bool
    post_allowed: bool
    put_allowed: bool
    patch_allowed: bool
    delete_allowed: bool

class _ResponseUsersGetApiKeys(Response):
    id: int
    name: str
    expires_at: str
    created_at: str
    revoked_at: str
    last_used_at: str
    scopes: List[str]
    use_count: int
    expired: bool
    active: bool
    constraints: List[_ResponseUsersGetApiKeysConstraints]

class _ResponseUsersGetApiKeysConstraints(Response):
    constraint: str
    constraint_type: str
    get_allowed: bool
    head_allowed: bool
    post_allowed: bool
    put_allowed: bool
    patch_allowed: bool
    delete_allowed: bool

class _ResponseUsersDeleteApiKeys(Response):
    id: int
    name: str
    expires_at: str
    created_at: str
    revoked_at: str
    last_used_at: str
    scopes: List[str]
    use_count: int
    expired: bool
    active: bool
    constraints: List[_ResponseUsersDeleteApiKeysConstraints]

class _ResponseUsersDeleteApiKeysConstraints(Response):
    constraint: str
    constraint_type: str
    get_allowed: bool
    head_allowed: bool
    post_allowed: bool
    put_allowed: bool
    patch_allowed: bool
    delete_allowed: bool

class _ResponseUsersDeleteSessions(Response):
    id: int
    user: str
    name: str
    email: str
    active: bool
    primary_group_id: int
    groups: List[_ResponseUsersDeleteSessionsGroups]
    city: str
    state: str
    time_zone: str
    initials: str
    department: str
    title: str
    github_username: str
    prefers_sms_otp: bool
    vpn_enabled: bool
    sso_disabled: bool
    otp_required_for_login: bool
    exempt_from_org_sms_otp_disabled: bool
    sms_otp_allowed: bool
    robot: bool
    phone: str
    organization_slug: str
    organization_sso_disable_capable: bool
    organization_login_type: str
    organization_sms_otp_disabled: bool
    my_permission_level: str
    created_at: str
    updated_at: str
    last_seen_at: str
    suspended: bool
    created_by_id: int
    last_updated_by_id: int
    unconfirmed_email: str
    account_status: str

class _ResponseUsersDeleteSessionsGroups(Response):
    id: int
    name: str
    slug: str
    organization_id: int
    organization_name: str

class _ResponseUsersListMeFavorites(Response):
    id: int
    object_id: int
    object_type: str
    object_name: str
    created_at: str
    object_updated_at: str
    object_author: _ResponseUsersListMeFavoritesObjectAuthor
    position: int

class _ResponseUsersListMeFavoritesObjectAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseUsersPostMeFavorites(Response):
    id: int
    object_id: int
    object_type: str
    object_name: str
    created_at: str
    object_updated_at: str
    object_author: _ResponseUsersPostMeFavoritesObjectAuthor

class _ResponseUsersPostMeFavoritesObjectAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseUsersPostUnsuspend(Response):
    id: int
    user: str
    unlocked_at: str

class _ResponseUsersDelete2Fa(Response):
    id: int
    user: str
    name: str
    email: str
    active: bool
    primary_group_id: int
    groups: List[_ResponseUsersDelete2FaGroups]
    city: str
    state: str
    time_zone: str
    initials: str
    department: str
    title: str
    github_username: str
    prefers_sms_otp: bool
    vpn_enabled: bool
    sso_disabled: bool
    otp_required_for_login: bool
    exempt_from_org_sms_otp_disabled: bool
    sms_otp_allowed: bool
    robot: bool
    phone: str
    organization_slug: str
    organization_sso_disable_capable: bool
    organization_login_type: str
    organization_sms_otp_disabled: bool
    my_permission_level: str
    created_at: str
    updated_at: str
    last_seen_at: str
    suspended: bool
    created_by_id: int
    last_updated_by_id: int
    unconfirmed_email: str
    account_status: str

class _ResponseUsersDelete2FaGroups(Response):
    id: int
    name: str
    slug: str
    organization_id: int
    organization_name: str

class _ResponseWorkflowsList(Response):
    id: int
    name: str
    description: str
    valid: bool
    file_id: str
    user: _ResponseWorkflowsListUser
    state: str
    schedule: _ResponseWorkflowsListSchedule
    allow_concurrent_executions: bool
    time_zone: str
    next_execution_at: str
    archived: str
    created_at: str
    updated_at: str

class _ResponseWorkflowsListUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseWorkflowsListSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseWorkflowsPost(Response):
    id: int
    name: str
    description: str
    definition: str
    valid: bool
    validation_errors: str
    file_id: str
    user: _ResponseWorkflowsPostUser
    state: str
    schedule: _ResponseWorkflowsPostSchedule
    allow_concurrent_executions: bool
    time_zone: str
    next_execution_at: str
    notifications: _ResponseWorkflowsPostNotifications
    archived: str
    hidden: bool
    my_permission_level: str
    created_at: str
    updated_at: str

class _ResponseWorkflowsPostUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseWorkflowsPostSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseWorkflowsPostNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseWorkflowsGet(Response):
    id: int
    name: str
    description: str
    definition: str
    valid: bool
    validation_errors: str
    file_id: str
    user: _ResponseWorkflowsGetUser
    state: str
    schedule: _ResponseWorkflowsGetSchedule
    allow_concurrent_executions: bool
    time_zone: str
    next_execution_at: str
    notifications: _ResponseWorkflowsGetNotifications
    archived: str
    hidden: bool
    my_permission_level: str
    created_at: str
    updated_at: str

class _ResponseWorkflowsGetUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseWorkflowsGetSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseWorkflowsGetNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseWorkflowsPut(Response):
    id: int
    name: str
    description: str
    definition: str
    valid: bool
    validation_errors: str
    file_id: str
    user: _ResponseWorkflowsPutUser
    state: str
    schedule: _ResponseWorkflowsPutSchedule
    allow_concurrent_executions: bool
    time_zone: str
    next_execution_at: str
    notifications: _ResponseWorkflowsPutNotifications
    archived: str
    hidden: bool
    my_permission_level: str
    created_at: str
    updated_at: str

class _ResponseWorkflowsPutUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseWorkflowsPutSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseWorkflowsPutNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseWorkflowsPatch(Response):
    id: int
    name: str
    description: str
    definition: str
    valid: bool
    validation_errors: str
    file_id: str
    user: _ResponseWorkflowsPatchUser
    state: str
    schedule: _ResponseWorkflowsPatchSchedule
    allow_concurrent_executions: bool
    time_zone: str
    next_execution_at: str
    notifications: _ResponseWorkflowsPatchNotifications
    archived: str
    hidden: bool
    my_permission_level: str
    created_at: str
    updated_at: str

class _ResponseWorkflowsPatchUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseWorkflowsPatchSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseWorkflowsPatchNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseWorkflowsListShares(Response):
    readers: _ResponseWorkflowsListSharesReaders
    writers: _ResponseWorkflowsListSharesWriters
    owners: _ResponseWorkflowsListSharesOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseWorkflowsListSharesReaders(Response):
    users: List[_ResponseWorkflowsListSharesReadersUsers]
    groups: List[_ResponseWorkflowsListSharesReadersGroups]

class _ResponseWorkflowsListSharesReadersUsers(Response):
    id: int
    name: str

class _ResponseWorkflowsListSharesReadersGroups(Response):
    id: int
    name: str

class _ResponseWorkflowsListSharesWriters(Response):
    users: List[_ResponseWorkflowsListSharesWritersUsers]
    groups: List[_ResponseWorkflowsListSharesWritersGroups]

class _ResponseWorkflowsListSharesWritersUsers(Response):
    id: int
    name: str

class _ResponseWorkflowsListSharesWritersGroups(Response):
    id: int
    name: str

class _ResponseWorkflowsListSharesOwners(Response):
    users: List[_ResponseWorkflowsListSharesOwnersUsers]
    groups: List[_ResponseWorkflowsListSharesOwnersGroups]

class _ResponseWorkflowsListSharesOwnersUsers(Response):
    id: int
    name: str

class _ResponseWorkflowsListSharesOwnersGroups(Response):
    id: int
    name: str

class _ResponseWorkflowsPutSharesUsers(Response):
    readers: _ResponseWorkflowsPutSharesUsersReaders
    writers: _ResponseWorkflowsPutSharesUsersWriters
    owners: _ResponseWorkflowsPutSharesUsersOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseWorkflowsPutSharesUsersReaders(Response):
    users: List[_ResponseWorkflowsPutSharesUsersReadersUsers]
    groups: List[_ResponseWorkflowsPutSharesUsersReadersGroups]

class _ResponseWorkflowsPutSharesUsersReadersUsers(Response):
    id: int
    name: str

class _ResponseWorkflowsPutSharesUsersReadersGroups(Response):
    id: int
    name: str

class _ResponseWorkflowsPutSharesUsersWriters(Response):
    users: List[_ResponseWorkflowsPutSharesUsersWritersUsers]
    groups: List[_ResponseWorkflowsPutSharesUsersWritersGroups]

class _ResponseWorkflowsPutSharesUsersWritersUsers(Response):
    id: int
    name: str

class _ResponseWorkflowsPutSharesUsersWritersGroups(Response):
    id: int
    name: str

class _ResponseWorkflowsPutSharesUsersOwners(Response):
    users: List[_ResponseWorkflowsPutSharesUsersOwnersUsers]
    groups: List[_ResponseWorkflowsPutSharesUsersOwnersGroups]

class _ResponseWorkflowsPutSharesUsersOwnersUsers(Response):
    id: int
    name: str

class _ResponseWorkflowsPutSharesUsersOwnersGroups(Response):
    id: int
    name: str

class _ResponseWorkflowsPutSharesGroups(Response):
    readers: _ResponseWorkflowsPutSharesGroupsReaders
    writers: _ResponseWorkflowsPutSharesGroupsWriters
    owners: _ResponseWorkflowsPutSharesGroupsOwners
    total_user_shares: int
    total_group_shares: int

class _ResponseWorkflowsPutSharesGroupsReaders(Response):
    users: List[_ResponseWorkflowsPutSharesGroupsReadersUsers]
    groups: List[_ResponseWorkflowsPutSharesGroupsReadersGroups]

class _ResponseWorkflowsPutSharesGroupsReadersUsers(Response):
    id: int
    name: str

class _ResponseWorkflowsPutSharesGroupsReadersGroups(Response):
    id: int
    name: str

class _ResponseWorkflowsPutSharesGroupsWriters(Response):
    users: List[_ResponseWorkflowsPutSharesGroupsWritersUsers]
    groups: List[_ResponseWorkflowsPutSharesGroupsWritersGroups]

class _ResponseWorkflowsPutSharesGroupsWritersUsers(Response):
    id: int
    name: str

class _ResponseWorkflowsPutSharesGroupsWritersGroups(Response):
    id: int
    name: str

class _ResponseWorkflowsPutSharesGroupsOwners(Response):
    users: List[_ResponseWorkflowsPutSharesGroupsOwnersUsers]
    groups: List[_ResponseWorkflowsPutSharesGroupsOwnersGroups]

class _ResponseWorkflowsPutSharesGroupsOwnersUsers(Response):
    id: int
    name: str

class _ResponseWorkflowsPutSharesGroupsOwnersGroups(Response):
    id: int
    name: str

class _ResponseWorkflowsListDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shareable: bool

class _ResponseWorkflowsPutTransfer(Response):
    dependencies: List[_ResponseWorkflowsPutTransferDependencies]

class _ResponseWorkflowsPutTransferDependencies(Response):
    object_type: str
    fco_type: str
    id: int
    name: str
    permission_level: str
    description: str
    shared: bool

class _ResponseWorkflowsPutArchive(Response):
    id: int
    name: str
    description: str
    definition: str
    valid: bool
    validation_errors: str
    file_id: str
    user: _ResponseWorkflowsPutArchiveUser
    state: str
    schedule: _ResponseWorkflowsPutArchiveSchedule
    allow_concurrent_executions: bool
    time_zone: str
    next_execution_at: str
    notifications: _ResponseWorkflowsPutArchiveNotifications
    archived: str
    hidden: bool
    my_permission_level: str
    created_at: str
    updated_at: str

class _ResponseWorkflowsPutArchiveUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseWorkflowsPutArchiveSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseWorkflowsPutArchiveNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseWorkflowsListProjects(Response):
    id: int
    author: _ResponseWorkflowsListProjectsAuthor
    name: str
    description: str
    users: List[_ResponseWorkflowsListProjectsUsers]
    auto_share: bool
    created_at: str
    updated_at: str
    archived: str

class _ResponseWorkflowsListProjectsAuthor(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseWorkflowsListProjectsUsers(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseWorkflowsListGit(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseWorkflowsListGitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseWorkflowsListGitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseWorkflowsPutGit(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseWorkflowsPutGitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseWorkflowsPutGitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseWorkflowsPatchGit(Response):
    git_ref: str
    git_branch: str
    git_path: str
    git_repo: _ResponseWorkflowsPatchGitGitRepo
    git_ref_type: str
    pull_from_git: bool

class _ResponseWorkflowsPatchGitGitRepo(Response):
    id: int
    repo_url: str
    created_at: str
    updated_at: str

class _ResponseWorkflowsListGitCommits(Response):
    commit_hash: str
    author_name: str
    date: str
    message: str

class _ResponseWorkflowsPostGitCommits(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseWorkflowsGetGitCommits(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseWorkflowsPostGitCheckoutLatest(Response):
    content: str
    type: str
    size: int
    file_hash: str

class _ResponseWorkflowsPostClone(Response):
    id: int
    name: str
    description: str
    definition: str
    valid: bool
    validation_errors: str
    file_id: str
    user: _ResponseWorkflowsPostCloneUser
    state: str
    schedule: _ResponseWorkflowsPostCloneSchedule
    allow_concurrent_executions: bool
    time_zone: str
    next_execution_at: str
    notifications: _ResponseWorkflowsPostCloneNotifications
    archived: str
    hidden: bool
    my_permission_level: str
    created_at: str
    updated_at: str

class _ResponseWorkflowsPostCloneUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseWorkflowsPostCloneSchedule(Response):
    scheduled: bool
    scheduled_days: List[int]
    scheduled_hours: List[int]
    scheduled_minutes: List[int]
    scheduled_runs_per_hour: int
    scheduled_days_of_month: List[int]

class _ResponseWorkflowsPostCloneNotifications(Response):
    urls: List[str]
    success_email_subject: str
    success_email_body: str
    success_email_addresses: List[str]
    failure_email_addresses: List[str]
    stall_warning_minutes: int
    success_on: bool
    failure_on: bool

class _ResponseWorkflowsListExecutions(Response):
    id: int
    state: str
    mistral_state: str
    mistral_state_info: str
    user: _ResponseWorkflowsListExecutionsUser
    started_at: str
    finished_at: str
    created_at: str
    updated_at: str

class _ResponseWorkflowsListExecutionsUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseWorkflowsPostExecutions(Response):
    id: int
    state: str
    mistral_state: str
    mistral_state_info: str
    user: _ResponseWorkflowsPostExecutionsUser
    definition: str
    input: dict
    included_tasks: List[str]
    tasks: List[_ResponseWorkflowsPostExecutionsTasks]
    started_at: str
    finished_at: str
    created_at: str
    updated_at: str

class _ResponseWorkflowsPostExecutionsUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseWorkflowsPostExecutionsTasks(Response):
    name: str
    mistral_state: str
    mistral_state_info: str
    runs: List[_ResponseWorkflowsPostExecutionsTasksRuns]
    executions: List[_ResponseWorkflowsPostExecutionsTasksExecutions]

class _ResponseWorkflowsPostExecutionsTasksRuns(Response):
    id: int
    job_id: int
    my_permission_level: str
    state: str
    created_at: str
    started_at: str
    finished_at: str

class _ResponseWorkflowsPostExecutionsTasksExecutions(Response):
    id: int
    workflow_id: int
    my_permission_level: str
    state: str
    created_at: str
    started_at: str
    finished_at: str

class _ResponseWorkflowsGetExecutions(Response):
    id: int
    state: str
    mistral_state: str
    mistral_state_info: str
    user: _ResponseWorkflowsGetExecutionsUser
    definition: str
    input: dict
    included_tasks: List[str]
    tasks: List[_ResponseWorkflowsGetExecutionsTasks]
    started_at: str
    finished_at: str
    created_at: str
    updated_at: str

class _ResponseWorkflowsGetExecutionsUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseWorkflowsGetExecutionsTasks(Response):
    name: str
    mistral_state: str
    mistral_state_info: str
    runs: List[_ResponseWorkflowsGetExecutionsTasksRuns]
    executions: List[_ResponseWorkflowsGetExecutionsTasksExecutions]

class _ResponseWorkflowsGetExecutionsTasksRuns(Response):
    id: int
    job_id: int
    my_permission_level: str
    state: str
    created_at: str
    started_at: str
    finished_at: str

class _ResponseWorkflowsGetExecutionsTasksExecutions(Response):
    id: int
    workflow_id: int
    my_permission_level: str
    state: str
    created_at: str
    started_at: str
    finished_at: str

class _ResponseWorkflowsPostExecutionsCancel(Response):
    id: int
    state: str
    mistral_state: str
    mistral_state_info: str
    user: _ResponseWorkflowsPostExecutionsCancelUser
    definition: str
    input: dict
    included_tasks: List[str]
    tasks: List[_ResponseWorkflowsPostExecutionsCancelTasks]
    started_at: str
    finished_at: str
    created_at: str
    updated_at: str

class _ResponseWorkflowsPostExecutionsCancelUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseWorkflowsPostExecutionsCancelTasks(Response):
    name: str
    mistral_state: str
    mistral_state_info: str
    runs: List[_ResponseWorkflowsPostExecutionsCancelTasksRuns]
    executions: List[_ResponseWorkflowsPostExecutionsCancelTasksExecutions]

class _ResponseWorkflowsPostExecutionsCancelTasksRuns(Response):
    id: int
    job_id: int
    my_permission_level: str
    state: str
    created_at: str
    started_at: str
    finished_at: str

class _ResponseWorkflowsPostExecutionsCancelTasksExecutions(Response):
    id: int
    workflow_id: int
    my_permission_level: str
    state: str
    created_at: str
    started_at: str
    finished_at: str

class _ResponseWorkflowsPostExecutionsResume(Response):
    id: int
    state: str
    mistral_state: str
    mistral_state_info: str
    user: _ResponseWorkflowsPostExecutionsResumeUser
    definition: str
    input: dict
    included_tasks: List[str]
    tasks: List[_ResponseWorkflowsPostExecutionsResumeTasks]
    started_at: str
    finished_at: str
    created_at: str
    updated_at: str

class _ResponseWorkflowsPostExecutionsResumeUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseWorkflowsPostExecutionsResumeTasks(Response):
    name: str
    mistral_state: str
    mistral_state_info: str
    runs: List[_ResponseWorkflowsPostExecutionsResumeTasksRuns]
    executions: List[_ResponseWorkflowsPostExecutionsResumeTasksExecutions]

class _ResponseWorkflowsPostExecutionsResumeTasksRuns(Response):
    id: int
    job_id: int
    my_permission_level: str
    state: str
    created_at: str
    started_at: str
    finished_at: str

class _ResponseWorkflowsPostExecutionsResumeTasksExecutions(Response):
    id: int
    workflow_id: int
    my_permission_level: str
    state: str
    created_at: str
    started_at: str
    finished_at: str

class _ResponseWorkflowsPostExecutionsRetry(Response):
    id: int
    state: str
    mistral_state: str
    mistral_state_info: str
    user: _ResponseWorkflowsPostExecutionsRetryUser
    definition: str
    input: dict
    included_tasks: List[str]
    tasks: List[_ResponseWorkflowsPostExecutionsRetryTasks]
    started_at: str
    finished_at: str
    created_at: str
    updated_at: str

class _ResponseWorkflowsPostExecutionsRetryUser(Response):
    id: int
    name: str
    username: str
    initials: str
    online: bool

class _ResponseWorkflowsPostExecutionsRetryTasks(Response):
    name: str
    mistral_state: str
    mistral_state_info: str
    runs: List[_ResponseWorkflowsPostExecutionsRetryTasksRuns]
    executions: List[_ResponseWorkflowsPostExecutionsRetryTasksExecutions]

class _ResponseWorkflowsPostExecutionsRetryTasksRuns(Response):
    id: int
    job_id: int
    my_permission_level: str
    state: str
    created_at: str
    started_at: str
    finished_at: str

class _ResponseWorkflowsPostExecutionsRetryTasksExecutions(Response):
    id: int
    workflow_id: int
    my_permission_level: str
    state: str
    created_at: str
    started_at: str
    finished_at: str

# Need the individual endpoint classes defined first as above,
# before we can define APIClient to use them.
class APIClient:
    default_credential: int | None
    default_database_credential_id: int | None
    username: str
    feature_flags: tuple[str]
    last_response: Any
    def __init__(
        self,
        api_key: str | None = ...,
        return_type: str = ...,
        api_version: str = ...,
        local_api_spec: OrderedDict | str | None = ...,
        force_refresh_api_spec: bool = ...,
    ): ...
    def get_aws_credential_id(
        self,
        cred_name: str | int,
        owner: str | None = None,
    ) -> int: ...
    def get_database_credential_id(
        self,
        username: str | int,
        database_name: str | int,
    ) -> int: ...
    def get_database_id(
        self,
        database: str | int,
    ) -> int: ...
    def get_storage_host_id(
        self,
        storage_host: str | int,
    ) -> int: ...
    def get_table_id(
        self,
        table: str,
        database: str | int,
    ) -> int: ...
    admin = _Admin()
    aliases = _Aliases()
    announcements = _Announcements()
    clusters = _Clusters()
    credentials = _Credentials()
    databases = _Databases()
    endpoints = _Endpoints()
    enhancements = _Enhancements()
    exports = _Exports()
    files = _Files()
    git_repos = _Git_Repos()
    groups = _Groups()
    imports = _Imports()
    jobs = _Jobs()
    json_values = _Json_Values()
    match_targets = _Match_Targets()
    media = _Media()
    models = _Models()
    notebooks = _Notebooks()
    notifications = _Notifications()
    ontology = _Ontology()
    organizations = _Organizations()
    permission_sets = _Permission_Sets()
    predictions = _Predictions()
    projects = _Projects()
    queries = _Queries()
    remote_hosts = _Remote_Hosts()
    reports = _Reports()
    roles = _Roles()
    scripts = _Scripts()
    search = _Search()
    services = _Services()
    storage_hosts = _Storage_Hosts()
    table_tags = _Table_Tags()
    tables = _Tables()
    templates = _Templates()
    usage = _Usage()
    usage_limits = _Usage_Limits()
    users = _Users()
    workflows = _Workflows()
