Source code for netbird.resources.cloud.idp_scim
"""
IDP/SCIM resource handler for NetBird API.
"""
from typing import Any, Dict, List
from ...models.cloud.idp_scim import SCIMIntegrationCreate, SCIMIntegrationUpdate
from ..base import BaseResource
[docs]
class IDPScimResource(BaseResource):
"""Handler for NetBird IDP/SCIM integration API endpoints."""
[docs]
def list(self) -> List[Dict[str, Any]]:
"""List all SCIM IDP integrations."""
data = self.client.get("integrations/scim-idp")
return self._parse_list_response(data)
[docs]
def create(self, integration_data: SCIMIntegrationCreate) -> Dict[str, Any]:
"""Create a SCIM IDP integration."""
data = self.client.post(
"integrations/scim-idp",
data=integration_data.model_dump(exclude_unset=True),
)
return self._parse_response(data)
[docs]
def get(self, integration_id: str) -> Dict[str, Any]:
"""Retrieve a specific SCIM IDP integration."""
data = self.client.get(f"integrations/scim-idp/{integration_id}")
return self._parse_response(data)
[docs]
def update(
self, integration_id: str, integration_data: SCIMIntegrationUpdate
) -> Dict[str, Any]:
"""Update a SCIM IDP integration."""
data = self.client.put(
f"integrations/scim-idp/{integration_id}",
data=integration_data.model_dump(exclude_unset=True),
)
return self._parse_response(data)
[docs]
def delete(self, integration_id: str) -> None:
"""Delete a SCIM IDP integration."""
self.client.delete(f"integrations/scim-idp/{integration_id}")
[docs]
def regenerate_token(self, integration_id: str) -> Dict[str, Any]:
"""Regenerate SCIM token."""
data = self.client.post(f"integrations/scim-idp/{integration_id}/token")
return self._parse_response(data)
[docs]
def get_logs(self, integration_id: str) -> List[Dict[str, Any]]:
"""Get SCIM integration sync logs."""
data = self.client.get(f"integrations/scim-idp/{integration_id}/logs")
return self._parse_list_response(data)