Integrate address sources with credential envelopes
This commit is contained in:
@@ -41,6 +41,8 @@ from govoplan_addresses.backend.schemas import (
|
||||
AddressCardDavDiscoveryRequest,
|
||||
AddressCardDavDiscoveryResponse,
|
||||
AddressCardDavSourceCreateRequest,
|
||||
AddressCredentialEnvelopeListResponse,
|
||||
AddressCredentialEnvelopeResponse,
|
||||
AddressSyncAttemptFinishRequest,
|
||||
AddressSyncConflictCreateRequest,
|
||||
AddressSyncConflictListResponse,
|
||||
@@ -69,6 +71,7 @@ from govoplan_addresses.backend.schemas import (
|
||||
)
|
||||
from govoplan_addresses.backend.service import (
|
||||
AddressBookError,
|
||||
available_address_credentials,
|
||||
address_book_contact_counts,
|
||||
address_list_entry_counts,
|
||||
create_address_book,
|
||||
@@ -639,6 +642,25 @@ def api_discover_carddav_address_books(
|
||||
raise _error(AddressBookError(str(exc))) from exc
|
||||
|
||||
|
||||
@router.get("/credentials", response_model=AddressCredentialEnvelopeListResponse)
|
||||
def api_list_address_credentials(
|
||||
source_id: str | None = Query(default=None),
|
||||
principal: ApiPrincipal = Depends(get_api_principal),
|
||||
session: Session = Depends(get_session),
|
||||
):
|
||||
_require_scope(principal, "addresses:sync:write")
|
||||
return AddressCredentialEnvelopeListResponse(
|
||||
credentials=[
|
||||
AddressCredentialEnvelopeResponse.model_validate(item)
|
||||
for item in available_address_credentials(
|
||||
session,
|
||||
principal,
|
||||
source_id=source_id,
|
||||
)
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
@router.post("/address-books/{book_id}/carddav/sources", response_model=AddressSyncSourceResponse, status_code=status.HTTP_201_CREATED)
|
||||
def api_create_carddav_sync_source(
|
||||
book_id: str,
|
||||
|
||||
Reference in New Issue
Block a user