Skip to main content
Glama
notes.py3.01 kB
"""Pydantic models for Notes app responses.""" from datetime import datetime from typing import List, Optional from pydantic import BaseModel, Field from .base import BaseResponse, IdResponse, StatusResponse class Note(BaseModel): """Model for a Nextcloud note.""" id: int = Field(description="Note ID") title: str = Field(description="Note title") content: str = Field(description="Note content in markdown") category: str = Field(default="", description="Note category") modified: int = Field(description="Unix timestamp of last modification") favorite: bool = Field( default=False, description="Whether note is marked as favorite" ) etag: str = Field(description="ETag for versioning") readonly: bool = Field(default=False, description="Whether note is read-only") @property def modified_datetime(self) -> datetime: """Convert Unix timestamp to datetime.""" return datetime.fromtimestamp(self.modified) class NoteSearchResult(BaseModel): """Model for note search results (limited fields).""" id: int = Field(description="Note ID") title: str = Field(description="Note title") category: str = Field(default="", description="Note category") score: Optional[float] = Field(None, description="Search relevance score") class NotesSettings(BaseModel): """Model for Notes app settings.""" notesPath: str = Field(description="Path to notes directory") fileSuffix: str = Field(description="File suffix for notes") noteMode: str = Field(description="Note mode setting") class CreateNoteResponse(IdResponse): """Response model for note creation.""" title: str = Field(description="The created note title") category: str = Field(description="The created note category") etag: str = Field(description="Current ETag for the created note") class UpdateNoteResponse(BaseResponse): """Response model for note updates.""" id: int = Field(description="The updated note ID") title: str = Field(description="The updated note title") category: str = Field(description="The updated note category") etag: str = Field(description="Current ETag for the updated note") class DeleteNoteResponse(StatusResponse): """Response model for note deletion.""" deleted_id: int = Field(description="ID of the deleted note") class AppendContentResponse(BaseResponse): """Response model for appending content to a note.""" id: int = Field(description="The updated note ID") title: str = Field(description="The updated note title") category: str = Field(description="The updated note category") etag: str = Field(description="Current ETag for the updated note") class SearchNotesResponse(BaseResponse): """Response model for note search.""" results: List[NoteSearchResult] = Field(description="Search results") query: str = Field(description="The search query used") total_found: int = Field(description="Total number of notes found")

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/No-Smoke/nextcloud-mcp-comprehensive'

If you have feedback or need assistance with the MCP directory API, please join our Discord server