fix: add api tracking events (#1128)
<!-- .github/pull_request_template.md --> ## Description <!-- Provide a clear description of the changes in this PR --> ## DCO Affirmation I affirm that all code in every commit of this pull request conforms to the terms of the Topoteretes Developer Certificate of Origin.
This commit is contained in:
parent
022c96de55
commit
7ba35f2f14
7 changed files with 180 additions and 6 deletions
|
|
@ -1,16 +1,17 @@
|
|||
import os
|
||||
import requests
|
||||
import subprocess
|
||||
from uuid import UUID
|
||||
|
||||
from fastapi import Form, File, UploadFile, Depends
|
||||
from fastapi.responses import JSONResponse
|
||||
from fastapi import APIRouter
|
||||
from fastapi.responses import JSONResponse
|
||||
from fastapi import Form, File, UploadFile, Depends
|
||||
from typing import List, Optional, Union, Literal
|
||||
import subprocess
|
||||
from cognee.shared.logging_utils import get_logger
|
||||
import requests
|
||||
|
||||
from cognee.modules.users.models import User
|
||||
from cognee.modules.users.methods import get_authenticated_user
|
||||
from cognee.shared.utils import send_telemetry
|
||||
from cognee.shared.logging_utils import get_logger
|
||||
|
||||
logger = get_logger()
|
||||
|
||||
|
|
@ -60,6 +61,14 @@ def get_add_router() -> APIRouter:
|
|||
- The ALLOW_HTTP_REQUESTS environment variable controls URL processing
|
||||
- datasetId value can only be the UUID of an already existing dataset
|
||||
"""
|
||||
send_telemetry(
|
||||
"Add API Endpoint Invoked",
|
||||
user.id,
|
||||
additional_properties={
|
||||
"endpoint": "POST /v1/add",
|
||||
},
|
||||
)
|
||||
|
||||
from cognee.api.v1.add import add as cognee_add
|
||||
|
||||
if not datasetId and not datasetName:
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ from cognee.modules.pipelines.queues.pipeline_run_info_queues import (
|
|||
remove_queue,
|
||||
)
|
||||
from cognee.shared.logging_utils import get_logger
|
||||
from cognee.shared.utils import send_telemetry
|
||||
|
||||
|
||||
logger = get_logger("api.cognify")
|
||||
|
|
@ -82,6 +83,14 @@ def get_cognify_router() -> APIRouter:
|
|||
## Next Steps
|
||||
After successful processing, use the search endpoints to query the generated knowledge graph for insights, relationships, and semantic search.
|
||||
"""
|
||||
send_telemetry(
|
||||
"Cognify API Endpoint Invoked",
|
||||
user.id,
|
||||
additional_properties={
|
||||
"endpoint": "POST /v1/cognify",
|
||||
},
|
||||
)
|
||||
|
||||
if not payload.datasets and not payload.dataset_ids:
|
||||
return JSONResponse(
|
||||
status_code=400, content={"error": "No datasets or dataset_ids provided"}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ from cognee.modules.users.permissions.methods import (
|
|||
)
|
||||
from cognee.modules.graph.methods import get_formatted_graph_data
|
||||
from cognee.modules.pipelines.models import PipelineRunStatus
|
||||
from cognee.shared.utils import send_telemetry
|
||||
|
||||
logger = get_logger()
|
||||
|
||||
|
|
@ -92,6 +93,14 @@ def get_datasets_router() -> APIRouter:
|
|||
## Error Codes
|
||||
- **418 I'm a teapot**: Error retrieving datasets
|
||||
"""
|
||||
send_telemetry(
|
||||
"Datasets API Endpoint Invoked",
|
||||
user.id,
|
||||
additional_properties={
|
||||
"endpoint": "GET /v1/datasets",
|
||||
},
|
||||
)
|
||||
|
||||
try:
|
||||
datasets = await get_all_user_permission_datasets(user, "read")
|
||||
|
||||
|
|
@ -130,6 +139,14 @@ def get_datasets_router() -> APIRouter:
|
|||
## Error Codes
|
||||
- **418 I'm a teapot**: Error creating dataset
|
||||
"""
|
||||
send_telemetry(
|
||||
"Datasets API Endpoint Invoked",
|
||||
user.id,
|
||||
additional_properties={
|
||||
"endpoint": "POST /v1/datasets",
|
||||
},
|
||||
)
|
||||
|
||||
try:
|
||||
datasets = await get_datasets_by_name([dataset_data.name], user.id)
|
||||
|
||||
|
|
@ -175,6 +192,15 @@ def get_datasets_router() -> APIRouter:
|
|||
- **404 Not Found**: Dataset doesn't exist or user doesn't have access
|
||||
- **500 Internal Server Error**: Error during deletion
|
||||
"""
|
||||
send_telemetry(
|
||||
"Datasets API Endpoint Invoked",
|
||||
user.id,
|
||||
additional_properties={
|
||||
"endpoint": f"DELETE /v1/datasets/{str(dataset_id)}",
|
||||
"dataset_id": str(dataset_id),
|
||||
},
|
||||
)
|
||||
|
||||
from cognee.modules.data.methods import get_dataset, delete_dataset
|
||||
|
||||
dataset = await get_dataset(user.id, dataset_id)
|
||||
|
|
@ -210,6 +236,16 @@ def get_datasets_router() -> APIRouter:
|
|||
- **404 Not Found**: Dataset or data item doesn't exist, or user doesn't have access
|
||||
- **500 Internal Server Error**: Error during deletion
|
||||
"""
|
||||
send_telemetry(
|
||||
"Datasets API Endpoint Invoked",
|
||||
user.id,
|
||||
additional_properties={
|
||||
"endpoint": f"DELETE /v1/datasets/{str(dataset_id)}/data/{str(data_id)}",
|
||||
"dataset_id": str(dataset_id),
|
||||
"data_id": str(data_id),
|
||||
},
|
||||
)
|
||||
|
||||
from cognee.modules.data.methods import get_data, delete_data
|
||||
from cognee.modules.data.methods import get_dataset
|
||||
|
||||
|
|
@ -288,6 +324,15 @@ def get_datasets_router() -> APIRouter:
|
|||
- **404 Not Found**: Dataset doesn't exist or user doesn't have access
|
||||
- **500 Internal Server Error**: Error retrieving data
|
||||
"""
|
||||
send_telemetry(
|
||||
"Datasets API Endpoint Invoked",
|
||||
user.id,
|
||||
additional_properties={
|
||||
"endpoint": f"GET /v1/datasets/{str(dataset_id)}/data",
|
||||
"dataset_id": str(dataset_id),
|
||||
},
|
||||
)
|
||||
|
||||
from cognee.modules.data.methods import get_dataset_data, get_dataset
|
||||
|
||||
# Verify user has permission to read dataset
|
||||
|
|
@ -331,6 +376,15 @@ def get_datasets_router() -> APIRouter:
|
|||
## Error Codes
|
||||
- **500 Internal Server Error**: Error retrieving status information
|
||||
"""
|
||||
send_telemetry(
|
||||
"Datasets API Endpoint Invoked",
|
||||
user.id,
|
||||
additional_properties={
|
||||
"endpoint": "GET /v1/datasets/status",
|
||||
"datasets": [str(dataset_id) for dataset_id in datasets],
|
||||
},
|
||||
)
|
||||
|
||||
from cognee.api.v1.datasets.datasets import datasets as cognee_datasets
|
||||
|
||||
try:
|
||||
|
|
@ -367,6 +421,16 @@ def get_datasets_router() -> APIRouter:
|
|||
- **404 Not Found**: Dataset or data item doesn't exist, or user doesn't have access
|
||||
- **500 Internal Server Error**: Error accessing the raw data file
|
||||
"""
|
||||
send_telemetry(
|
||||
"Datasets API Endpoint Invoked",
|
||||
user.id,
|
||||
additional_properties={
|
||||
"endpoint": f"GET /v1/datasets/{str(dataset_id)}/data/{str(data_id)}/raw",
|
||||
"dataset_id": str(dataset_id),
|
||||
"data_id": str(data_id),
|
||||
},
|
||||
)
|
||||
|
||||
from cognee.modules.data.methods import get_data
|
||||
from cognee.modules.data.methods import get_dataset_data
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ from uuid import UUID
|
|||
from cognee.shared.logging_utils import get_logger
|
||||
from cognee.modules.users.models import User
|
||||
from cognee.modules.users.methods import get_authenticated_user
|
||||
from cognee.shared.utils import send_telemetry
|
||||
|
||||
logger = get_logger()
|
||||
|
||||
|
|
@ -31,6 +32,16 @@ def get_delete_router() -> APIRouter:
|
|||
JSON response indicating success or failure
|
||||
|
||||
"""
|
||||
send_telemetry(
|
||||
"Delete API Endpoint Invoked",
|
||||
user.id,
|
||||
additional_properties={
|
||||
"endpoint": "DELETE /v1/delete",
|
||||
"dataset_id": str(dataset_id),
|
||||
"data_id": str(data_id),
|
||||
},
|
||||
)
|
||||
|
||||
from cognee.api.v1.delete import delete as cognee_delete
|
||||
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -6,12 +6,13 @@ from fastapi.responses import JSONResponse
|
|||
|
||||
from cognee.modules.users.models import User
|
||||
from cognee.modules.users.methods import get_authenticated_user
|
||||
from cognee.shared.utils import send_telemetry
|
||||
|
||||
|
||||
def get_permissions_router() -> APIRouter:
|
||||
permissions_router = APIRouter()
|
||||
|
||||
@permissions_router.post("/datasets/{principal_id}/")
|
||||
@permissions_router.post("/datasets/{principal_id}")
|
||||
async def give_datasets_permission_to_principal(
|
||||
permission_name: str,
|
||||
dataset_ids: List[UUID],
|
||||
|
|
@ -40,6 +41,16 @@ def get_permissions_router() -> APIRouter:
|
|||
- **403 Forbidden**: User doesn't have permission to grant access
|
||||
- **500 Internal Server Error**: Error granting permission
|
||||
"""
|
||||
send_telemetry(
|
||||
"Permissions API Endpoint Invoked",
|
||||
user.id,
|
||||
additional_properties={
|
||||
"endpoint": f"POST /v1/permissions/datasets/{str(principal_id)}",
|
||||
"dataset_ids": str(dataset_ids),
|
||||
"principal_id": str(principal_id),
|
||||
},
|
||||
)
|
||||
|
||||
from cognee.modules.users.permissions.methods import authorized_give_permission_on_datasets
|
||||
|
||||
await authorized_give_permission_on_datasets(
|
||||
|
|
@ -72,6 +83,15 @@ def get_permissions_router() -> APIRouter:
|
|||
- **400 Bad Request**: Invalid role name or role already exists
|
||||
- **500 Internal Server Error**: Error creating the role
|
||||
"""
|
||||
send_telemetry(
|
||||
"Permissions API Endpoint Invoked",
|
||||
user.id,
|
||||
additional_properties={
|
||||
"endpoint": "POST /v1/permissions/roles",
|
||||
"role_name": role_name,
|
||||
},
|
||||
)
|
||||
|
||||
from cognee.modules.users.roles.methods import create_role as create_role_method
|
||||
|
||||
await create_role_method(role_name=role_name, owner_id=user.id)
|
||||
|
|
@ -104,6 +124,16 @@ def get_permissions_router() -> APIRouter:
|
|||
- **404 Not Found**: User or role doesn't exist
|
||||
- **500 Internal Server Error**: Error adding user to role
|
||||
"""
|
||||
send_telemetry(
|
||||
"Permissions API Endpoint Invoked",
|
||||
user.id,
|
||||
additional_properties={
|
||||
"endpoint": f"POST /v1/permissions/users/{str(user_id)}/roles",
|
||||
"user_id": str(user_id),
|
||||
"role_id": str(role_id),
|
||||
},
|
||||
)
|
||||
|
||||
from cognee.modules.users.roles.methods import add_user_to_role as add_user_to_role_method
|
||||
|
||||
await add_user_to_role_method(user_id=user_id, role_id=role_id, owner_id=user.id)
|
||||
|
|
@ -136,6 +166,16 @@ def get_permissions_router() -> APIRouter:
|
|||
- **404 Not Found**: User or tenant doesn't exist
|
||||
- **500 Internal Server Error**: Error adding user to tenant
|
||||
"""
|
||||
send_telemetry(
|
||||
"Permissions API Endpoint Invoked",
|
||||
user.id,
|
||||
additional_properties={
|
||||
"endpoint": f"POST /v1/permissions/users/{str(user_id)}/tenants",
|
||||
"user_id": str(user_id),
|
||||
"tenant_id": str(tenant_id),
|
||||
},
|
||||
)
|
||||
|
||||
from cognee.modules.users.tenants.methods import add_user_to_tenant
|
||||
|
||||
await add_user_to_tenant(user_id=user_id, tenant_id=tenant_id, owner_id=user.id)
|
||||
|
|
@ -161,6 +201,15 @@ def get_permissions_router() -> APIRouter:
|
|||
- **400 Bad Request**: Invalid tenant name or tenant already exists
|
||||
- **500 Internal Server Error**: Error creating the tenant
|
||||
"""
|
||||
send_telemetry(
|
||||
"Permissions API Endpoint Invoked",
|
||||
user.id,
|
||||
additional_properties={
|
||||
"endpoint": "POST /v1/permissions/tenants",
|
||||
"tenant_name": tenant_name,
|
||||
},
|
||||
)
|
||||
|
||||
from cognee.modules.users.tenants.methods import create_tenant as create_tenant_method
|
||||
|
||||
await create_tenant_method(tenant_name=tenant_name, user_id=user.id)
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ from cognee.modules.users.exceptions.exceptions import PermissionDeniedError
|
|||
from cognee.modules.users.models import User
|
||||
from cognee.modules.search.operations import get_history
|
||||
from cognee.modules.users.methods import get_authenticated_user
|
||||
from cognee.shared.utils import send_telemetry
|
||||
|
||||
|
||||
# Note: Datasets sent by name will only map to datasets owned by the request sender
|
||||
|
|
@ -49,6 +50,14 @@ def get_search_router() -> APIRouter:
|
|||
## Error Codes
|
||||
- **500 Internal Server Error**: Error retrieving search history
|
||||
"""
|
||||
send_telemetry(
|
||||
"Search API Endpoint Invoked",
|
||||
user.id,
|
||||
additional_properties={
|
||||
"endpoint": "GET /v1/search",
|
||||
},
|
||||
)
|
||||
|
||||
try:
|
||||
history = await get_history(user.id, limit=0)
|
||||
|
||||
|
|
@ -84,6 +93,19 @@ def get_search_router() -> APIRouter:
|
|||
- To search datasets not owned by the request sender, dataset UUID is needed
|
||||
- If permission is denied, returns empty list instead of error
|
||||
"""
|
||||
send_telemetry(
|
||||
"Search API Endpoint Invoked",
|
||||
user.id,
|
||||
additional_properties={
|
||||
"endpoint": "POST /v1/search",
|
||||
"search_type": str(payload.search_type),
|
||||
"datasets": payload.datasets,
|
||||
"dataset_ids": [str(dataset_id) for dataset_id in payload.dataset_ids or []],
|
||||
"query": payload.query,
|
||||
"top_k": payload.top_k,
|
||||
},
|
||||
)
|
||||
|
||||
from cognee.api.v1.search import search as cognee_search
|
||||
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ from cognee.modules.data.methods import get_authorized_existing_datasets
|
|||
from cognee.modules.users.models import User
|
||||
|
||||
from cognee.context_global_variables import set_database_global_context_variables
|
||||
from cognee.shared.utils import send_telemetry
|
||||
|
||||
logger = get_logger()
|
||||
|
||||
|
|
@ -39,6 +40,15 @@ def get_visualize_router() -> APIRouter:
|
|||
- User must have read permissions on the dataset
|
||||
- Visualization is interactive and allows graph exploration
|
||||
"""
|
||||
send_telemetry(
|
||||
"Visualize API Endpoint Invoked",
|
||||
user.id,
|
||||
additional_properties={
|
||||
"endpoint": "GET /v1/visualize",
|
||||
"dataset_id": str(dataset_id),
|
||||
},
|
||||
)
|
||||
|
||||
from cognee.api.v1.visualize import visualize_graph
|
||||
|
||||
try:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue