coolipy.async_client
Asynchronous coolipy client.
1"""Asynchronous coolipy client.""" 2 3from __future__ import annotations 4 5import httpx 6 7from coolipy._http import AsyncTransport, build_base_url, parse_response 8from coolipy._response import CoolipyAPIResponse 9from coolipy.exceptions import CoolipyConfigError 10from coolipy.models.system import SystemMessage 11from coolipy.resources.applications import AsyncApplications 12from coolipy.resources.databases import AsyncDatabases 13from coolipy.resources.deployments import AsyncDeployments 14from coolipy.resources.projects import AsyncProjects 15from coolipy.resources.s3_storages import AsyncS3Storages 16from coolipy.resources.security import AsyncSecurity 17from coolipy.resources.servers import AsyncServers 18from coolipy.resources.services import AsyncServices 19from coolipy.resources.tags import AsyncTags 20from coolipy.resources.teams import AsyncTeams 21 22 23class AsyncCoolipy: 24 """Asynchronous client for the Coolify API. 25 26 Args: 27 coolify_api_key: Bearer token used to authenticate with the Coolify API. 28 coolify_endpoint: Hostname or IP of the Coolify instance. 29 coolify_port: Port of the Coolify instance (ignored when ``omit_port``). 30 omit_port: When ``True``, build the base URL without a port. 31 http_protocol: ``"http"`` or ``"https"``. 32 timeout: Request timeout in seconds. 33 transport: Optional httpx async transport override (mainly for testing). 34 """ 35 36 def __init__( 37 self, 38 coolify_api_key: str, 39 coolify_endpoint: str, 40 coolify_port: int = 8000, 41 omit_port: bool = False, 42 http_protocol: str = "http", 43 timeout: float = 30.0, 44 transport: httpx.AsyncBaseTransport | None = None, 45 ) -> None: 46 if not coolify_api_key: 47 raise CoolipyConfigError("coolify_api_key must be a non-empty string.") 48 base_url = build_base_url(http_protocol, coolify_endpoint, coolify_port, omit_port) 49 self._transport = AsyncTransport( 50 base_url, coolify_api_key, timeout=timeout, transport=transport 51 ) 52 self.applications = AsyncApplications(self._transport) 53 self.databases = AsyncDatabases(self._transport) 54 self.services = AsyncServices(self._transport) 55 self.servers = AsyncServers(self._transport) 56 self.projects = AsyncProjects(self._transport) 57 self.teams = AsyncTeams(self._transport) 58 self.deployments = AsyncDeployments(self._transport) 59 self.tags = AsyncTags(self._transport) 60 self.s3_storages = AsyncS3Storages(self._transport) 61 self.security = AsyncSecurity(self._transport) 62 63 async def version(self) -> CoolipyAPIResponse[str]: 64 """Get the Coolify version.""" 65 return parse_response(await self._transport.request("GET", "/version"), str) 66 67 async def health(self) -> CoolipyAPIResponse[str]: 68 """Run the Coolify healthcheck.""" 69 return parse_response(await self._transport.request("GET", "/health"), str) 70 71 async def enable_api(self) -> CoolipyAPIResponse[SystemMessage]: 72 """Enable the Coolify API (requires root permissions).""" 73 return parse_response(await self._transport.request("POST", "/enable"), SystemMessage) 74 75 async def disable_api(self) -> CoolipyAPIResponse[SystemMessage]: 76 """Disable the Coolify API (requires root permissions).""" 77 return parse_response(await self._transport.request("POST", "/disable"), SystemMessage) 78 79 async def enable_mcp(self) -> CoolipyAPIResponse[SystemMessage]: 80 """Enable the Coolify MCP server (requires root permissions).""" 81 return parse_response(await self._transport.request("POST", "/mcp/enable"), SystemMessage) 82 83 async def disable_mcp(self) -> CoolipyAPIResponse[SystemMessage]: 84 """Disable the Coolify MCP server (requires root permissions).""" 85 return parse_response(await self._transport.request("POST", "/mcp/disable"), SystemMessage) 86 87 async def close(self) -> None: 88 """Close the underlying HTTP client.""" 89 await self._transport.close() 90 91 async def __aenter__(self) -> AsyncCoolipy: 92 return self 93 94 async def __aexit__(self, *exc: object) -> None: 95 await self.close()
class
AsyncCoolipy:
24class AsyncCoolipy: 25 """Asynchronous client for the Coolify API. 26 27 Args: 28 coolify_api_key: Bearer token used to authenticate with the Coolify API. 29 coolify_endpoint: Hostname or IP of the Coolify instance. 30 coolify_port: Port of the Coolify instance (ignored when ``omit_port``). 31 omit_port: When ``True``, build the base URL without a port. 32 http_protocol: ``"http"`` or ``"https"``. 33 timeout: Request timeout in seconds. 34 transport: Optional httpx async transport override (mainly for testing). 35 """ 36 37 def __init__( 38 self, 39 coolify_api_key: str, 40 coolify_endpoint: str, 41 coolify_port: int = 8000, 42 omit_port: bool = False, 43 http_protocol: str = "http", 44 timeout: float = 30.0, 45 transport: httpx.AsyncBaseTransport | None = None, 46 ) -> None: 47 if not coolify_api_key: 48 raise CoolipyConfigError("coolify_api_key must be a non-empty string.") 49 base_url = build_base_url(http_protocol, coolify_endpoint, coolify_port, omit_port) 50 self._transport = AsyncTransport( 51 base_url, coolify_api_key, timeout=timeout, transport=transport 52 ) 53 self.applications = AsyncApplications(self._transport) 54 self.databases = AsyncDatabases(self._transport) 55 self.services = AsyncServices(self._transport) 56 self.servers = AsyncServers(self._transport) 57 self.projects = AsyncProjects(self._transport) 58 self.teams = AsyncTeams(self._transport) 59 self.deployments = AsyncDeployments(self._transport) 60 self.tags = AsyncTags(self._transport) 61 self.s3_storages = AsyncS3Storages(self._transport) 62 self.security = AsyncSecurity(self._transport) 63 64 async def version(self) -> CoolipyAPIResponse[str]: 65 """Get the Coolify version.""" 66 return parse_response(await self._transport.request("GET", "/version"), str) 67 68 async def health(self) -> CoolipyAPIResponse[str]: 69 """Run the Coolify healthcheck.""" 70 return parse_response(await self._transport.request("GET", "/health"), str) 71 72 async def enable_api(self) -> CoolipyAPIResponse[SystemMessage]: 73 """Enable the Coolify API (requires root permissions).""" 74 return parse_response(await self._transport.request("POST", "/enable"), SystemMessage) 75 76 async def disable_api(self) -> CoolipyAPIResponse[SystemMessage]: 77 """Disable the Coolify API (requires root permissions).""" 78 return parse_response(await self._transport.request("POST", "/disable"), SystemMessage) 79 80 async def enable_mcp(self) -> CoolipyAPIResponse[SystemMessage]: 81 """Enable the Coolify MCP server (requires root permissions).""" 82 return parse_response(await self._transport.request("POST", "/mcp/enable"), SystemMessage) 83 84 async def disable_mcp(self) -> CoolipyAPIResponse[SystemMessage]: 85 """Disable the Coolify MCP server (requires root permissions).""" 86 return parse_response(await self._transport.request("POST", "/mcp/disable"), SystemMessage) 87 88 async def close(self) -> None: 89 """Close the underlying HTTP client.""" 90 await self._transport.close() 91 92 async def __aenter__(self) -> AsyncCoolipy: 93 return self 94 95 async def __aexit__(self, *exc: object) -> None: 96 await self.close()
Asynchronous client for the Coolify API.
Args:
coolify_api_key: Bearer token used to authenticate with the Coolify API.
coolify_endpoint: Hostname or IP of the Coolify instance.
coolify_port: Port of the Coolify instance (ignored when omit_port).
omit_port: When True, build the base URL without a port.
http_protocol: "http" or "https".
timeout: Request timeout in seconds.
transport: Optional httpx async transport override (mainly for testing).
AsyncCoolipy( coolify_api_key: str, coolify_endpoint: str, coolify_port: int = 8000, omit_port: bool = False, http_protocol: str = 'http', timeout: float = 30.0, transport: httpx.AsyncBaseTransport | None = None)
37 def __init__( 38 self, 39 coolify_api_key: str, 40 coolify_endpoint: str, 41 coolify_port: int = 8000, 42 omit_port: bool = False, 43 http_protocol: str = "http", 44 timeout: float = 30.0, 45 transport: httpx.AsyncBaseTransport | None = None, 46 ) -> None: 47 if not coolify_api_key: 48 raise CoolipyConfigError("coolify_api_key must be a non-empty string.") 49 base_url = build_base_url(http_protocol, coolify_endpoint, coolify_port, omit_port) 50 self._transport = AsyncTransport( 51 base_url, coolify_api_key, timeout=timeout, transport=transport 52 ) 53 self.applications = AsyncApplications(self._transport) 54 self.databases = AsyncDatabases(self._transport) 55 self.services = AsyncServices(self._transport) 56 self.servers = AsyncServers(self._transport) 57 self.projects = AsyncProjects(self._transport) 58 self.teams = AsyncTeams(self._transport) 59 self.deployments = AsyncDeployments(self._transport) 60 self.tags = AsyncTags(self._transport) 61 self.s3_storages = AsyncS3Storages(self._transport) 62 self.security = AsyncSecurity(self._transport)
64 async def version(self) -> CoolipyAPIResponse[str]: 65 """Get the Coolify version.""" 66 return parse_response(await self._transport.request("GET", "/version"), str)
Get the Coolify version.
68 async def health(self) -> CoolipyAPIResponse[str]: 69 """Run the Coolify healthcheck.""" 70 return parse_response(await self._transport.request("GET", "/health"), str)
Run the Coolify healthcheck.
72 async def enable_api(self) -> CoolipyAPIResponse[SystemMessage]: 73 """Enable the Coolify API (requires root permissions).""" 74 return parse_response(await self._transport.request("POST", "/enable"), SystemMessage)
Enable the Coolify API (requires root permissions).
76 async def disable_api(self) -> CoolipyAPIResponse[SystemMessage]: 77 """Disable the Coolify API (requires root permissions).""" 78 return parse_response(await self._transport.request("POST", "/disable"), SystemMessage)
Disable the Coolify API (requires root permissions).
80 async def enable_mcp(self) -> CoolipyAPIResponse[SystemMessage]: 81 """Enable the Coolify MCP server (requires root permissions).""" 82 return parse_response(await self._transport.request("POST", "/mcp/enable"), SystemMessage)
Enable the Coolify MCP server (requires root permissions).