coolipy.resources.security

Security (private keys) resource clients (sync + async).

 1"""Security (private keys) resource clients (sync + async)."""
 2
 3from __future__ import annotations
 4
 5from typing import Any
 6
 7from coolipy._base import AsyncResourceBase, ResourceBase
 8from coolipy._response import CoolipyAPIResponse
 9from coolipy.models.common import MessageResponse, UUIDResponse
10from coolipy.models.security import (
11    PrivateKeyCreateModel,
12    PrivateKeyModel,
13    PrivateKeyUpdateModel,
14)
15
16PrivateKeyList = list[PrivateKeyModel]
17
18
19def _dump(model: Any) -> dict[str, Any]:
20    return model.model_dump(mode="json", exclude_none=True)
21
22
23class Security(ResourceBase):
24    """Synchronous client for Coolify private keys."""
25
26    def list(self) -> CoolipyAPIResponse[PrivateKeyList]:
27        """List all private keys."""
28        return self._get("/security/keys", response_model=list[PrivateKeyModel])
29
30    def get(self, uuid: str) -> CoolipyAPIResponse[PrivateKeyModel]:
31        """Get a private key by UUID."""
32        return self._get(f"/security/keys/{uuid}", response_model=PrivateKeyModel)
33
34    def create(self, model: PrivateKeyCreateModel) -> CoolipyAPIResponse[UUIDResponse]:
35        """Create a private key."""
36        return self._post("/security/keys", json=_dump(model), response_model=UUIDResponse)
37
38    def update(self, uuid: str, model: PrivateKeyUpdateModel) -> CoolipyAPIResponse[UUIDResponse]:
39        """Update a private key by UUID."""
40        return self._patch(f"/security/keys/{uuid}", json=_dump(model), response_model=UUIDResponse)
41
42    def delete(self, uuid: str) -> CoolipyAPIResponse[MessageResponse]:
43        """Delete a private key by UUID."""
44        return self._delete(f"/security/keys/{uuid}", response_model=MessageResponse)
45
46
47class AsyncSecurity(AsyncResourceBase):
48    """Asynchronous client for Coolify private keys."""
49
50    async def list(self) -> CoolipyAPIResponse[PrivateKeyList]:
51        """List all private keys."""
52        return await self._get("/security/keys", response_model=list[PrivateKeyModel])
53
54    async def get(self, uuid: str) -> CoolipyAPIResponse[PrivateKeyModel]:
55        """Get a private key by UUID."""
56        return await self._get(f"/security/keys/{uuid}", response_model=PrivateKeyModel)
57
58    async def create(self, model: PrivateKeyCreateModel) -> CoolipyAPIResponse[UUIDResponse]:
59        """Create a private key."""
60        return await self._post("/security/keys", json=_dump(model), response_model=UUIDResponse)
61
62    async def update(
63        self, uuid: str, model: PrivateKeyUpdateModel
64    ) -> CoolipyAPIResponse[UUIDResponse]:
65        """Update a private key by UUID."""
66        return await self._patch(
67            f"/security/keys/{uuid}", json=_dump(model), response_model=UUIDResponse
68        )
69
70    async def delete(self, uuid: str) -> CoolipyAPIResponse[MessageResponse]:
71        """Delete a private key by UUID."""
72        return await self._delete(f"/security/keys/{uuid}", response_model=MessageResponse)
class Security(coolipy._base.ResourceBase):
24class Security(ResourceBase):
25    """Synchronous client for Coolify private keys."""
26
27    def list(self) -> CoolipyAPIResponse[PrivateKeyList]:
28        """List all private keys."""
29        return self._get("/security/keys", response_model=list[PrivateKeyModel])
30
31    def get(self, uuid: str) -> CoolipyAPIResponse[PrivateKeyModel]:
32        """Get a private key by UUID."""
33        return self._get(f"/security/keys/{uuid}", response_model=PrivateKeyModel)
34
35    def create(self, model: PrivateKeyCreateModel) -> CoolipyAPIResponse[UUIDResponse]:
36        """Create a private key."""
37        return self._post("/security/keys", json=_dump(model), response_model=UUIDResponse)
38
39    def update(self, uuid: str, model: PrivateKeyUpdateModel) -> CoolipyAPIResponse[UUIDResponse]:
40        """Update a private key by UUID."""
41        return self._patch(f"/security/keys/{uuid}", json=_dump(model), response_model=UUIDResponse)
42
43    def delete(self, uuid: str) -> CoolipyAPIResponse[MessageResponse]:
44        """Delete a private key by UUID."""
45        return self._delete(f"/security/keys/{uuid}", response_model=MessageResponse)

Synchronous client for Coolify private keys.

27    def list(self) -> CoolipyAPIResponse[PrivateKeyList]:
28        """List all private keys."""
29        return self._get("/security/keys", response_model=list[PrivateKeyModel])

List all private keys.

def get( self, uuid: str) -> coolipy.CoolipyAPIResponse[coolipy.models.security.PrivateKeyModel]:
31    def get(self, uuid: str) -> CoolipyAPIResponse[PrivateKeyModel]:
32        """Get a private key by UUID."""
33        return self._get(f"/security/keys/{uuid}", response_model=PrivateKeyModel)

Get a private key by UUID.

35    def create(self, model: PrivateKeyCreateModel) -> CoolipyAPIResponse[UUIDResponse]:
36        """Create a private key."""
37        return self._post("/security/keys", json=_dump(model), response_model=UUIDResponse)

Create a private key.

39    def update(self, uuid: str, model: PrivateKeyUpdateModel) -> CoolipyAPIResponse[UUIDResponse]:
40        """Update a private key by UUID."""
41        return self._patch(f"/security/keys/{uuid}", json=_dump(model), response_model=UUIDResponse)

Update a private key by UUID.

def delete( self, uuid: str) -> coolipy.CoolipyAPIResponse[coolipy.models.common.MessageResponse]:
43    def delete(self, uuid: str) -> CoolipyAPIResponse[MessageResponse]:
44        """Delete a private key by UUID."""
45        return self._delete(f"/security/keys/{uuid}", response_model=MessageResponse)

Delete a private key by UUID.

class AsyncSecurity(coolipy._base.AsyncResourceBase):
48class AsyncSecurity(AsyncResourceBase):
49    """Asynchronous client for Coolify private keys."""
50
51    async def list(self) -> CoolipyAPIResponse[PrivateKeyList]:
52        """List all private keys."""
53        return await self._get("/security/keys", response_model=list[PrivateKeyModel])
54
55    async def get(self, uuid: str) -> CoolipyAPIResponse[PrivateKeyModel]:
56        """Get a private key by UUID."""
57        return await self._get(f"/security/keys/{uuid}", response_model=PrivateKeyModel)
58
59    async def create(self, model: PrivateKeyCreateModel) -> CoolipyAPIResponse[UUIDResponse]:
60        """Create a private key."""
61        return await self._post("/security/keys", json=_dump(model), response_model=UUIDResponse)
62
63    async def update(
64        self, uuid: str, model: PrivateKeyUpdateModel
65    ) -> CoolipyAPIResponse[UUIDResponse]:
66        """Update a private key by UUID."""
67        return await self._patch(
68            f"/security/keys/{uuid}", json=_dump(model), response_model=UUIDResponse
69        )
70
71    async def delete(self, uuid: str) -> CoolipyAPIResponse[MessageResponse]:
72        """Delete a private key by UUID."""
73        return await self._delete(f"/security/keys/{uuid}", response_model=MessageResponse)

Asynchronous client for Coolify private keys.

async def list( self) -> coolipy.CoolipyAPIResponse[list[coolipy.models.security.PrivateKeyModel]]:
51    async def list(self) -> CoolipyAPIResponse[PrivateKeyList]:
52        """List all private keys."""
53        return await self._get("/security/keys", response_model=list[PrivateKeyModel])

List all private keys.

async def get( self, uuid: str) -> coolipy.CoolipyAPIResponse[coolipy.models.security.PrivateKeyModel]:
55    async def get(self, uuid: str) -> CoolipyAPIResponse[PrivateKeyModel]:
56        """Get a private key by UUID."""
57        return await self._get(f"/security/keys/{uuid}", response_model=PrivateKeyModel)

Get a private key by UUID.

59    async def create(self, model: PrivateKeyCreateModel) -> CoolipyAPIResponse[UUIDResponse]:
60        """Create a private key."""
61        return await self._post("/security/keys", json=_dump(model), response_model=UUIDResponse)

Create a private key.

63    async def update(
64        self, uuid: str, model: PrivateKeyUpdateModel
65    ) -> CoolipyAPIResponse[UUIDResponse]:
66        """Update a private key by UUID."""
67        return await self._patch(
68            f"/security/keys/{uuid}", json=_dump(model), response_model=UUIDResponse
69        )

Update a private key by UUID.

async def delete( self, uuid: str) -> coolipy.CoolipyAPIResponse[coolipy.models.common.MessageResponse]:
71    async def delete(self, uuid: str) -> CoolipyAPIResponse[MessageResponse]:
72        """Delete a private key by UUID."""
73        return await self._delete(f"/security/keys/{uuid}", response_model=MessageResponse)

Delete a private key by UUID.