test_task_crm/app/api/v1/contacts.py

45 lines
1.3 KiB
Python

"""Contact API stubs and schemas."""
from __future__ import annotations
from fastapi import APIRouter, Depends, Query, status
from pydantic import BaseModel, EmailStr
from app.api.deps import get_organization_context
from app.services.organization_service import OrganizationContext
class ContactCreatePayload(BaseModel):
name: str
email: EmailStr | None = None
phone: str | None = None
router = APIRouter(prefix="/contacts", tags=["contacts"])
def _stub(endpoint: str) -> dict[str, str]:
return {"detail": f"{endpoint} is not implemented yet"}
@router.get("/", status_code=status.HTTP_501_NOT_IMPLEMENTED)
async def list_contacts(
page: int = Query(1, ge=1),
page_size: int = Query(20, ge=1, le=100),
search: str | None = None,
owner_id: int | None = None,
context: OrganizationContext = Depends(get_organization_context),
) -> dict[str, str]:
"""Placeholder list endpoint supporting the required filters."""
_ = context
return _stub("GET /contacts")
@router.post("/", status_code=status.HTTP_501_NOT_IMPLEMENTED)
async def create_contact(
payload: ContactCreatePayload,
context: OrganizationContext = Depends(get_organization_context),
) -> dict[str, str]:
"""Placeholder for creating a contact within the current organization."""
_ = (payload, context)
return _stub("POST /contacts")