Module coolipy.services.coolify_api.services

Classes

class Services (http_service: HttpService, base_service_url: str)

Handles operations for managing services in Coolify API.

Initializes the Coolify API service with an HTTP service instance and a specific service URL.

Args

http_service : HttpService
Instance of the HttpService class for making HTTP requests.
base_service_url : str
The endpoint URL for the specific service (e.g., '/servers', '/teams').
Expand source code
class Services(CoolifyApiBase):
    """
    Handles operations for managing services in Coolify API.
    """

    def list(self) -> CoolifyAPIResponse:
        """
        Fetches the list of services.

        Returns:
            CoolifyAPIResponse: The response containing the list of services.
        """
        content = self._http.get(self._base_url)
        return self._handle_response(
            content, COOLIFY_RETURN_TYPES.list, model=ServiceModel
        )

    def create(self, service: ServiceModelCreate) -> CoolifyAPIResponse:
        """
        Creates a new service.

        Args:
            service (ServiceModelCreate): The model containing the service data to create.

        Returns:
            CoolifyAPIResponse: The response containing the created service data.
        """
        model_as_dict = asdict(service)
        content = self._http.post(self._base_url, data=json.dumps(model_as_dict))
        return self._handle_response(content, COOLIFY_RETURN_TYPES.single, ServiceModel)

    def get(self, service_uuid: str) -> CoolifyAPIResponse:
        """
        Fetches a specific service by UUID.

        Args:
            service_uuid (str): The UUID of the service to fetch.

        Returns:
            CoolifyAPIResponse: The response containing the service data.
        """
        content = self._http.get(f"{self._base_url}/{service_uuid}")
        return self._handle_response(content, COOLIFY_RETURN_TYPES.single, ServiceModel)

    def delete(
        self,
        service_uuid: str,
        delete_configurations: bool,
        delete_volumes: bool,
        docker_cleanup: bool,
        delete_connected_networks: bool,
    ) -> CoolifyAPIResponse:
        """
        Deletes a service with specified cleanup options.

        Args:
            service_uuid (str): The UUID of the service to delete.
            delete_configurations (bool): Whether to delete the configurations.
            delete_volumes (bool): Whether to delete the volumes.
            docker_cleanup (bool): Whether to clean up Docker.
            delete_connected_networks (bool): Whether to delete connected networks.

        Returns:
            CoolifyAPIResponse: The response after deleting the service.
        """
        params = {
            "delete_configurations": delete_configurations,
            "delete_volumes": delete_volumes,
            "docker_cleanup": docker_cleanup,
            "delete_connected_networks": delete_connected_networks,
        }
        query_p = self._build_url_params_from_dict(params)
        content = self._http.delete(f"{self._base_url}/{service_uuid}?{query_p}")
        return self._handle_response(content, COOLIFY_RETURN_TYPES.raw)

    def list_envs(self, service_uuid: str) -> CoolifyAPIResponse:
        """
        Fetches environment variables for a service.

        Args:
            service_uuid (str): The UUID of the service to fetch environment variables for.

        Returns:
            CoolifyAPIResponse: The response containing the list of environment variables.
        """
        content = self._http.get(f"{self._base_url}/{service_uuid}{URL_MAP.envs}")
        return self._handle_response(content, COOLIFY_RETURN_TYPES.list, EnvVarModel)

    def create_env(
        self, service_uuid: str, env_var: EnvVarModelsCreate
    ) -> CoolifyAPIResponse:
        """
        Creates a new environment variable for a service.

        Args:
            service_uuid (str): The UUID of the service to add the environment variable to.
            env_var (EnvVarModelsCreate): The environment variable data to create.

        Returns:
            CoolifyAPIResponse: The response containing the created environment variable.
        """
        env_as_dict = asdict(env_var)
        content = self._http.post(
            f"{self._base_url}/{service_uuid}/envs", data=json.dumps(env_as_dict)
        )
        return self._handle_response(content, COOLIFY_RETURN_TYPES.single, EnvVarModel)

    def update_env(
        self, service_uuid: str, env_var_updated: EnvVarModelsCreate
    ) -> CoolifyAPIResponse:
        """
        Updates an environment variable for a service.

        Args:
            service_uuid (str): The UUID of the service to update the environment variable for.
            env_var_updated (EnvVarModelCreate): The updated environment variable data.

        Returns:
            CoolifyAPIResponse: The response containing the updated environment variable.
        """
        env_as_dict = asdict(env_var_updated)
        content = self._http.patch(
            f"{self._base_url}/{service_uuid}{URL_MAP.envs}",
            data=json.dumps(env_as_dict),
        )
        return self._handle_response(content, COOLIFY_RETURN_TYPES.raw)

    def bulk_update_env(
        self, service_uuid: str, env_vars_updated: List[EnvVarModelsCreate]
    ) -> CoolifyAPIResponse:
        """
        Bulk updates environment variables for a service.

        Args:
            service_uuid (str): The UUID of the service to update the environment variables for.
            env_vars_updated (List[EnvVarModelsCreate]): The list of updated environment variable data.

        Returns:
            CoolifyAPIResponse: The response after bulk updating the environment variables.
        """
        envs_as_dict = [asdict(i) for i in env_vars_updated]
        content = self._http.patch(
            f"{self._base_url}/{service_uuid}{URL_MAP.envs}{URL_MAP.bulk}",
            data=json.dumps(envs_as_dict),
        )
        return self._handle_response(content, COOLIFY_RETURN_TYPES.raw)

    def delete_env(self, service_uuid: str, env_uuid: str) -> CoolifyAPIResponse:
        """
        Deletes an environment variable from a service.

        Args:
            service_uuid (str): The UUID of the service to delete the environment variable from.
            env_uuid (str): The UUID of the environment variable to delete.

        Returns:
            CoolifyAPIResponse: The response after deleting the environment variable.
        """
        content = self._http.delete(
            f"{self._base_url}/{service_uuid}{URL_MAP.envs}/{env_uuid}"
        )
        return self._handle_response(content, COOLIFY_RETURN_TYPES.raw)

    def start(self, service_uuid: str) -> CoolifyAPIResponse:
        """
        Starts a service.

        Args:
            service_uuid (str): The UUID of the service to start.

        Returns:
            CoolifyAPIResponse: The response after starting the service.
        """
        content = self._http.get(f"{self._base_url}/{service_uuid}{URL_MAP.start}")
        return self._handle_response(content, COOLIFY_RETURN_TYPES.raw)

    def stop(self, service_uuid: str) -> CoolifyAPIResponse:
        """
        Stops a service.

        Args:
            service_uuid (str): The UUID of the service to stop.

        Returns:
            CoolifyAPIResponse: The response after stopping the service.
        """
        content = self._http.get(f"{self._base_url}/{service_uuid}{URL_MAP.stop}")
        return self._handle_response(content, COOLIFY_RETURN_TYPES.raw)

    def restart(self, service_uuid: str) -> CoolifyAPIResponse:
        """
        Restarts a service.

        Args:
            service_uuid (str): The UUID of the service to restart.

        Returns:
            CoolifyAPIResponse: The response after restarting the service.
        """
        content = self._http.get(f"{self._base_url}/{service_uuid}{URL_MAP.restart}")
        return self._handle_response(content, COOLIFY_RETURN_TYPES.raw)

Ancestors

Methods

def bulk_update_env(self, service_uuid: str, env_vars_updated: List[EnvVarModelsCreate]) ‑> CoolifyAPIResponse

Bulk updates environment variables for a service.

Args

service_uuid : str
The UUID of the service to update the environment variables for.
env_vars_updated : List[EnvVarModelsCreate]
The list of updated environment variable data.

Returns

CoolifyAPIResponse
The response after bulk updating the environment variables.
def create(self, service: ServiceModelCreate) ‑> CoolifyAPIResponse

Creates a new service.

Args

service : ServiceModelCreate
The model containing the service data to create.

Returns

CoolifyAPIResponse
The response containing the created service data.
def create_env(self, service_uuid: str, env_var: EnvVarModelsCreate) ‑> CoolifyAPIResponse

Creates a new environment variable for a service.

Args

service_uuid : str
The UUID of the service to add the environment variable to.
env_var : EnvVarModelsCreate
The environment variable data to create.

Returns

CoolifyAPIResponse
The response containing the created environment variable.
def delete(self, service_uuid: str, delete_configurations: bool, delete_volumes: bool, docker_cleanup: bool, delete_connected_networks: bool) ‑> CoolifyAPIResponse

Deletes a service with specified cleanup options.

Args

service_uuid : str
The UUID of the service to delete.
delete_configurations : bool
Whether to delete the configurations.
delete_volumes : bool
Whether to delete the volumes.
docker_cleanup : bool
Whether to clean up Docker.
delete_connected_networks : bool
Whether to delete connected networks.

Returns

CoolifyAPIResponse
The response after deleting the service.
def delete_env(self, service_uuid: str, env_uuid: str) ‑> CoolifyAPIResponse

Deletes an environment variable from a service.

Args

service_uuid : str
The UUID of the service to delete the environment variable from.
env_uuid : str
The UUID of the environment variable to delete.

Returns

CoolifyAPIResponse
The response after deleting the environment variable.
def get(self, service_uuid: str) ‑> CoolifyAPIResponse

Fetches a specific service by UUID.

Args

service_uuid : str
The UUID of the service to fetch.

Returns

CoolifyAPIResponse
The response containing the service data.
def list(self) ‑> CoolifyAPIResponse

Fetches the list of services.

Returns

CoolifyAPIResponse
The response containing the list of services.
def list_envs(self, service_uuid: str) ‑> CoolifyAPIResponse

Fetches environment variables for a service.

Args

service_uuid : str
The UUID of the service to fetch environment variables for.

Returns

CoolifyAPIResponse
The response containing the list of environment variables.
def restart(self, service_uuid: str) ‑> CoolifyAPIResponse

Restarts a service.

Args

service_uuid : str
The UUID of the service to restart.

Returns

CoolifyAPIResponse
The response after restarting the service.
def start(self, service_uuid: str) ‑> CoolifyAPIResponse

Starts a service.

Args

service_uuid : str
The UUID of the service to start.

Returns

CoolifyAPIResponse
The response after starting the service.
def stop(self, service_uuid: str) ‑> CoolifyAPIResponse

Stops a service.

Args

service_uuid : str
The UUID of the service to stop.

Returns

CoolifyAPIResponse
The response after stopping the service.
def update_env(self, service_uuid: str, env_var_updated: EnvVarModelsCreate) ‑> CoolifyAPIResponse

Updates an environment variable for a service.

Args

service_uuid : str
The UUID of the service to update the environment variable for.
env_var_updated : EnvVarModelCreate
The updated environment variable data.

Returns

CoolifyAPIResponse
The response containing the updated environment variable.