neurograph-core 1.202509282026__py3-none-any.whl → 1.202510052316__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. neurograph/v1/__init__.py +25 -218
  2. neurograph/v1/api/__init__.py +2 -29
  3. neurograph/v1/api/admin_api.py +549 -1
  4. neurograph/v1/api/client_api.py +263 -0
  5. neurograph/v1/api/knowledge_api.py +296 -0
  6. neurograph/v1/api/knowledge_extract_api.py +1 -1
  7. neurograph/v1/api/lookup_api.py +2 -0
  8. neurograph/v1/api/organization_api.py +528 -1
  9. neurograph/v1/api/reporting_api.py +1475 -0
  10. neurograph/v1/api/user_api.py +18 -1092
  11. neurograph/v1/api_client.py +4 -4
  12. neurograph/v1/models/__init__.py +12 -189
  13. neurograph/v1/models/knowledge_enrichment_artifact_create_request.py +3 -1
  14. neurograph/v1/models/knowledge_enrichment_query.py +3 -1
  15. neurograph/v1/models/knowledge_product.py +103 -0
  16. neurograph/v1/models/knowledge_product_upsert_request.py +95 -0
  17. neurograph/v1/models/knowledge_product_upsert_response.py +99 -0
  18. neurograph/v1/models/{db_lookup_environment.py → lookup_env.py} +6 -12
  19. neurograph/v1/models/lookup_lookup_environments_response.py +3 -3
  20. neurograph/v1/models/reporting_affinities_response.py +89 -0
  21. neurograph/v1/models/reporting_customer_activity_response.py +89 -0
  22. neurograph/v1/models/reporting_daily_metric.py +95 -0
  23. neurograph/v1/models/reporting_daily_metrics_response.py +97 -0
  24. neurograph/v1/models/reporting_persona_activity_response.py +89 -0
  25. neurograph/v1/models/reporting_personas_response.py +89 -0
  26. neurograph/v1/models/reporting_query.py +91 -0
  27. {neurograph_core-1.202509282026.dist-info → neurograph_core-1.202510052316.dist-info}/METADATA +2 -3
  28. {neurograph_core-1.202509282026.dist-info → neurograph_core-1.202510052316.dist-info}/RECORD +30 -19
  29. {neurograph_core-1.202509282026.dist-info → neurograph_core-1.202510052316.dist-info}/WHEEL +0 -0
  30. {neurograph_core-1.202509282026.dist-info → neurograph_core-1.202510052316.dist-info}/top_level.txt +0 -0
@@ -16,10 +16,13 @@ from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
16
16
  from typing import Any, Dict, List, Optional, Tuple, Union
17
17
  from typing_extensions import Annotated
18
18
 
19
- from pydantic import Field, StrictStr
19
+ from pydantic import Field, StrictInt, StrictStr
20
20
  from typing_extensions import Annotated
21
21
  from neurograph.v1.models.admin_permission_response import AdminPermissionResponse
22
22
  from neurograph.v1.models.admin_set_permission_request import AdminSetPermissionRequest
23
+ from neurograph.v1.models.admin_upsert_user_request import AdminUpsertUserRequest
24
+ from neurograph.v1.models.admin_upsert_user_response import AdminUpsertUserResponse
25
+ from neurograph.v1.models.admin_user_detail_response import AdminUserDetailResponse
23
26
  from neurograph.v1.models.admin_users_get_many_response import AdminUsersGetManyResponse
24
27
 
25
28
  from neurograph.v1.api_client import ApiClient, RequestSerialized
@@ -283,6 +286,267 @@ class AdminApi:
283
286
 
284
287
 
285
288
 
289
+ @validate_call
290
+ def api_v1_admin_users_id_get(
291
+ self,
292
+ id: Annotated[StrictInt, Field(description="User's ID")],
293
+ _request_timeout: Union[
294
+ None,
295
+ Annotated[StrictFloat, Field(gt=0)],
296
+ Tuple[
297
+ Annotated[StrictFloat, Field(gt=0)],
298
+ Annotated[StrictFloat, Field(gt=0)]
299
+ ]
300
+ ] = None,
301
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
302
+ _content_type: Optional[StrictStr] = None,
303
+ _headers: Optional[Dict[StrictStr, Any]] = None,
304
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
305
+ ) -> AdminUserDetailResponse:
306
+ """Get User Detail
307
+
308
+
309
+ :param id: User's ID (required)
310
+ :type id: int
311
+ :param _request_timeout: timeout setting for this request. If one
312
+ number provided, it will be total request
313
+ timeout. It can also be a pair (tuple) of
314
+ (connection, read) timeouts.
315
+ :type _request_timeout: int, tuple(int, int), optional
316
+ :param _request_auth: set to override the auth_settings for an a single
317
+ request; this effectively ignores the
318
+ authentication in the spec for a single request.
319
+ :type _request_auth: dict, optional
320
+ :param _content_type: force content-type for the request.
321
+ :type _content_type: str, Optional
322
+ :param _headers: set to override the headers for a single
323
+ request; this effectively ignores the headers
324
+ in the spec for a single request.
325
+ :type _headers: dict, optional
326
+ :param _host_index: set to override the host_index for a single
327
+ request; this effectively ignores the host_index
328
+ in the spec for a single request.
329
+ :type _host_index: int, optional
330
+ :return: Returns the result object.
331
+ """ # noqa: E501
332
+
333
+ _param = self._api_v1_admin_users_id_get_serialize(
334
+ id=id,
335
+ _request_auth=_request_auth,
336
+ _content_type=_content_type,
337
+ _headers=_headers,
338
+ _host_index=_host_index
339
+ )
340
+
341
+ _response_types_map: Dict[str, Optional[str]] = {
342
+ '200': "AdminUserDetailResponse",
343
+ '400': "AdminUserDetailResponse",
344
+ }
345
+ response_data = self.api_client.call_api(
346
+ *_param,
347
+ _request_timeout=_request_timeout
348
+ )
349
+ response_data.read()
350
+ return self.api_client.response_deserialize(
351
+ response_data=response_data,
352
+ response_types_map=_response_types_map,
353
+ ).data
354
+
355
+
356
+ @validate_call
357
+ def api_v1_admin_users_id_get_with_http_info(
358
+ self,
359
+ id: Annotated[StrictInt, Field(description="User's ID")],
360
+ _request_timeout: Union[
361
+ None,
362
+ Annotated[StrictFloat, Field(gt=0)],
363
+ Tuple[
364
+ Annotated[StrictFloat, Field(gt=0)],
365
+ Annotated[StrictFloat, Field(gt=0)]
366
+ ]
367
+ ] = None,
368
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
369
+ _content_type: Optional[StrictStr] = None,
370
+ _headers: Optional[Dict[StrictStr, Any]] = None,
371
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
372
+ ) -> ApiResponse[AdminUserDetailResponse]:
373
+ """Get User Detail
374
+
375
+
376
+ :param id: User's ID (required)
377
+ :type id: int
378
+ :param _request_timeout: timeout setting for this request. If one
379
+ number provided, it will be total request
380
+ timeout. It can also be a pair (tuple) of
381
+ (connection, read) timeouts.
382
+ :type _request_timeout: int, tuple(int, int), optional
383
+ :param _request_auth: set to override the auth_settings for an a single
384
+ request; this effectively ignores the
385
+ authentication in the spec for a single request.
386
+ :type _request_auth: dict, optional
387
+ :param _content_type: force content-type for the request.
388
+ :type _content_type: str, Optional
389
+ :param _headers: set to override the headers for a single
390
+ request; this effectively ignores the headers
391
+ in the spec for a single request.
392
+ :type _headers: dict, optional
393
+ :param _host_index: set to override the host_index for a single
394
+ request; this effectively ignores the host_index
395
+ in the spec for a single request.
396
+ :type _host_index: int, optional
397
+ :return: Returns the result object.
398
+ """ # noqa: E501
399
+
400
+ _param = self._api_v1_admin_users_id_get_serialize(
401
+ id=id,
402
+ _request_auth=_request_auth,
403
+ _content_type=_content_type,
404
+ _headers=_headers,
405
+ _host_index=_host_index
406
+ )
407
+
408
+ _response_types_map: Dict[str, Optional[str]] = {
409
+ '200': "AdminUserDetailResponse",
410
+ '400': "AdminUserDetailResponse",
411
+ }
412
+ response_data = self.api_client.call_api(
413
+ *_param,
414
+ _request_timeout=_request_timeout
415
+ )
416
+ response_data.read()
417
+ return self.api_client.response_deserialize(
418
+ response_data=response_data,
419
+ response_types_map=_response_types_map,
420
+ )
421
+
422
+
423
+ @validate_call
424
+ def api_v1_admin_users_id_get_without_preload_content(
425
+ self,
426
+ id: Annotated[StrictInt, Field(description="User's ID")],
427
+ _request_timeout: Union[
428
+ None,
429
+ Annotated[StrictFloat, Field(gt=0)],
430
+ Tuple[
431
+ Annotated[StrictFloat, Field(gt=0)],
432
+ Annotated[StrictFloat, Field(gt=0)]
433
+ ]
434
+ ] = None,
435
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
436
+ _content_type: Optional[StrictStr] = None,
437
+ _headers: Optional[Dict[StrictStr, Any]] = None,
438
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
439
+ ) -> RESTResponseType:
440
+ """Get User Detail
441
+
442
+
443
+ :param id: User's ID (required)
444
+ :type id: int
445
+ :param _request_timeout: timeout setting for this request. If one
446
+ number provided, it will be total request
447
+ timeout. It can also be a pair (tuple) of
448
+ (connection, read) timeouts.
449
+ :type _request_timeout: int, tuple(int, int), optional
450
+ :param _request_auth: set to override the auth_settings for an a single
451
+ request; this effectively ignores the
452
+ authentication in the spec for a single request.
453
+ :type _request_auth: dict, optional
454
+ :param _content_type: force content-type for the request.
455
+ :type _content_type: str, Optional
456
+ :param _headers: set to override the headers for a single
457
+ request; this effectively ignores the headers
458
+ in the spec for a single request.
459
+ :type _headers: dict, optional
460
+ :param _host_index: set to override the host_index for a single
461
+ request; this effectively ignores the host_index
462
+ in the spec for a single request.
463
+ :type _host_index: int, optional
464
+ :return: Returns the result object.
465
+ """ # noqa: E501
466
+
467
+ _param = self._api_v1_admin_users_id_get_serialize(
468
+ id=id,
469
+ _request_auth=_request_auth,
470
+ _content_type=_content_type,
471
+ _headers=_headers,
472
+ _host_index=_host_index
473
+ )
474
+
475
+ _response_types_map: Dict[str, Optional[str]] = {
476
+ '200': "AdminUserDetailResponse",
477
+ '400': "AdminUserDetailResponse",
478
+ }
479
+ response_data = self.api_client.call_api(
480
+ *_param,
481
+ _request_timeout=_request_timeout
482
+ )
483
+ return response_data.response
484
+
485
+
486
+ def _api_v1_admin_users_id_get_serialize(
487
+ self,
488
+ id,
489
+ _request_auth,
490
+ _content_type,
491
+ _headers,
492
+ _host_index,
493
+ ) -> RequestSerialized:
494
+
495
+ _host = None
496
+
497
+ _collection_formats: Dict[str, str] = {
498
+ }
499
+
500
+ _path_params: Dict[str, str] = {}
501
+ _query_params: List[Tuple[str, str]] = []
502
+ _header_params: Dict[str, Optional[str]] = _headers or {}
503
+ _form_params: List[Tuple[str, str]] = []
504
+ _files: Dict[
505
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
506
+ ] = {}
507
+ _body_params: Optional[bytes] = None
508
+
509
+ # process the path parameters
510
+ if id is not None:
511
+ _path_params['id'] = id
512
+ # process the query parameters
513
+ # process the header parameters
514
+ # process the form parameters
515
+ # process the body parameter
516
+
517
+
518
+ # set the HTTP header `Accept`
519
+ if 'Accept' not in _header_params:
520
+ _header_params['Accept'] = self.api_client.select_header_accept(
521
+ [
522
+ 'application/json'
523
+ ]
524
+ )
525
+
526
+
527
+ # authentication setting
528
+ _auth_settings: List[str] = [
529
+ 'ApiKeyAuth'
530
+ ]
531
+
532
+ return self.api_client.param_serialize(
533
+ method='GET',
534
+ resource_path='/api/v1/admin/users/{id}',
535
+ path_params=_path_params,
536
+ query_params=_query_params,
537
+ header_params=_header_params,
538
+ body=_body_params,
539
+ post_params=_form_params,
540
+ files=_files,
541
+ auth_settings=_auth_settings,
542
+ collection_formats=_collection_formats,
543
+ _host=_host,
544
+ _request_auth=_request_auth
545
+ )
546
+
547
+
548
+
549
+
286
550
  @validate_call
287
551
  def api_v1_admin_users_id_permisions_post(
288
552
  self,
@@ -573,3 +837,287 @@ class AdminApi:
573
837
  )
574
838
 
575
839
 
840
+
841
+
842
+ @validate_call
843
+ def api_v1_users_post(
844
+ self,
845
+ request: Annotated[AdminUpsertUserRequest, Field(description="Upsert user request payload")],
846
+ _request_timeout: Union[
847
+ None,
848
+ Annotated[StrictFloat, Field(gt=0)],
849
+ Tuple[
850
+ Annotated[StrictFloat, Field(gt=0)],
851
+ Annotated[StrictFloat, Field(gt=0)]
852
+ ]
853
+ ] = None,
854
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
855
+ _content_type: Optional[StrictStr] = None,
856
+ _headers: Optional[Dict[StrictStr, Any]] = None,
857
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
858
+ ) -> AdminUpsertUserResponse:
859
+ """Upsert a User
860
+
861
+ Create or update a user (imported from Firebase as source of truth).
862
+
863
+ :param request: Upsert user request payload (required)
864
+ :type request: AdminUpsertUserRequest
865
+ :param _request_timeout: timeout setting for this request. If one
866
+ number provided, it will be total request
867
+ timeout. It can also be a pair (tuple) of
868
+ (connection, read) timeouts.
869
+ :type _request_timeout: int, tuple(int, int), optional
870
+ :param _request_auth: set to override the auth_settings for an a single
871
+ request; this effectively ignores the
872
+ authentication in the spec for a single request.
873
+ :type _request_auth: dict, optional
874
+ :param _content_type: force content-type for the request.
875
+ :type _content_type: str, Optional
876
+ :param _headers: set to override the headers for a single
877
+ request; this effectively ignores the headers
878
+ in the spec for a single request.
879
+ :type _headers: dict, optional
880
+ :param _host_index: set to override the host_index for a single
881
+ request; this effectively ignores the host_index
882
+ in the spec for a single request.
883
+ :type _host_index: int, optional
884
+ :return: Returns the result object.
885
+ """ # noqa: E501
886
+
887
+ _param = self._api_v1_users_post_serialize(
888
+ request=request,
889
+ _request_auth=_request_auth,
890
+ _content_type=_content_type,
891
+ _headers=_headers,
892
+ _host_index=_host_index
893
+ )
894
+
895
+ _response_types_map: Dict[str, Optional[str]] = {
896
+ '200': "AdminUpsertUserResponse",
897
+ '400': "AdminUpsertUserResponse",
898
+ '409': "AdminUpsertUserResponse",
899
+ '500': "AdminUpsertUserResponse",
900
+ }
901
+ response_data = self.api_client.call_api(
902
+ *_param,
903
+ _request_timeout=_request_timeout
904
+ )
905
+ response_data.read()
906
+ return self.api_client.response_deserialize(
907
+ response_data=response_data,
908
+ response_types_map=_response_types_map,
909
+ ).data
910
+
911
+
912
+ @validate_call
913
+ def api_v1_users_post_with_http_info(
914
+ self,
915
+ request: Annotated[AdminUpsertUserRequest, Field(description="Upsert user request payload")],
916
+ _request_timeout: Union[
917
+ None,
918
+ Annotated[StrictFloat, Field(gt=0)],
919
+ Tuple[
920
+ Annotated[StrictFloat, Field(gt=0)],
921
+ Annotated[StrictFloat, Field(gt=0)]
922
+ ]
923
+ ] = None,
924
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
925
+ _content_type: Optional[StrictStr] = None,
926
+ _headers: Optional[Dict[StrictStr, Any]] = None,
927
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
928
+ ) -> ApiResponse[AdminUpsertUserResponse]:
929
+ """Upsert a User
930
+
931
+ Create or update a user (imported from Firebase as source of truth).
932
+
933
+ :param request: Upsert user request payload (required)
934
+ :type request: AdminUpsertUserRequest
935
+ :param _request_timeout: timeout setting for this request. If one
936
+ number provided, it will be total request
937
+ timeout. It can also be a pair (tuple) of
938
+ (connection, read) timeouts.
939
+ :type _request_timeout: int, tuple(int, int), optional
940
+ :param _request_auth: set to override the auth_settings for an a single
941
+ request; this effectively ignores the
942
+ authentication in the spec for a single request.
943
+ :type _request_auth: dict, optional
944
+ :param _content_type: force content-type for the request.
945
+ :type _content_type: str, Optional
946
+ :param _headers: set to override the headers for a single
947
+ request; this effectively ignores the headers
948
+ in the spec for a single request.
949
+ :type _headers: dict, optional
950
+ :param _host_index: set to override the host_index for a single
951
+ request; this effectively ignores the host_index
952
+ in the spec for a single request.
953
+ :type _host_index: int, optional
954
+ :return: Returns the result object.
955
+ """ # noqa: E501
956
+
957
+ _param = self._api_v1_users_post_serialize(
958
+ request=request,
959
+ _request_auth=_request_auth,
960
+ _content_type=_content_type,
961
+ _headers=_headers,
962
+ _host_index=_host_index
963
+ )
964
+
965
+ _response_types_map: Dict[str, Optional[str]] = {
966
+ '200': "AdminUpsertUserResponse",
967
+ '400': "AdminUpsertUserResponse",
968
+ '409': "AdminUpsertUserResponse",
969
+ '500': "AdminUpsertUserResponse",
970
+ }
971
+ response_data = self.api_client.call_api(
972
+ *_param,
973
+ _request_timeout=_request_timeout
974
+ )
975
+ response_data.read()
976
+ return self.api_client.response_deserialize(
977
+ response_data=response_data,
978
+ response_types_map=_response_types_map,
979
+ )
980
+
981
+
982
+ @validate_call
983
+ def api_v1_users_post_without_preload_content(
984
+ self,
985
+ request: Annotated[AdminUpsertUserRequest, Field(description="Upsert user request payload")],
986
+ _request_timeout: Union[
987
+ None,
988
+ Annotated[StrictFloat, Field(gt=0)],
989
+ Tuple[
990
+ Annotated[StrictFloat, Field(gt=0)],
991
+ Annotated[StrictFloat, Field(gt=0)]
992
+ ]
993
+ ] = None,
994
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
995
+ _content_type: Optional[StrictStr] = None,
996
+ _headers: Optional[Dict[StrictStr, Any]] = None,
997
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
998
+ ) -> RESTResponseType:
999
+ """Upsert a User
1000
+
1001
+ Create or update a user (imported from Firebase as source of truth).
1002
+
1003
+ :param request: Upsert user request payload (required)
1004
+ :type request: AdminUpsertUserRequest
1005
+ :param _request_timeout: timeout setting for this request. If one
1006
+ number provided, it will be total request
1007
+ timeout. It can also be a pair (tuple) of
1008
+ (connection, read) timeouts.
1009
+ :type _request_timeout: int, tuple(int, int), optional
1010
+ :param _request_auth: set to override the auth_settings for an a single
1011
+ request; this effectively ignores the
1012
+ authentication in the spec for a single request.
1013
+ :type _request_auth: dict, optional
1014
+ :param _content_type: force content-type for the request.
1015
+ :type _content_type: str, Optional
1016
+ :param _headers: set to override the headers for a single
1017
+ request; this effectively ignores the headers
1018
+ in the spec for a single request.
1019
+ :type _headers: dict, optional
1020
+ :param _host_index: set to override the host_index for a single
1021
+ request; this effectively ignores the host_index
1022
+ in the spec for a single request.
1023
+ :type _host_index: int, optional
1024
+ :return: Returns the result object.
1025
+ """ # noqa: E501
1026
+
1027
+ _param = self._api_v1_users_post_serialize(
1028
+ request=request,
1029
+ _request_auth=_request_auth,
1030
+ _content_type=_content_type,
1031
+ _headers=_headers,
1032
+ _host_index=_host_index
1033
+ )
1034
+
1035
+ _response_types_map: Dict[str, Optional[str]] = {
1036
+ '200': "AdminUpsertUserResponse",
1037
+ '400': "AdminUpsertUserResponse",
1038
+ '409': "AdminUpsertUserResponse",
1039
+ '500': "AdminUpsertUserResponse",
1040
+ }
1041
+ response_data = self.api_client.call_api(
1042
+ *_param,
1043
+ _request_timeout=_request_timeout
1044
+ )
1045
+ return response_data.response
1046
+
1047
+
1048
+ def _api_v1_users_post_serialize(
1049
+ self,
1050
+ request,
1051
+ _request_auth,
1052
+ _content_type,
1053
+ _headers,
1054
+ _host_index,
1055
+ ) -> RequestSerialized:
1056
+
1057
+ _host = None
1058
+
1059
+ _collection_formats: Dict[str, str] = {
1060
+ }
1061
+
1062
+ _path_params: Dict[str, str] = {}
1063
+ _query_params: List[Tuple[str, str]] = []
1064
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1065
+ _form_params: List[Tuple[str, str]] = []
1066
+ _files: Dict[
1067
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
1068
+ ] = {}
1069
+ _body_params: Optional[bytes] = None
1070
+
1071
+ # process the path parameters
1072
+ # process the query parameters
1073
+ # process the header parameters
1074
+ # process the form parameters
1075
+ # process the body parameter
1076
+ if request is not None:
1077
+ _body_params = request
1078
+
1079
+
1080
+ # set the HTTP header `Accept`
1081
+ if 'Accept' not in _header_params:
1082
+ _header_params['Accept'] = self.api_client.select_header_accept(
1083
+ [
1084
+ 'application/json'
1085
+ ]
1086
+ )
1087
+
1088
+ # set the HTTP header `Content-Type`
1089
+ if _content_type:
1090
+ _header_params['Content-Type'] = _content_type
1091
+ else:
1092
+ _default_content_type = (
1093
+ self.api_client.select_header_content_type(
1094
+ [
1095
+ 'application/json'
1096
+ ]
1097
+ )
1098
+ )
1099
+ if _default_content_type is not None:
1100
+ _header_params['Content-Type'] = _default_content_type
1101
+
1102
+ # authentication setting
1103
+ _auth_settings: List[str] = [
1104
+ 'TokenAuth',
1105
+ 'ApiKeyAuth'
1106
+ ]
1107
+
1108
+ return self.api_client.param_serialize(
1109
+ method='POST',
1110
+ resource_path='/api/v1/users',
1111
+ path_params=_path_params,
1112
+ query_params=_query_params,
1113
+ header_params=_header_params,
1114
+ body=_body_params,
1115
+ post_params=_form_params,
1116
+ files=_files,
1117
+ auth_settings=_auth_settings,
1118
+ collection_formats=_collection_formats,
1119
+ _host=_host,
1120
+ _request_auth=_request_auth
1121
+ )
1122
+
1123
+