coolipy.resources.tags

Tags resource clients (sync + async).

 1"""Tags 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, Tag, TagCreate, TagUpdate
10
11TagList = list[Tag]
12
13
14def _dump(model: Any) -> dict[str, Any]:
15    return model.model_dump(mode="json", exclude_none=True)
16
17
18class Tags(ResourceBase):
19    """Synchronous client for Coolify tags."""
20
21    def list(self) -> CoolipyAPIResponse[TagList]:
22        """List all tags."""
23        return self._get("/tags", response_model=list[Tag])
24
25    def create(self, model: TagCreate) -> CoolipyAPIResponse[Tag]:
26        """Create a tag."""
27        return self._post("/tags", json=_dump(model), response_model=Tag)
28
29    def update(self, uuid: str, model: TagUpdate) -> CoolipyAPIResponse[Tag]:
30        """Update a tag by UUID."""
31        return self._patch(f"/tags/{uuid}", json=_dump(model), response_model=Tag)
32
33    def delete(self, uuid: str) -> CoolipyAPIResponse[MessageResponse]:
34        """Delete a tag by UUID."""
35        return self._delete(f"/tags/{uuid}", response_model=MessageResponse)
36
37
38class AsyncTags(AsyncResourceBase):
39    """Asynchronous client for Coolify tags."""
40
41    async def list(self) -> CoolipyAPIResponse[TagList]:
42        """List all tags."""
43        return await self._get("/tags", response_model=list[Tag])
44
45    async def create(self, model: TagCreate) -> CoolipyAPIResponse[Tag]:
46        """Create a tag."""
47        return await self._post("/tags", json=_dump(model), response_model=Tag)
48
49    async def update(self, uuid: str, model: TagUpdate) -> CoolipyAPIResponse[Tag]:
50        """Update a tag by UUID."""
51        return await self._patch(f"/tags/{uuid}", json=_dump(model), response_model=Tag)
52
53    async def delete(self, uuid: str) -> CoolipyAPIResponse[MessageResponse]:
54        """Delete a tag by UUID."""
55        return await self._delete(f"/tags/{uuid}", response_model=MessageResponse)
TagList = list[coolipy.models.common.Tag]
class Tags(coolipy._base.ResourceBase):
19class Tags(ResourceBase):
20    """Synchronous client for Coolify tags."""
21
22    def list(self) -> CoolipyAPIResponse[TagList]:
23        """List all tags."""
24        return self._get("/tags", response_model=list[Tag])
25
26    def create(self, model: TagCreate) -> CoolipyAPIResponse[Tag]:
27        """Create a tag."""
28        return self._post("/tags", json=_dump(model), response_model=Tag)
29
30    def update(self, uuid: str, model: TagUpdate) -> CoolipyAPIResponse[Tag]:
31        """Update a tag by UUID."""
32        return self._patch(f"/tags/{uuid}", json=_dump(model), response_model=Tag)
33
34    def delete(self, uuid: str) -> CoolipyAPIResponse[MessageResponse]:
35        """Delete a tag by UUID."""
36        return self._delete(f"/tags/{uuid}", response_model=MessageResponse)

Synchronous client for Coolify tags.

def list( self) -> coolipy.CoolipyAPIResponse[list[coolipy.models.common.Tag]]:
22    def list(self) -> CoolipyAPIResponse[TagList]:
23        """List all tags."""
24        return self._get("/tags", response_model=list[Tag])

List all tags.

26    def create(self, model: TagCreate) -> CoolipyAPIResponse[Tag]:
27        """Create a tag."""
28        return self._post("/tags", json=_dump(model), response_model=Tag)

Create a tag.

def update( self, uuid: str, model: coolipy.models.common.TagUpdate) -> coolipy.CoolipyAPIResponse[coolipy.models.common.Tag]:
30    def update(self, uuid: str, model: TagUpdate) -> CoolipyAPIResponse[Tag]:
31        """Update a tag by UUID."""
32        return self._patch(f"/tags/{uuid}", json=_dump(model), response_model=Tag)

Update a tag by UUID.

def delete( self, uuid: str) -> coolipy.CoolipyAPIResponse[coolipy.models.common.MessageResponse]:
34    def delete(self, uuid: str) -> CoolipyAPIResponse[MessageResponse]:
35        """Delete a tag by UUID."""
36        return self._delete(f"/tags/{uuid}", response_model=MessageResponse)

Delete a tag by UUID.

class AsyncTags(coolipy._base.AsyncResourceBase):
39class AsyncTags(AsyncResourceBase):
40    """Asynchronous client for Coolify tags."""
41
42    async def list(self) -> CoolipyAPIResponse[TagList]:
43        """List all tags."""
44        return await self._get("/tags", response_model=list[Tag])
45
46    async def create(self, model: TagCreate) -> CoolipyAPIResponse[Tag]:
47        """Create a tag."""
48        return await self._post("/tags", json=_dump(model), response_model=Tag)
49
50    async def update(self, uuid: str, model: TagUpdate) -> CoolipyAPIResponse[Tag]:
51        """Update a tag by UUID."""
52        return await self._patch(f"/tags/{uuid}", json=_dump(model), response_model=Tag)
53
54    async def delete(self, uuid: str) -> CoolipyAPIResponse[MessageResponse]:
55        """Delete a tag by UUID."""
56        return await self._delete(f"/tags/{uuid}", response_model=MessageResponse)

Asynchronous client for Coolify tags.

async def list( self) -> coolipy.CoolipyAPIResponse[list[coolipy.models.common.Tag]]:
42    async def list(self) -> CoolipyAPIResponse[TagList]:
43        """List all tags."""
44        return await self._get("/tags", response_model=list[Tag])

List all tags.

46    async def create(self, model: TagCreate) -> CoolipyAPIResponse[Tag]:
47        """Create a tag."""
48        return await self._post("/tags", json=_dump(model), response_model=Tag)

Create a tag.

async def update( self, uuid: str, model: coolipy.models.common.TagUpdate) -> coolipy.CoolipyAPIResponse[coolipy.models.common.Tag]:
50    async def update(self, uuid: str, model: TagUpdate) -> CoolipyAPIResponse[Tag]:
51        """Update a tag by UUID."""
52        return await self._patch(f"/tags/{uuid}", json=_dump(model), response_model=Tag)

Update a tag by UUID.

async def delete( self, uuid: str) -> coolipy.CoolipyAPIResponse[coolipy.models.common.MessageResponse]:
54    async def delete(self, uuid: str) -> CoolipyAPIResponse[MessageResponse]:
55        """Delete a tag by UUID."""
56        return await self._delete(f"/tags/{uuid}", response_model=MessageResponse)

Delete a tag by UUID.