pygeai 0.1.51b3__py3-none-any.whl → 0.6.0b15__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.

Potentially problematic release.


This version of pygeai might be problematic. Click here for more details.

Files changed (648) hide show
  1. pygeai/__init__.py +9 -1
  2. pygeai/_docs/Makefile +20 -0
  3. pygeai/_docs/make.bat +35 -0
  4. pygeai/_docs/source/conf.py +117 -0
  5. pygeai/_docs/source/content/ai_lab/cli.rst +747 -0
  6. pygeai/_docs/source/content/ai_lab/models.rst +1734 -0
  7. pygeai/_docs/source/content/ai_lab/runner.rst +253 -0
  8. pygeai/_docs/source/content/ai_lab/spec.rst +431 -0
  9. pygeai/_docs/source/content/ai_lab/usage.rst +1011 -0
  10. pygeai/_docs/source/content/ai_lab.rst +102 -0
  11. pygeai/_docs/source/content/analytics.rst +598 -0
  12. pygeai/_docs/source/content/api_reference/admin.rst +161 -0
  13. pygeai/_docs/source/content/api_reference/assistant.rst +326 -0
  14. pygeai/_docs/source/content/api_reference/auth.rst +379 -0
  15. pygeai/_docs/source/content/api_reference/chat.rst +754 -0
  16. pygeai/_docs/source/content/api_reference/embeddings.rst +154 -0
  17. pygeai/_docs/source/content/api_reference/evaluation.rst +590 -0
  18. pygeai/_docs/source/content/api_reference/feedback.rst +237 -0
  19. pygeai/_docs/source/content/api_reference/files.rst +592 -0
  20. pygeai/_docs/source/content/api_reference/gam.rst +401 -0
  21. pygeai/_docs/source/content/api_reference/health.rst +58 -0
  22. pygeai/_docs/source/content/api_reference/project.rst +738 -0
  23. pygeai/_docs/source/content/api_reference/proxy.rst +318 -0
  24. pygeai/_docs/source/content/api_reference/rag.rst +710 -0
  25. pygeai/_docs/source/content/api_reference/rerank.rst +94 -0
  26. pygeai/_docs/source/content/api_reference/secrets.rst +495 -0
  27. pygeai/_docs/source/content/api_reference/usage_limits.rst +390 -0
  28. pygeai/_docs/source/content/api_reference.rst +58 -0
  29. pygeai/_docs/source/content/authentication.rst +295 -0
  30. pygeai/_docs/source/content/chat_gui.rst +121 -0
  31. pygeai/_docs/source/content/cli.rst +203 -0
  32. pygeai/_docs/source/content/debugger.rst +651 -0
  33. pygeai/_docs/source/content/intro.rst +67 -0
  34. pygeai/_docs/source/content/migration.rst +929 -0
  35. pygeai/_docs/source/content/modules.rst +7 -0
  36. pygeai/_docs/source/content/quickstart.rst +143 -0
  37. pygeai/_docs/source/content/samples.rst +394 -0
  38. pygeai/_docs/source/index.rst +75 -0
  39. pygeai/_docs/source/modules.rst +7 -0
  40. pygeai/_docs/source/pygeai.admin.rst +29 -0
  41. pygeai/_docs/source/pygeai.analytics.rst +53 -0
  42. pygeai/_docs/source/pygeai.assistant.data.rst +21 -0
  43. pygeai/_docs/source/pygeai.assistant.data_analyst.rst +29 -0
  44. pygeai/_docs/source/pygeai.assistant.rag.rst +53 -0
  45. pygeai/_docs/source/pygeai.assistant.rst +55 -0
  46. pygeai/_docs/source/pygeai.auth.rst +29 -0
  47. pygeai/_docs/source/pygeai.chat.rst +69 -0
  48. pygeai/_docs/source/pygeai.cli.commands.flows.rst +10 -0
  49. pygeai/_docs/source/pygeai.cli.commands.lab.rst +53 -0
  50. pygeai/_docs/source/pygeai.cli.commands.rst +222 -0
  51. pygeai/_docs/source/pygeai.cli.rst +62 -0
  52. pygeai/_docs/source/pygeai.cli.texts.rst +21 -0
  53. pygeai/_docs/source/pygeai.core.base.rst +53 -0
  54. pygeai/_docs/source/pygeai.core.common.rst +37 -0
  55. pygeai/_docs/source/pygeai.core.embeddings.rst +61 -0
  56. pygeai/_docs/source/pygeai.core.feedback.rst +37 -0
  57. pygeai/_docs/source/pygeai.core.files.rst +61 -0
  58. pygeai/_docs/source/pygeai.core.llm.rst +29 -0
  59. pygeai/_docs/source/pygeai.core.plugins.rst +37 -0
  60. pygeai/_docs/source/pygeai.core.rerank.rst +53 -0
  61. pygeai/_docs/source/pygeai.core.rst +63 -0
  62. pygeai/_docs/source/pygeai.core.secrets.rst +29 -0
  63. pygeai/_docs/source/pygeai.core.services.llm.rst +29 -0
  64. pygeai/_docs/source/pygeai.core.services.rst +37 -0
  65. pygeai/_docs/source/pygeai.core.utils.rst +37 -0
  66. pygeai/_docs/source/pygeai.dbg.rst +21 -0
  67. pygeai/_docs/source/pygeai.evaluation.dataset.rst +29 -0
  68. pygeai/_docs/source/pygeai.evaluation.plan.rst +29 -0
  69. pygeai/_docs/source/pygeai.evaluation.result.rst +29 -0
  70. pygeai/_docs/source/pygeai.evaluation.rst +31 -0
  71. pygeai/_docs/source/pygeai.flows.rst +29 -0
  72. pygeai/_docs/source/pygeai.gam.rst +29 -0
  73. pygeai/_docs/source/pygeai.health.rst +29 -0
  74. pygeai/_docs/source/pygeai.lab.agents.rst +37 -0
  75. pygeai/_docs/source/pygeai.lab.processes.rst +37 -0
  76. pygeai/_docs/source/pygeai.lab.rst +65 -0
  77. pygeai/_docs/source/pygeai.lab.spec.rst +29 -0
  78. pygeai/_docs/source/pygeai.lab.strategies.rst +37 -0
  79. pygeai/_docs/source/pygeai.lab.tools.rst +37 -0
  80. pygeai/_docs/source/pygeai.man.man1.rst +10 -0
  81. pygeai/_docs/source/pygeai.man.rst +18 -0
  82. pygeai/_docs/source/pygeai.migration.rst +29 -0
  83. pygeai/_docs/source/pygeai.organization.limits.rst +45 -0
  84. pygeai/_docs/source/pygeai.organization.rst +61 -0
  85. pygeai/_docs/source/pygeai.proxy.rst +53 -0
  86. pygeai/_docs/source/pygeai.rst +35 -0
  87. pygeai/_docs/source/pygeai.tests.admin.rst +21 -0
  88. pygeai/_docs/source/pygeai.tests.analytics.rst +45 -0
  89. pygeai/_docs/source/pygeai.tests.assistants.rag.rst +37 -0
  90. pygeai/_docs/source/pygeai.tests.assistants.rst +45 -0
  91. pygeai/_docs/source/pygeai.tests.auth.rst +29 -0
  92. pygeai/_docs/source/pygeai.tests.chat.rst +45 -0
  93. pygeai/_docs/source/pygeai.tests.cli.commands.lab.rst +37 -0
  94. pygeai/_docs/source/pygeai.tests.cli.commands.rst +165 -0
  95. pygeai/_docs/source/pygeai.tests.cli.docker.rst +10 -0
  96. pygeai/_docs/source/pygeai.tests.cli.rst +46 -0
  97. pygeai/_docs/source/pygeai.tests.core.base.data.rst +29 -0
  98. pygeai/_docs/source/pygeai.tests.core.base.rst +45 -0
  99. pygeai/_docs/source/pygeai.tests.core.common.data.rst +10 -0
  100. pygeai/_docs/source/pygeai.tests.core.common.rst +37 -0
  101. pygeai/_docs/source/pygeai.tests.core.embeddings.rst +37 -0
  102. pygeai/_docs/source/pygeai.tests.core.feedback.rst +21 -0
  103. pygeai/_docs/source/pygeai.tests.core.files.rst +53 -0
  104. pygeai/_docs/source/pygeai.tests.core.llm.rst +21 -0
  105. pygeai/_docs/source/pygeai.tests.core.plugins.rst +21 -0
  106. pygeai/_docs/source/pygeai.tests.core.rerank.rst +37 -0
  107. pygeai/_docs/source/pygeai.tests.core.rst +39 -0
  108. pygeai/_docs/source/pygeai.tests.core.secrets.rst +21 -0
  109. pygeai/_docs/source/pygeai.tests.core.services.rst +21 -0
  110. pygeai/_docs/source/pygeai.tests.core.utils.rst +21 -0
  111. pygeai/_docs/source/pygeai.tests.dbg.rst +21 -0
  112. pygeai/_docs/source/pygeai.tests.evaluation.dataset.rst +21 -0
  113. pygeai/_docs/source/pygeai.tests.evaluation.plan.rst +21 -0
  114. pygeai/_docs/source/pygeai.tests.evaluation.result.rst +21 -0
  115. pygeai/_docs/source/pygeai.tests.evaluation.rst +20 -0
  116. pygeai/_docs/source/pygeai.tests.gam.rst +21 -0
  117. pygeai/_docs/source/pygeai.tests.health.rst +21 -0
  118. pygeai/_docs/source/pygeai.tests.integration.assistants.rag.rst +21 -0
  119. pygeai/_docs/source/pygeai.tests.integration.assistants.rst +18 -0
  120. pygeai/_docs/source/pygeai.tests.integration.chat.rst +21 -0
  121. pygeai/_docs/source/pygeai.tests.integration.lab.agents.rst +69 -0
  122. pygeai/_docs/source/pygeai.tests.integration.lab.processes.rst +77 -0
  123. pygeai/_docs/source/pygeai.tests.integration.lab.reasoning_strategies.rst +37 -0
  124. pygeai/_docs/source/pygeai.tests.integration.lab.rst +21 -0
  125. pygeai/_docs/source/pygeai.tests.integration.lab.tools.rst +77 -0
  126. pygeai/_docs/source/pygeai.tests.integration.rst +20 -0
  127. pygeai/_docs/source/pygeai.tests.lab.agents.rst +29 -0
  128. pygeai/_docs/source/pygeai.tests.lab.processes.rst +29 -0
  129. pygeai/_docs/source/pygeai.tests.lab.rst +49 -0
  130. pygeai/_docs/source/pygeai.tests.lab.spec.rst +29 -0
  131. pygeai/_docs/source/pygeai.tests.lab.strategies.rst +29 -0
  132. pygeai/_docs/source/pygeai.tests.lab.tools.rst +29 -0
  133. pygeai/_docs/source/pygeai.tests.migration.rst +29 -0
  134. pygeai/_docs/source/pygeai.tests.organization.limits.rst +29 -0
  135. pygeai/_docs/source/pygeai.tests.organization.rst +53 -0
  136. pygeai/_docs/source/pygeai.tests.proxy.rst +61 -0
  137. pygeai/_docs/source/pygeai.tests.rst +33 -0
  138. pygeai/admin/clients.py +14 -11
  139. pygeai/admin/endpoints.py +2 -2
  140. pygeai/analytics/clients.py +505 -0
  141. pygeai/analytics/endpoints.py +35 -0
  142. pygeai/analytics/managers.py +606 -0
  143. pygeai/analytics/mappers.py +207 -0
  144. pygeai/analytics/responses.py +240 -0
  145. pygeai/assistant/clients.py +18 -45
  146. pygeai/assistant/data/clients.py +1 -0
  147. pygeai/assistant/data_analyst/clients.py +8 -12
  148. pygeai/assistant/managers.py +195 -157
  149. pygeai/assistant/mappers.py +4 -2
  150. pygeai/assistant/rag/clients.py +27 -67
  151. pygeai/assistant/rag/mappers.py +12 -6
  152. pygeai/assistant/rag/models.py +301 -159
  153. pygeai/auth/__init__.py +0 -0
  154. pygeai/auth/clients.py +129 -0
  155. pygeai/auth/endpoints.py +6 -0
  156. pygeai/chat/clients.py +308 -37
  157. pygeai/chat/endpoints.py +3 -0
  158. pygeai/chat/iris.py +2 -8
  159. pygeai/chat/managers.py +9 -6
  160. pygeai/chat/session.py +38 -0
  161. pygeai/chat/settings.py +6 -0
  162. pygeai/chat/ui.py +678 -0
  163. pygeai/cli/__init__.py +0 -1
  164. pygeai/cli/commands/admin.py +7 -10
  165. pygeai/cli/commands/analytics.py +533 -0
  166. pygeai/cli/commands/assistant.py +9 -9
  167. pygeai/cli/commands/auth.py +299 -0
  168. pygeai/cli/commands/base.py +71 -9
  169. pygeai/cli/commands/chat.py +676 -19
  170. pygeai/cli/commands/common.py +28 -24
  171. pygeai/cli/commands/configuration.py +66 -13
  172. pygeai/cli/commands/docs.py +105 -0
  173. pygeai/cli/commands/embeddings.py +58 -11
  174. pygeai/cli/commands/evaluation.py +38 -38
  175. pygeai/cli/commands/feedback.py +3 -4
  176. pygeai/cli/commands/files.py +7 -8
  177. pygeai/cli/commands/gam.py +85 -10
  178. pygeai/cli/commands/lab/ai_lab.py +340 -484
  179. pygeai/cli/commands/lab/options.py +8 -0
  180. pygeai/cli/commands/lab/spec.py +273 -0
  181. pygeai/cli/commands/lab/utils.py +13 -0
  182. pygeai/cli/commands/llm.py +6 -7
  183. pygeai/cli/commands/migrate.py +1064 -436
  184. pygeai/cli/commands/organization.py +516 -11
  185. pygeai/cli/commands/rag.py +13 -14
  186. pygeai/cli/commands/rerank.py +3 -5
  187. pygeai/cli/commands/secrets.py +8 -9
  188. pygeai/cli/commands/usage_limits.py +18 -20
  189. pygeai/cli/commands/validators.py +144 -1
  190. pygeai/cli/commands/version.py +4 -5
  191. pygeai/cli/error_handler.py +151 -0
  192. pygeai/cli/geai.py +170 -31
  193. pygeai/cli/geai_proxy.py +86 -25
  194. pygeai/cli/install_man.py +93 -22
  195. pygeai/cli/parsers.py +75 -25
  196. pygeai/cli/texts/help.py +265 -28
  197. pygeai/core/base/clients.py +53 -12
  198. pygeai/core/base/mappers.py +11 -2
  199. pygeai/core/base/session.py +95 -11
  200. pygeai/core/common/config.py +78 -14
  201. pygeai/core/common/exceptions.py +96 -6
  202. pygeai/core/embeddings/__init__.py +19 -0
  203. pygeai/core/embeddings/clients.py +23 -5
  204. pygeai/core/embeddings/managers.py +9 -4
  205. pygeai/core/embeddings/mappers.py +16 -2
  206. pygeai/core/embeddings/responses.py +9 -2
  207. pygeai/core/feedback/clients.py +8 -3
  208. pygeai/core/files/clients.py +23 -24
  209. pygeai/core/files/managers.py +121 -30
  210. pygeai/core/files/responses.py +4 -3
  211. pygeai/core/handlers.py +10 -1
  212. pygeai/core/llm/clients.py +22 -29
  213. pygeai/core/models.py +127 -11
  214. pygeai/core/plugins/clients.py +6 -6
  215. pygeai/core/rerank/clients.py +9 -3
  216. pygeai/core/rerank/managers.py +22 -5
  217. pygeai/core/secrets/clients.py +16 -37
  218. pygeai/core/services/response.py +18 -0
  219. pygeai/core/services/rest.py +159 -49
  220. pygeai/core/utils/__init__.py +0 -0
  221. pygeai/core/utils/console.py +83 -0
  222. pygeai/core/utils/parsers.py +32 -0
  223. pygeai/core/utils/validators.py +10 -0
  224. pygeai/dbg/__init__.py +3 -0
  225. pygeai/dbg/debugger.py +854 -14
  226. pygeai/evaluation/clients.py +7 -4
  227. pygeai/evaluation/dataset/clients.py +46 -44
  228. pygeai/evaluation/plan/clients.py +28 -26
  229. pygeai/evaluation/result/clients.py +38 -5
  230. pygeai/gam/clients.py +50 -28
  231. pygeai/gam/endpoints.py +2 -1
  232. pygeai/health/__init__.py +0 -0
  233. pygeai/health/clients.py +24 -0
  234. pygeai/health/endpoints.py +1 -0
  235. pygeai/lab/__init__.py +0 -90
  236. pygeai/lab/agents/clients.py +203 -162
  237. pygeai/lab/agents/endpoints.py +4 -0
  238. pygeai/lab/agents/mappers.py +57 -7
  239. pygeai/lab/clients.py +24 -0
  240. pygeai/lab/constants.py +3 -0
  241. pygeai/lab/managers.py +571 -541
  242. pygeai/lab/models.py +108 -19
  243. pygeai/lab/processes/clients.py +332 -340
  244. pygeai/lab/processes/mappers.py +3 -3
  245. pygeai/lab/runners.py +90 -0
  246. pygeai/lab/spec/__init__.py +0 -0
  247. pygeai/lab/spec/loader.py +24 -0
  248. pygeai/lab/spec/parsers.py +39 -0
  249. pygeai/lab/strategies/clients.py +67 -63
  250. pygeai/lab/strategies/mappers.py +1 -1
  251. pygeai/lab/tools/clients.py +85 -118
  252. pygeai/lab/tools/endpoints.py +4 -0
  253. pygeai/lab/tools/mappers.py +5 -5
  254. pygeai/man/man1/geai-proxy.1 +116 -0
  255. pygeai/man/man1/geai.1 +2580 -66
  256. pygeai/migration/__init__.py +33 -0
  257. pygeai/migration/strategies.py +468 -146
  258. pygeai/migration/tools.py +170 -3
  259. pygeai/organization/clients.py +245 -50
  260. pygeai/organization/endpoints.py +17 -8
  261. pygeai/organization/limits/clients.py +34 -32
  262. pygeai/organization/limits/managers.py +108 -49
  263. pygeai/organization/managers.py +347 -53
  264. pygeai/organization/mappers.py +102 -2
  265. pygeai/organization/responses.py +58 -1
  266. pygeai/proxy/clients.py +6 -3
  267. pygeai/proxy/config.py +14 -1
  268. pygeai/proxy/managers.py +61 -33
  269. pygeai/proxy/servers.py +196 -51
  270. pygeai/proxy/tool.py +33 -16
  271. pygeai/tests/admin/__init__.py +0 -0
  272. pygeai/tests/admin/test_clients.py +148 -0
  273. pygeai/tests/analytics/__init__.py +0 -0
  274. pygeai/tests/analytics/test_clients.py +86 -0
  275. pygeai/tests/analytics/test_managers.py +94 -0
  276. pygeai/tests/analytics/test_mappers.py +84 -0
  277. pygeai/tests/analytics/test_responses.py +73 -0
  278. pygeai/tests/assistants/rag/test_clients.py +346 -0
  279. pygeai/tests/assistants/rag/test_models.py +292 -0
  280. pygeai/tests/assistants/test_clients.py +176 -82
  281. pygeai/tests/assistants/test_managers.py +191 -57
  282. pygeai/tests/auth/__init__.py +0 -0
  283. pygeai/tests/auth/test_clients.py +289 -0
  284. pygeai/tests/auth/test_oauth.py +172 -0
  285. pygeai/tests/auth/test_session_logging.py +150 -0
  286. pygeai/tests/chat/__init__.py +0 -0
  287. pygeai/tests/chat/test_clients.py +393 -0
  288. pygeai/tests/chat/test_iris.py +38 -0
  289. pygeai/tests/chat/test_session.py +62 -0
  290. pygeai/tests/chat/test_ui.py +224 -0
  291. pygeai/tests/cli/commands/__init__.py +0 -0
  292. pygeai/tests/cli/commands/lab/__init__.py +0 -0
  293. pygeai/tests/cli/commands/lab/test_ai_lab.py +786 -0
  294. pygeai/tests/cli/commands/lab/test_common.py +208 -0
  295. pygeai/tests/cli/commands/lab/test_spec.py +246 -0
  296. pygeai/tests/cli/commands/test_assistant.py +202 -0
  297. pygeai/tests/cli/commands/test_chat.py +130 -0
  298. pygeai/tests/cli/commands/test_common.py +350 -0
  299. pygeai/tests/cli/commands/test_embeddings.py +132 -0
  300. pygeai/tests/cli/commands/test_evaluation.py +656 -0
  301. pygeai/tests/cli/commands/test_feedback.py +65 -0
  302. pygeai/tests/cli/commands/test_files.py +161 -0
  303. pygeai/tests/cli/commands/test_gam.py +201 -0
  304. pygeai/tests/cli/commands/test_llm.py +114 -0
  305. pygeai/tests/cli/commands/test_migrate.py +176 -0
  306. pygeai/tests/cli/commands/test_organization.py +276 -0
  307. pygeai/tests/cli/commands/test_rag.py +266 -0
  308. pygeai/tests/cli/commands/test_rerank.py +110 -0
  309. pygeai/tests/cli/commands/test_secrets.py +171 -0
  310. pygeai/tests/cli/commands/test_show_help.py +41 -0
  311. pygeai/tests/cli/commands/test_usage_limits.py +412 -0
  312. pygeai/tests/cli/commands/test_validators.py +160 -0
  313. pygeai/tests/cli/commands/test_version.py +81 -0
  314. pygeai/tests/cli/docker/__init__.py +0 -0
  315. pygeai/tests/cli/test_credentials_flag.py +316 -0
  316. pygeai/tests/cli/test_error_handler.py +225 -0
  317. pygeai/tests/cli/test_geai_driver.py +154 -0
  318. pygeai/tests/cli/test_parsers.py +5 -5
  319. pygeai/tests/core/base/data/models.py +7 -0
  320. pygeai/tests/core/base/test_mappers.py +43 -11
  321. pygeai/tests/core/base/test_models.py +3 -1
  322. pygeai/tests/core/base/test_responses.py +53 -0
  323. pygeai/tests/core/common/__init__.py +0 -0
  324. pygeai/tests/core/common/data/__init__.py +0 -0
  325. pygeai/tests/core/common/test_config.py +186 -0
  326. pygeai/tests/core/common/test_decorators.py +69 -0
  327. pygeai/tests/core/embeddings/__init__.py +0 -0
  328. pygeai/tests/core/embeddings/test_clients.py +225 -0
  329. pygeai/tests/core/embeddings/test_managers.py +171 -0
  330. pygeai/tests/core/embeddings/test_mappers.py +142 -0
  331. pygeai/tests/core/feedback/__init__.py +0 -0
  332. pygeai/tests/core/feedback/test_clients.py +64 -0
  333. pygeai/tests/core/files/test_clients.py +128 -0
  334. pygeai/tests/core/files/test_managers.py +124 -78
  335. pygeai/tests/core/files/test_mappers.py +137 -0
  336. pygeai/tests/core/files/test_models.py +103 -0
  337. pygeai/tests/core/files/test_responses.py +122 -0
  338. pygeai/tests/core/llm/__init__.py +0 -0
  339. pygeai/tests/core/llm/test_clients.py +142 -0
  340. pygeai/tests/core/plugins/__init__.py +0 -0
  341. pygeai/tests/core/plugins/test_clients.py +66 -0
  342. pygeai/tests/core/rerank/test_clients.py +76 -0
  343. pygeai/tests/core/rerank/test_managers.py +61 -39
  344. pygeai/tests/core/secrets/__init__.py +0 -0
  345. pygeai/tests/core/secrets/test_clients.py +264 -0
  346. pygeai/tests/core/services/__init__.py +0 -0
  347. pygeai/tests/core/services/test_rest.py +273 -0
  348. pygeai/tests/core/test_handlers.py +66 -0
  349. pygeai/tests/core/utils/__init__.py +0 -0
  350. pygeai/tests/core/utils/test_console.py +80 -0
  351. pygeai/tests/dbg/__init__.py +0 -0
  352. pygeai/tests/dbg/test_debugger.py +591 -0
  353. pygeai/tests/evaluation/__init__.py +0 -0
  354. pygeai/tests/evaluation/dataset/__init__.py +0 -0
  355. pygeai/tests/evaluation/dataset/test_clients.py +265 -0
  356. pygeai/tests/evaluation/plan/__init__.py +0 -0
  357. pygeai/tests/evaluation/plan/test_clients.py +195 -0
  358. pygeai/tests/evaluation/result/__init__.py +0 -0
  359. pygeai/tests/evaluation/result/test_clients.py +66 -0
  360. pygeai/tests/gam/__init__.py +0 -0
  361. pygeai/tests/gam/test_clients.py +195 -0
  362. pygeai/tests/health/__init__.py +0 -0
  363. pygeai/tests/health/test_clients.py +41 -0
  364. pygeai/tests/integration/__init__.py +0 -0
  365. pygeai/tests/integration/assistants/__init__.py +0 -0
  366. pygeai/tests/integration/assistants/rag/__init__.py +0 -0
  367. pygeai/tests/integration/assistants/rag/test_create_rag.py +91 -0
  368. pygeai/tests/integration/chat/__init__.py +0 -0
  369. pygeai/tests/integration/chat/test_generate_image.py +158 -0
  370. pygeai/tests/integration/lab/__init__.py +0 -0
  371. pygeai/tests/integration/lab/agents/__init__.py +0 -0
  372. pygeai/tests/integration/lab/agents/test_agents_list.py +106 -0
  373. pygeai/tests/integration/lab/agents/test_create_agent.py +319 -0
  374. pygeai/tests/integration/lab/agents/test_create_sharing_link.py +70 -0
  375. pygeai/tests/integration/lab/agents/test_delete_agent.py +75 -0
  376. pygeai/tests/integration/lab/agents/test_get_agent.py +94 -0
  377. pygeai/tests/integration/lab/agents/test_publish_agent_revision.py +127 -0
  378. pygeai/tests/integration/lab/agents/test_update_agent.py +250 -0
  379. pygeai/tests/integration/lab/processes/__init__.py +0 -0
  380. pygeai/tests/integration/lab/processes/test_create_process.py +345 -0
  381. pygeai/tests/integration/lab/processes/test_create_task.py +211 -0
  382. pygeai/tests/integration/lab/processes/test_delete_process.py +111 -0
  383. pygeai/tests/integration/lab/processes/test_get_process.py +201 -0
  384. pygeai/tests/integration/lab/processes/test_list_process_instances.py +91 -0
  385. pygeai/tests/integration/lab/processes/test_list_processes.py +138 -0
  386. pygeai/tests/integration/lab/processes/test_publish_process_revision.py +232 -0
  387. pygeai/tests/integration/lab/processes/test_update_process.py +289 -0
  388. pygeai/tests/integration/lab/reasoning_strategies/__init__.py +0 -0
  389. pygeai/tests/integration/lab/reasoning_strategies/test_get_reasoning_strategy.py +70 -0
  390. pygeai/tests/integration/lab/reasoning_strategies/test_list_reasoning_strategies.py +93 -0
  391. pygeai/tests/integration/lab/reasoning_strategies/test_update_reasoning_strategy.py +149 -0
  392. pygeai/tests/integration/lab/tools/__init__.py +0 -0
  393. pygeai/tests/integration/lab/tools/test_create_tool.py +288 -0
  394. pygeai/tests/integration/lab/tools/test_delete_tool.py +87 -0
  395. pygeai/tests/integration/lab/tools/test_get_parameter.py +98 -0
  396. pygeai/tests/integration/lab/tools/test_get_tool.py +91 -0
  397. pygeai/tests/integration/lab/tools/test_list_tools.py +106 -0
  398. pygeai/tests/integration/lab/tools/test_publish_tool_revision.py +119 -0
  399. pygeai/tests/integration/lab/tools/test_set_parameter.py +114 -0
  400. pygeai/tests/integration/lab/tools/test_update_tool.py +267 -0
  401. pygeai/tests/lab/agents/__init__.py +0 -0
  402. pygeai/tests/lab/agents/test_clients.py +481 -0
  403. pygeai/tests/lab/agents/test_mappers.py +440 -0
  404. pygeai/tests/lab/processes/__init__.py +0 -0
  405. pygeai/tests/lab/processes/test_clients.py +1416 -0
  406. pygeai/tests/lab/processes/test_mappers.py +1092 -0
  407. pygeai/tests/lab/spec/__init__.py +0 -0
  408. pygeai/tests/lab/spec/test_loader.py +59 -0
  409. pygeai/tests/lab/spec/test_parsers.py +182 -0
  410. pygeai/tests/lab/strategies/__init__.py +0 -0
  411. pygeai/tests/lab/strategies/test_clients.py +241 -0
  412. pygeai/tests/lab/strategies/test_mappers.py +132 -0
  413. pygeai/tests/lab/test_managers.py +553 -0
  414. pygeai/tests/lab/test_models.py +500 -3
  415. pygeai/tests/lab/tools/__init__.py +0 -0
  416. pygeai/tests/lab/tools/test_clients.py +521 -0
  417. pygeai/tests/lab/tools/test_mappers.py +198 -0
  418. pygeai/tests/migration/__init__.py +0 -0
  419. pygeai/tests/migration/test_strategies.py +405 -0
  420. pygeai/tests/migration/test_tools.py +159 -0
  421. pygeai/tests/organization/limits/test_clients.py +567 -0
  422. pygeai/tests/organization/limits/test_managers.py +298 -56
  423. pygeai/tests/organization/test_clients.py +600 -30
  424. pygeai/tests/organization/test_managers.py +424 -0
  425. pygeai/tests/organization/test_mappers.py +153 -0
  426. pygeai/tests/organization/test_responses.py +137 -0
  427. pygeai/tests/proxy/__init__.py +1 -0
  428. pygeai/tests/proxy/test_clients.py +397 -0
  429. pygeai/tests/proxy/test_config.py +171 -0
  430. pygeai/tests/proxy/test_integration.py +305 -0
  431. pygeai/tests/proxy/test_managers.py +312 -0
  432. pygeai/tests/proxy/test_servers.py +387 -0
  433. pygeai/tests/proxy/test_tool.py +176 -0
  434. pygeai/tests/snippets/analytics/__init__.py +0 -0
  435. pygeai/tests/snippets/analytics/get_agent_usage_per_user.py +16 -0
  436. pygeai/tests/snippets/analytics/get_agents_created_and_modified.py +11 -0
  437. pygeai/tests/snippets/analytics/get_average_cost_per_request.py +10 -0
  438. pygeai/tests/snippets/analytics/get_overall_error_rate.py +10 -0
  439. pygeai/tests/snippets/analytics/get_top_10_agents_by_requests.py +12 -0
  440. pygeai/tests/snippets/analytics/get_total_active_users.py +10 -0
  441. pygeai/tests/snippets/analytics/get_total_cost.py +10 -0
  442. pygeai/tests/snippets/analytics/get_total_requests_per_day.py +12 -0
  443. pygeai/tests/snippets/analytics/get_total_tokens.py +12 -0
  444. pygeai/tests/snippets/auth/__init__.py +0 -0
  445. pygeai/tests/snippets/chat/chat_completion_with_reasoning_effort.py +18 -0
  446. pygeai/tests/snippets/chat/get_response.py +15 -0
  447. pygeai/tests/snippets/chat/get_response_complete_example.py +67 -0
  448. pygeai/tests/snippets/chat/get_response_streaming.py +20 -0
  449. pygeai/tests/snippets/chat/get_response_with_files.py +16 -0
  450. pygeai/tests/snippets/chat/get_response_with_instructions.py +19 -0
  451. pygeai/tests/snippets/chat/get_response_with_metadata.py +24 -0
  452. pygeai/tests/snippets/chat/get_response_with_parallel_tools.py +58 -0
  453. pygeai/tests/snippets/chat/get_response_with_reasoning.py +21 -0
  454. pygeai/tests/snippets/chat/get_response_with_store.py +38 -0
  455. pygeai/tests/snippets/chat/get_response_with_tools.py +36 -0
  456. pygeai/tests/snippets/chat/get_response_with_truncation.py +24 -0
  457. pygeai/tests/snippets/dbg/__init__.py +0 -0
  458. pygeai/tests/snippets/dbg/basic_debugging.py +32 -0
  459. pygeai/tests/snippets/dbg/breakpoint_management.py +48 -0
  460. pygeai/tests/snippets/dbg/file_debugging.py +72 -0
  461. pygeai/tests/snippets/dbg/module_debugging.py +61 -0
  462. pygeai/tests/snippets/dbg/stack_navigation.py +45 -0
  463. pygeai/tests/snippets/dbg/stepping_example.py +40 -0
  464. pygeai/tests/snippets/embeddings/cache_example.py +31 -0
  465. pygeai/tests/snippets/embeddings/cohere_example.py +41 -0
  466. pygeai/tests/snippets/embeddings/openai_base64_example.py +27 -0
  467. pygeai/tests/snippets/embeddings/openai_example.py +30 -0
  468. pygeai/tests/snippets/embeddings/similarity_example.py +42 -0
  469. pygeai/tests/snippets/evaluation/dataset/__init__.py +0 -0
  470. pygeai/tests/snippets/evaluation/dataset/complete_workflow_example.py +195 -0
  471. pygeai/tests/snippets/evaluation/dataset/create_dataset.py +26 -0
  472. pygeai/tests/snippets/evaluation/dataset/create_dataset_from_file.py +11 -0
  473. pygeai/tests/snippets/evaluation/dataset/create_dataset_row.py +17 -0
  474. pygeai/tests/snippets/evaluation/dataset/create_expected_source.py +18 -0
  475. pygeai/tests/snippets/evaluation/dataset/create_filter_variable.py +19 -0
  476. pygeai/tests/snippets/evaluation/dataset/delete_dataset.py +9 -0
  477. pygeai/tests/snippets/evaluation/dataset/delete_dataset_row.py +10 -0
  478. pygeai/tests/snippets/evaluation/dataset/delete_expected_source.py +15 -0
  479. pygeai/tests/snippets/evaluation/dataset/delete_filter_variable.py +15 -0
  480. pygeai/tests/snippets/evaluation/dataset/get_dataset.py +9 -0
  481. pygeai/tests/snippets/evaluation/dataset/get_dataset_row.py +10 -0
  482. pygeai/tests/snippets/evaluation/dataset/get_expected_source.py +15 -0
  483. pygeai/tests/snippets/evaluation/dataset/get_filter_variable.py +15 -0
  484. pygeai/tests/snippets/evaluation/dataset/list_dataset_rows.py +9 -0
  485. pygeai/tests/snippets/evaluation/dataset/list_datasets.py +6 -0
  486. pygeai/tests/snippets/evaluation/dataset/list_expected_sources.py +10 -0
  487. pygeai/tests/snippets/evaluation/dataset/list_filter_variables.py +10 -0
  488. pygeai/tests/snippets/evaluation/dataset/update_dataset.py +15 -0
  489. pygeai/tests/snippets/evaluation/dataset/update_dataset_row.py +20 -0
  490. pygeai/tests/snippets/evaluation/dataset/update_expected_source.py +18 -0
  491. pygeai/tests/snippets/evaluation/dataset/update_filter_variable.py +19 -0
  492. pygeai/tests/snippets/evaluation/dataset/upload_dataset_rows_file.py +10 -0
  493. pygeai/tests/snippets/evaluation/plan/__init__.py +0 -0
  494. pygeai/tests/snippets/evaluation/plan/add_plan_system_metric.py +13 -0
  495. pygeai/tests/snippets/evaluation/plan/complete_workflow_example.py +136 -0
  496. pygeai/tests/snippets/evaluation/plan/create_evaluation_plan.py +24 -0
  497. pygeai/tests/snippets/evaluation/plan/create_rag_evaluation_plan.py +22 -0
  498. pygeai/tests/snippets/evaluation/plan/delete_evaluation_plan.py +9 -0
  499. pygeai/tests/snippets/evaluation/plan/delete_plan_system_metric.py +13 -0
  500. pygeai/tests/snippets/evaluation/plan/execute_evaluation_plan.py +11 -0
  501. pygeai/tests/snippets/evaluation/plan/get_evaluation_plan.py +9 -0
  502. pygeai/tests/snippets/evaluation/plan/get_plan_system_metric.py +13 -0
  503. pygeai/tests/snippets/evaluation/plan/get_system_metric.py +9 -0
  504. pygeai/tests/snippets/evaluation/plan/list_evaluation_plans.py +7 -0
  505. pygeai/tests/snippets/evaluation/plan/list_plan_system_metrics.py +9 -0
  506. pygeai/tests/snippets/evaluation/plan/list_system_metrics.py +7 -0
  507. pygeai/tests/snippets/evaluation/plan/update_evaluation_plan.py +22 -0
  508. pygeai/tests/snippets/evaluation/plan/update_plan_system_metric.py +14 -0
  509. pygeai/tests/snippets/evaluation/result/__init__.py +0 -0
  510. pygeai/tests/snippets/evaluation/result/complete_workflow_example.py +150 -0
  511. pygeai/tests/snippets/evaluation/result/get_evaluation_result.py +26 -0
  512. pygeai/tests/snippets/evaluation/result/list_evaluation_results.py +17 -0
  513. pygeai/tests/snippets/files/delete_file.py +1 -4
  514. pygeai/tests/snippets/files/get_file_content.py +2 -4
  515. pygeai/tests/snippets/files/get_file_data.py +1 -4
  516. pygeai/tests/snippets/files/get_file_list.py +1 -6
  517. pygeai/tests/snippets/files/upload_file.py +1 -5
  518. pygeai/tests/snippets/gam/gam_access_token.py +87 -0
  519. pygeai/tests/snippets/lab/agentic_flow_example_1.py +25 -23
  520. pygeai/tests/snippets/lab/agentic_flow_example_4.py +23 -23
  521. pygeai/tests/snippets/lab/agents/create_agent.py +5 -8
  522. pygeai/tests/snippets/lab/agents/create_agent_2.py +1 -5
  523. pygeai/tests/snippets/lab/agents/create_agent_edge_case.py +48 -0
  524. pygeai/tests/snippets/lab/agents/create_agent_with_permissions.py +39 -0
  525. pygeai/tests/snippets/lab/agents/create_agent_with_properties.py +46 -0
  526. pygeai/tests/snippets/lab/agents/create_agent_without_instructions.py +48 -0
  527. pygeai/tests/snippets/lab/agents/delete_agent.py +1 -5
  528. pygeai/tests/snippets/lab/agents/get_agent.py +2 -11
  529. pygeai/tests/snippets/lab/agents/get_agent_with_new_fields.py +62 -0
  530. pygeai/tests/snippets/lab/agents/get_sharing_link.py +2 -7
  531. pygeai/tests/snippets/lab/agents/list_agents.py +4 -7
  532. pygeai/tests/snippets/lab/agents/publish_agent_revision.py +2 -6
  533. pygeai/tests/snippets/lab/agents/update_agent.py +1 -5
  534. pygeai/tests/snippets/lab/agents/update_agent_properties.py +50 -0
  535. pygeai/tests/snippets/lab/assistant_to_agent.py +191 -0
  536. pygeai/tests/snippets/lab/crud_ui.py +462 -0
  537. pygeai/tests/snippets/lab/processes/create_process.py +3 -5
  538. pygeai/tests/snippets/lab/processes/create_task.py +3 -5
  539. pygeai/tests/snippets/lab/processes/jobs/list_jobs.py +10 -19
  540. pygeai/tests/snippets/lab/processes/kbs/create_kb.py +2 -5
  541. pygeai/tests/snippets/lab/processes/kbs/get_kb.py +10 -16
  542. pygeai/tests/snippets/lab/processes/kbs/list_kbs.py +13 -20
  543. pygeai/tests/snippets/lab/processes/kbs/try_all.py +5 -7
  544. pygeai/tests/snippets/lab/processes/list_processes.py +5 -7
  545. pygeai/tests/snippets/lab/runner_1.py +1 -1
  546. pygeai/tests/snippets/lab/samples/summarize_files.py +3 -3
  547. pygeai/tests/snippets/lab/strategies/create_reasoning_strategy.py +2 -5
  548. pygeai/tests/snippets/lab/strategies/get_reasoning_strategy.py +2 -5
  549. pygeai/tests/snippets/lab/strategies/list_reasoning_strategies.py +3 -6
  550. pygeai/tests/snippets/lab/strategies/update_reasoning_strategy.py +2 -5
  551. pygeai/tests/snippets/lab/tools/create_tool.py +4 -10
  552. pygeai/tests/snippets/lab/tools/create_tool_edge_case.py +50 -0
  553. pygeai/tests/snippets/lab/tools/delete_tool.py +2 -6
  554. pygeai/tests/snippets/lab/tools/get_parameter.py +5 -7
  555. pygeai/tests/snippets/lab/tools/get_tool.py +5 -7
  556. pygeai/tests/snippets/lab/tools/list_tools.py +3 -7
  557. pygeai/tests/snippets/lab/tools/publish_tool_revision.py +3 -5
  558. pygeai/tests/snippets/lab/tools/set_parameters.py +4 -9
  559. pygeai/tests/snippets/lab/tools/update_tool.py +4 -8
  560. pygeai/tests/snippets/lab/use_cases/__init__.py +0 -0
  561. pygeai/tests/snippets/lab/use_cases/create_cli_expert.py +1640 -0
  562. pygeai/tests/snippets/lab/use_cases/create_lab_expert.py +4541 -0
  563. pygeai/tests/snippets/lab/use_cases/create_tool_headless_web_browser.py +133 -0
  564. pygeai/tests/snippets/lab/use_cases/create_web_designer.py +189 -0
  565. pygeai/tests/snippets/lab/use_cases/create_web_reader.py +185 -0
  566. pygeai/tests/snippets/lab/{file_summarizer_example.py → use_cases/file_summarizer_example.py} +3 -3
  567. pygeai/tests/snippets/lab/{file_summarizer_example_2.py → use_cases/file_summarizer_example_2.py} +12 -12
  568. pygeai/tests/snippets/lab/use_cases/update_cli_expert.py +1773 -0
  569. pygeai/tests/snippets/lab/use_cases/update_lab_expert.py +4541 -0
  570. pygeai/tests/snippets/lab/use_cases/update_web_designer.py +188 -0
  571. pygeai/tests/snippets/lab/use_cases/update_web_reader.py +195 -0
  572. pygeai/tests/snippets/lab/use_cases/update_web_reader_with_tool.py +210 -0
  573. pygeai/tests/snippets/migrate/__init__.py +45 -0
  574. pygeai/tests/snippets/migrate/agent_migration.py +110 -0
  575. pygeai/tests/snippets/migrate/assistant_migration.py +64 -0
  576. pygeai/tests/snippets/migrate/orchestrator_examples.py +179 -0
  577. pygeai/tests/snippets/migrate/process_migration.py +64 -0
  578. pygeai/tests/snippets/migrate/project_migration.py +42 -0
  579. pygeai/tests/snippets/migrate/tool_migration.py +64 -0
  580. pygeai/tests/snippets/organization/add_project_member.py +10 -0
  581. pygeai/tests/snippets/organization/add_project_member_batch.py +44 -0
  582. pygeai/tests/snippets/organization/create_project.py +2 -2
  583. pygeai/tests/snippets/organization/get_memberships.py +12 -0
  584. pygeai/tests/snippets/organization/get_organization_members.py +6 -0
  585. pygeai/tests/snippets/organization/get_project_members.py +6 -0
  586. pygeai/tests/snippets/organization/get_project_memberships.py +12 -0
  587. pygeai/tests/snippets/organization/get_project_roles.py +6 -0
  588. pygeai/vendor/a2a/__init__.py +1 -0
  589. pygeai/vendor/a2a/auth/__init__.py +0 -0
  590. pygeai/vendor/a2a/auth/user.py +31 -0
  591. pygeai/vendor/a2a/client/__init__.py +19 -0
  592. pygeai/vendor/a2a/client/client.py +425 -0
  593. pygeai/vendor/a2a/client/errors.py +33 -0
  594. pygeai/vendor/a2a/client/helpers.py +22 -0
  595. pygeai/vendor/a2a/py.typed +0 -0
  596. pygeai/vendor/a2a/server/__init__.py +1 -0
  597. pygeai/vendor/a2a/server/agent_execution/__init__.py +18 -0
  598. pygeai/vendor/a2a/server/agent_execution/agent_executor.py +44 -0
  599. pygeai/vendor/a2a/server/agent_execution/context.py +155 -0
  600. pygeai/vendor/a2a/server/agent_execution/request_context_builder.py +20 -0
  601. pygeai/vendor/a2a/server/agent_execution/simple_request_context_builder.py +77 -0
  602. pygeai/vendor/a2a/server/apps/__init__.py +16 -0
  603. pygeai/vendor/a2a/server/apps/jsonrpc/__init__.py +16 -0
  604. pygeai/vendor/a2a/server/apps/jsonrpc/fastapi_app.py +88 -0
  605. pygeai/vendor/a2a/server/apps/jsonrpc/jsonrpc_app.py +426 -0
  606. pygeai/vendor/a2a/server/apps/jsonrpc/starlette_app.py +123 -0
  607. pygeai/vendor/a2a/server/context.py +23 -0
  608. pygeai/vendor/a2a/server/events/__init__.py +21 -0
  609. pygeai/vendor/a2a/server/events/event_consumer.py +149 -0
  610. pygeai/vendor/a2a/server/events/event_queue.py +156 -0
  611. pygeai/vendor/a2a/server/events/in_memory_queue_manager.py +85 -0
  612. pygeai/vendor/a2a/server/events/queue_manager.py +35 -0
  613. pygeai/vendor/a2a/server/request_handlers/__init__.py +20 -0
  614. pygeai/vendor/a2a/server/request_handlers/default_request_handler.py +435 -0
  615. pygeai/vendor/a2a/server/request_handlers/jsonrpc_handler.py +327 -0
  616. pygeai/vendor/a2a/server/request_handlers/request_handler.py +161 -0
  617. pygeai/vendor/a2a/server/request_handlers/response_helpers.py +133 -0
  618. pygeai/vendor/a2a/server/tasks/__init__.py +20 -0
  619. pygeai/vendor/a2a/server/tasks/inmemory_push_notifier.py +62 -0
  620. pygeai/vendor/a2a/server/tasks/inmemory_task_store.py +51 -0
  621. pygeai/vendor/a2a/server/tasks/push_notifier.py +25 -0
  622. pygeai/vendor/a2a/server/tasks/result_aggregator.py +151 -0
  623. pygeai/vendor/a2a/server/tasks/task_manager.py +253 -0
  624. pygeai/vendor/a2a/server/tasks/task_store.py +22 -0
  625. pygeai/vendor/a2a/server/tasks/task_updater.py +155 -0
  626. pygeai/vendor/a2a/types.py +1624 -0
  627. pygeai/vendor/a2a/utils/__init__.py +40 -0
  628. pygeai/vendor/a2a/utils/artifact.py +72 -0
  629. pygeai/vendor/a2a/utils/errors.py +69 -0
  630. pygeai/vendor/a2a/utils/helpers.py +176 -0
  631. pygeai/vendor/a2a/utils/message.py +83 -0
  632. pygeai/vendor/a2a/utils/task.py +57 -0
  633. pygeai/vendor/a2a/utils/telemetry.py +299 -0
  634. pygeai-0.6.0b15.dist-info/METADATA +205 -0
  635. pygeai-0.6.0b15.dist-info/RECORD +799 -0
  636. {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/WHEEL +1 -1
  637. {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/entry_points.txt +2 -1
  638. {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/licenses/LICENSE +13 -1
  639. pygeai-0.6.0b15.dist-info/top_level.txt +1 -0
  640. docs/geai-proxy/README.md +0 -145
  641. docs/source/conf.py +0 -45
  642. pygeai/tests/core/test_managers.py +0 -233
  643. pygeai-0.1.51b3.dist-info/METADATA +0 -130
  644. pygeai-0.1.51b3.dist-info/RECORD +0 -324
  645. pygeai-0.1.51b3.dist-info/top_level.txt +0 -3
  646. scripts/bump_beta_version.py +0 -56
  647. {scripts → pygeai/analytics}/__init__.py +0 -0
  648. /pygeai/tests/snippets/lab/{c_code_fixer_agent_flow.py → use_cases/c_code_fixer_agent_flow.py} +0 -0
@@ -0,0 +1,738 @@
1
+ Project Management
2
+ ==================
3
+
4
+ The API Reference provides a comprehensive set of tools for managing projects within your organization. You can perform the following actions:
5
+ * Create project: Creates a new project within your organization.
6
+ * Get project data: Retrieves detailed information about a specific project using its Id.
7
+ * Delete project: Deletes an existing project.
8
+ * List projects: Retrieves a list of all projects within your organization. You can choose to retrieve a summary or detailed information for each project.
9
+ * Update project: Updates the name and description of an existing project.
10
+ * Add project member: Sends an invitation email to add a user to a project with specific roles (supports individual and batch invitations).
11
+
12
+ List projects
13
+ ~~~~~~~~~~~~~~
14
+
15
+ Lists existing projects within an organization using `PyGEA </pygeai>`_. You can choose to display a summary or the full project information.
16
+
17
+ To achieve this, you have three options:
18
+
19
+ * `Command Line </docs/source/content/api_reference.rst#command-line>`_
20
+ * `Low-Level Service Layer </docs/source/content/api_reference.rst#low-level-service-layer>`_
21
+ * `High-Level Service Layer </docs/source/content/api_reference.rst#high-level-service-layer>`_
22
+
23
+
24
+ Command line
25
+ ^^^^^^^^^^^^
26
+
27
+ You can list projects using the following command-line options:
28
+
29
+
30
+ List projects with summary details (default)
31
+ ############################################
32
+
33
+ You can list the projects without additional options, as follows:
34
+
35
+ .. code-block:: shell
36
+
37
+ geai org list-projects
38
+
39
+
40
+ List projects with full details
41
+ ###############################
42
+
43
+ Use the optional flag "-d" to indicate "full" detail. The default is summary.
44
+
45
+ .. code-block:: shell
46
+
47
+ geai org list-projects -d full
48
+
49
+
50
+ If we need to work with a different API key, we can indicate an alias. Let's suppose we have an 'admin' alias with an
51
+ organization API key.
52
+
53
+ List projects using a different API token (alias)
54
+ #################################################
55
+
56
+ .. code-block:: shell
57
+
58
+ geai --alias <alias_name> org list-projects
59
+
60
+ Replace `<alias_name>` with the actual alias for your `GEAI_API_KEY` (e.g., "admin").
61
+
62
+ **Note**: Each alias defines a profile with a specific access level. Based on the profile's access level, you will need to use SAIA_ORGANIZATION_APITOKEN or SAIA_PROJECT_APITOKEN as GEAI_API_KEY.
63
+
64
+
65
+ Low level service layer
66
+ ^^^^^^^^^^^^^^^^^^^^^^^
67
+
68
+ Use the following code snippet to list projects with the desired detail level:
69
+
70
+ .. code-block:: python
71
+
72
+ from pygeai.organization.clients import OrganizationClient
73
+
74
+ client = OrganizationClient()
75
+ project_list = client.get_project_list(detail="full") # Use "summary" for less detail
76
+ print(project_list)
77
+
78
+
79
+ High level service layer
80
+ ^^^^^^^^^^^^^^^^^^^^^^^^
81
+
82
+ Use the following code snippets to list projects using the high-level service layer:
83
+
84
+ List projects with default details
85
+ ##################################
86
+
87
+ You can get the list of projects by calling the "get_project_list" method from the OrganizationManager manager class.
88
+
89
+
90
+ .. code-block:: python
91
+
92
+ from pygeai.organization.managers import OrganizationManager
93
+
94
+ manager = OrganizationManager()
95
+
96
+ response = manager.get_project_list()
97
+ print(f"response: {response}")
98
+
99
+
100
+ List projects with full details and a specific alias
101
+ ####################################################
102
+
103
+ Also, you can indicate the alias for the desired environment to use.
104
+
105
+ .. code-block:: python
106
+
107
+ from pygeai.organization.managers import OrganizationManager
108
+
109
+ manager = OrganizationManager(alias="sdkorg")
110
+
111
+ response = manager.get_project_list("full")
112
+ print(f"response: {response}")
113
+
114
+
115
+
116
+ Create project
117
+ ~~~~~~~~~~~~~~
118
+
119
+ Creates a new project in `Globant Enterprise AI <https://wiki.genexus.com/enterprise-ai/wiki?8,Table+of+contents%3AEnterprise+AI>`_ using `PyGEA </pygeai>`_, providing the project name and the administrator's email address. Optionally, you can add a project description and set `usage limits <https://wiki.genexus.com/enterprise-ai/wiki?802,Usage+Limits+API#:~:text=Managing%20quotas%20per%20project>`_.
120
+
121
+ To achieve this, you have three options:
122
+
123
+ * `Command Line </docs/source/content/api_reference.rst#command-line>`_
124
+ * `Low-Level Service Layer </docs/source/content/api_reference.rst#low-level-service-layer>`_
125
+ * `High-Level Service Layer </docs/source/content/api_reference.rst#high-level-service-layer>`_
126
+
127
+ Command line
128
+ ^^^^^^^^^^^^
129
+
130
+ The simplest way to create a project is using the command line:
131
+
132
+ 1. Open your terminal or command prompt.
133
+ 2. Run the following command, replacing the placeholders with your desired values:
134
+
135
+ .. code-block:: shell
136
+
137
+ geai org create-project \
138
+ -n "Project Name" \
139
+ -e "admin@example.com" \
140
+ -d "Project Description"
141
+
142
+ Where:
143
+
144
+ - `n`: Name of your project.
145
+ - `e`: Email address of the project administrator.
146
+ - `d`: Optional description for your project.
147
+
148
+
149
+ Low level service layer
150
+ ^^^^^^^^^^^^^^^^^^^^^^^
151
+
152
+ For more control, you can use the low-level service layer. To do so:
153
+
154
+ 1. Import the necessary modules.
155
+ 2. Create an instance of the `OrganizationClient` class.
156
+ 3. Call the `create_project` method, providing the required information.
157
+
158
+ .. code-block:: python
159
+
160
+ from pygeai.organization.clients import OrganizationClient
161
+
162
+ name="Project Name"
163
+ description="Project Description"
164
+ email="admin@example.com"
165
+
166
+ client = OrganizationClient()
167
+ new_project = client.create_project(name=name, email=email, description=description)
168
+ print(new_project)
169
+
170
+
171
+ High level service layer
172
+ ^^^^^^^^^^^^^^^^^^^^^^^^
173
+
174
+ The high-level service layer offers a more structured approach:
175
+
176
+ 1. Import the necessary modules.
177
+ 2. Create an instance of the `OrganizationManager` class.
178
+ 3. Define the project's usage limits (optional).
179
+ 4. Create a `Project` object with the necessary information.
180
+ 5. Call the `create_project` method of the `OrganizationManager` to create the project.
181
+
182
+ .. code-block:: python
183
+
184
+ from pygeai.organization.managers import OrganizationManager
185
+ from pygeai.core.models import UsageLimit, Project
186
+
187
+ manager = OrganizationManager()
188
+
189
+ usage_limit = UsageLimit(
190
+ subscription_type="Monthly", # Options: Freemium, Daily, Weekly, Monthly
191
+ usage_unit="Requests", # Options: Requests, Cost
192
+ soft_limit=500.0, # Recommended usage limit
193
+ hard_limit=1000.0, # Maximum allowed usage
194
+ renewal_status="Renewable" # Options: Renewable, NonRenewable
195
+ )
196
+
197
+ project = Project(
198
+ name="Project Name",
199
+ description="Project Description",
200
+ email="admin@example.com",
201
+ usage_limit=usage_limit
202
+ )
203
+
204
+
205
+ created_project = manager.create_project(project)
206
+
207
+
208
+ Update project
209
+ ~~~~~~~~~~~~~~
210
+
211
+ Updates an existing project in `Globant Enterprise AI <https://wiki.genexus.com/enterprise-ai/wiki?8,Table+of+contents%3AEnterprise+AI>`_ using `PyGEA </pygeai>`_. You can modify a project's name and description by providing its Id and updated information.
212
+
213
+ To update usage limits, refer to `Managing quotas per project <https://wiki.genexus.com/enterprise-ai/wiki?71,Managing+quotas+per+project>`_.
214
+
215
+ To achieve this, you have three options:
216
+
217
+ * `Command Line </docs/source/content/api_reference.rst#command-line>`_
218
+ * `Low-Level Service Layer </docs/source/content/api_reference.rst#low-level-service-layer>`_
219
+ * `High-Level Service Layer </docs/source/content/api_reference.rst#high-level-service-layer>`_
220
+
221
+ Command line
222
+ ^^^^^^^^^^^^
223
+
224
+ Use the following command to update a project:
225
+
226
+
227
+ .. code-block:: shell
228
+
229
+ geai org update-project \
230
+ -id <project_id> \
231
+ --name "<new_project_name>" \
232
+ --description "<new_project_description>"
233
+
234
+ Replace the placeholders with the actual values:
235
+
236
+ * `<project_id>`: Id of the project you want to update.
237
+ * `<new_project_name>`: New name for the project.
238
+ * `<new_project_description>`: New description for the project.
239
+
240
+ For example:
241
+
242
+ .. code-block:: shell
243
+ geai org update-project \
244
+ --id 12345678-90ab-cdef-1234-567890abcdef \
245
+ --name "Updated Project Name" \
246
+ --description "This is the updated project description"
247
+
248
+
249
+ Low level service layer
250
+ ^^^^^^^^^^^^^^^^^^^^^^^
251
+
252
+ Use the following code snippet to update a project using the low-level service layer:
253
+
254
+
255
+ .. code-block:: python
256
+
257
+ from pygeai.organization.clients import OrganizationClient
258
+
259
+ project_iid="<project_id>"
260
+ name="<new_project_name>"
261
+ description="<new_project_description>"
262
+
263
+ client = OrganizationClient()
264
+ new_project = client.update_project(
265
+ project_id=project_id,
266
+ name=name,
267
+ description=description
268
+ )
269
+ print(new_project)
270
+
271
+ Replace the placeholders with the actual values for your project.
272
+
273
+
274
+ High level service layer
275
+ ^^^^^^^^^^^^^^^^^^^^^^^^
276
+
277
+ Use the following code snippet to update a project using the high-level service layer:
278
+
279
+
280
+ .. code-block:: python
281
+
282
+ from pygeai.organization.managers import OrganizationManager
283
+ from pygeai.core.models import UsageLimit, Project
284
+
285
+ client = OrganizationManager()
286
+
287
+ project = Project(
288
+ id="<project_id>",
289
+ name="<new_project_name>",
290
+ description="<new_project_description>",
291
+ )
292
+
293
+
294
+ project = client.update_project(project)
295
+ print(f"project: {project}")
296
+
297
+
298
+ Replace the placeholders with the actual values for your project.
299
+
300
+
301
+ Delete project
302
+ ~~~~~~~~~~~~~~
303
+
304
+ Deletes an existing project in `Globant Enterprise AI <https://wiki.genexus.com/enterprise-ai/wiki?8,Table+of+contents%3AEnterprise+AI>`_ using `PyGEA </pygeai>`_. You can delete a project by providing its project Id.
305
+
306
+ A successful deletion results in an empty response. If the project doesn't exist or if you lack the necessary permissions, an error occurs.
307
+
308
+ To delete a project, you have three options:
309
+
310
+ * `Command Line </docs/source/content/api_reference.rst#command-line>`_
311
+ * `Low-Level Service Layer </docs/source/content/api_reference.rst#low-level-service-layer>`_
312
+ * `High-Level Service Layer </docs/source/content/api_reference.rst#high-level-service-layer>`_
313
+
314
+ Command line
315
+ ^^^^^^^^^^^^
316
+
317
+ Use the following command to delete a project:
318
+
319
+ .. code-block:: shell
320
+
321
+ geai org delete-project \
322
+ --id <project_id>
323
+
324
+ Replace <`project_id`> with the actual project Id. For example:
325
+
326
+ .. code-block:: shell
327
+ geai org delete-project \
328
+ --id 12345678-90ab-cdef-1234-567890abcdef
329
+
330
+
331
+ Low level service layer
332
+ ^^^^^^^^^^^^^^^^^^^^^^^
333
+
334
+ Use the following code snippet to delete a project using the low-level service layer:
335
+
336
+
337
+ .. code-block:: python
338
+
339
+ from pygeai.organization.clients import OrganizationClient
340
+
341
+ project_id = "<project_id>"
342
+ client = OrganizationClient()
343
+ deleted_project = client.delete_project(project_id=project_id)
344
+ print(deleted_project)
345
+
346
+ Replace <`project_id`> with the actual project Id. For example:
347
+
348
+ .. code-block:: python
349
+
350
+ from pygeai.organization.clients import OrganizationClient
351
+
352
+ project_id="12345678-90ab-cdef-1234-567890abcdef"
353
+ client = OrganizationClient()
354
+ deleted_project = client.delete_project(project_id=project_id)
355
+ print(deleted_project)
356
+
357
+
358
+ High level service layer
359
+ ^^^^^^^^^^^^^^^^^^^^^^^^
360
+
361
+ Use the following code snippet to delete a project using the high-level service layer:
362
+
363
+ .. code-block:: python
364
+
365
+ from pygeai.organization.managers import OrganizationManager
366
+
367
+ manager = OrganizationManager()
368
+
369
+ response = manager.delete_project("<project_id>")
370
+ print(f"response: {response}")
371
+
372
+ Replace <`project_id`> with the actual project Id. For example:
373
+
374
+ .. code-block:: python
375
+
376
+ from pygeai.organization.managers import OrganizationManager
377
+
378
+ manager = OrganizationManager()
379
+ response = manager.delete_project("12345678-90ab-cdef-1234-567890abcdef")
380
+ print(f"response: {response}")
381
+
382
+
383
+ Get project data
384
+ ~~~~~~~~~~~~~~~~
385
+
386
+ Retrieves project data using `PyGEA </pygeai>`_. You can fetch project details by providing the project Id.
387
+
388
+ To achieve this, you have three options:
389
+
390
+ * `Command Line </docs/source/content/api_reference.rst#command-line>`_
391
+ * `Low-Level Service Layer </docs/source/content/api_reference.rst#low-level-service-layer>`_
392
+ * `High-Level Service Layer </docs/source/content/api_reference.rst#high-level-service-layer>`_
393
+
394
+
395
+ Command line
396
+ ^^^^^^^^^^^^
397
+
398
+ Use the following command to retrieve the project:
399
+
400
+ .. code-block:: shell
401
+
402
+ geai org get-project \
403
+ --id <project_id>
404
+
405
+ Replace `<project_id>` with the actual project Id. For example:
406
+
407
+ .. code-block:: shell
408
+
409
+ geai org get-project \
410
+ --id 12345678-90ab-cdef-1234-567890abcdef
411
+
412
+
413
+ Low level service layer
414
+ ^^^^^^^^^^^^^^^^^^^^^^^
415
+
416
+ Use the following code snippet to retrieve project data using the low-level service layer:
417
+
418
+
419
+ .. code-block:: python
420
+
421
+ from pygeai.organization.clients import OrganizationClient
422
+
423
+ project_iid="<project_id>"
424
+ client = OrganizationClient()
425
+ project_data = client.get_project_data(project_id=project_id)
426
+ print(project_data)
427
+
428
+ Replace `<project_id>` with the actual project Id. For example:
429
+
430
+
431
+ .. code-block:: python
432
+
433
+ from pygeai.organization.clients import OrganizationClient
434
+
435
+ project_id="12345678-90ab-cdef-1234-567890abcdef"
436
+ client = OrganizationClient()
437
+ project_data = client.get_project_data(project_id=project_id)
438
+ print(project_data)
439
+
440
+
441
+ High level service layer
442
+ ^^^^^^^^^^^^^^^^^^^^^^^^
443
+
444
+ Use the following code snippet to retrieve project data using the high-level service layer:
445
+
446
+
447
+ .. code-block:: python
448
+
449
+ from pygeai.organization.managers import OrganizationManager
450
+
451
+ manager = OrganizationManager(alias="sdkorg")
452
+
453
+ project = manager.get_project_data(project_iid="<project_id>")
454
+ print(f"project: {project}")
455
+
456
+
457
+ Replace `<project_id>` with the actual project Id. For example:
458
+
459
+ .. code-block:: python
460
+
461
+ from pygeai.organization.managers import OrganizationManager
462
+
463
+ manager = OrganizationManager(alias="sdkorg")
464
+ project = manager.get_project_data(project_id="12345678-90ab-cdef-1234-567890abcdef")
465
+ print(f"project: {project}")
466
+
467
+
468
+ Member Management
469
+ =================
470
+ You can manage project members to control access and permissions within your projects.
471
+
472
+ * Add Project Member: Sends an invitation email to add a user to a project with specific roles.
473
+
474
+ Add Project Member
475
+ ~~~~~~~~~~~~~~~~~~
476
+
477
+ Sends an invitation email to add a user to a project in `Globant Enterprise AI <https://wiki.genexus.com/enterprise-ai/wiki?8,Table+of+contents%3AEnterprise+AI>`_ using `PyGEA </pygeai>`_. You can add individual users or process multiple invitations via a CSV file (batch mode).
478
+
479
+ To achieve this, you have three options:
480
+
481
+ * `Command Line </docs/source/content/api_reference.rst#command-line>`_
482
+ * `Low-Level Service Layer </docs/source/content/api_reference.rst#low-level-service-layer>`_
483
+ * `High-Level Service Layer </docs/source/content/api_reference.rst#high-level-service-layer>`_
484
+
485
+ Command line
486
+ ^^^^^^^^^^^^
487
+
488
+ Add a single user to a project
489
+ ###############################
490
+
491
+ Use the following command to invite a user to a project:
492
+
493
+ .. code-block:: shell
494
+
495
+ geai org add-project-member \
496
+ --project-id <project_id> \
497
+ --email <user_email> \
498
+ --roles "<role1>,<role2>"
499
+
500
+ Replace the placeholders with the actual values:
501
+
502
+ * `<project_id>`: Id of the project.
503
+ * `<user_email>`: Email address of the user to invite.
504
+ * `<role1>,<role2>`: Comma-separated list of roles (e.g., "Project member,Project administrator").
505
+
506
+ For example:
507
+
508
+ .. code-block:: shell
509
+
510
+ geai org add-project-member \
511
+ --project-id 1956c032-3c66-4435-acb8-6a06e52f819f \
512
+ --email user@example.com \
513
+ --roles "Project member,Project administrator"
514
+
515
+ You can also use the short alias:
516
+
517
+ .. code-block:: shell
518
+
519
+ geai org apm \
520
+ --project-id 1956c032-3c66-4435-acb8-6a06e52f819f \
521
+ --email user@example.com \
522
+ --roles "Project member"
523
+
524
+
525
+ Add multiple users via CSV file (batch mode)
526
+ #############################################
527
+
528
+ Use the `-b` or `--batch` flag to process multiple invitations from a CSV file:
529
+
530
+ .. code-block:: shell
531
+
532
+ geai org add-project-member --batch <path_to_csv_file>
533
+
534
+ The CSV file format should be:
535
+
536
+ .. code-block:: text
537
+
538
+ project_id,email,role1,role2,...
539
+ 1956c032-3c66-4435-acb8-6a06e52f819f,user1@example.com,Project member
540
+ 1956c032-3c66-4435-acb8-6a06e52f819f,user2@example.com,Project member,Project administrator
541
+
542
+ For example:
543
+
544
+ .. code-block:: shell
545
+
546
+ geai org add-project-member --batch project_members.csv
547
+
548
+ The command will process each line and report successful and failed invitations.
549
+
550
+
551
+ Low level service layer
552
+ ^^^^^^^^^^^^^^^^^^^^^^^
553
+
554
+ Use the following code snippet to invite a user to a project using the low-level service layer:
555
+
556
+ .. code-block:: python
557
+
558
+ from pygeai.organization.clients import OrganizationClient
559
+
560
+ project_id = "<project_id>"
561
+ email = "<user_email>"
562
+ roles = ["Project member", "Project administrator"]
563
+
564
+ client = OrganizationClient()
565
+ result = client.add_project_member(project_id=project_id, email=email, roles=roles)
566
+ print(result)
567
+
568
+ Replace the placeholders with the actual values. For example:
569
+
570
+ .. code-block:: python
571
+
572
+ from pygeai.organization.clients import OrganizationClient
573
+
574
+ project_id = "1956c032-3c66-4435-acb8-6a06e52f819f"
575
+ email = "user@example.com"
576
+ roles = ["Project member", "Project administrator"]
577
+
578
+ client = OrganizationClient()
579
+ result = client.add_project_member(project_id=project_id, email=email, roles=roles)
580
+ print(result)
581
+
582
+ For batch processing, you can use:
583
+
584
+ .. code-block:: python
585
+
586
+ import csv
587
+ from pygeai.organization.clients import OrganizationClient
588
+
589
+ client = OrganizationClient()
590
+
591
+ with open('project_members.csv', 'r') as file:
592
+ csv_reader = csv.reader(file)
593
+ for row in csv_reader:
594
+ if len(row) >= 3:
595
+ project_id = row[0]
596
+ email = row[1]
597
+ roles = row[2:]
598
+ try:
599
+ result = client.add_project_member(
600
+ project_id=project_id,
601
+ email=email,
602
+ roles=roles
603
+ )
604
+ print(f"✓ Invited {email} to project {project_id}")
605
+ except Exception as e:
606
+ print(f"✗ Failed to invite {email}: {e}")
607
+
608
+
609
+ High level service layer
610
+ ^^^^^^^^^^^^^^^^^^^^^^^^
611
+
612
+ Use the following code snippet to invite a user to a project using the high-level service layer:
613
+
614
+ .. code-block:: python
615
+
616
+ from pygeai.organization.managers import OrganizationManager
617
+
618
+ manager = OrganizationManager()
619
+
620
+ project_id = "<project_id>"
621
+ email = "<user_email>"
622
+ roles = ["Project member", "Project administrator"]
623
+
624
+ response = manager.add_project_member(
625
+ project_id=project_id,
626
+ email=email,
627
+ roles=roles
628
+ )
629
+ print(f"response: {response}")
630
+
631
+ Replace the placeholders with the actual values. For example:
632
+
633
+ .. code-block:: python
634
+
635
+ from pygeai.organization.managers import OrganizationManager
636
+
637
+ manager = OrganizationManager()
638
+
639
+ project_id = "1956c032-3c66-4435-acb8-6a06e52f819f"
640
+ email = "user@example.com"
641
+ roles = ["Project member", "Project administrator"]
642
+
643
+ response = manager.add_project_member(
644
+ project_id=project_id,
645
+ email=email,
646
+ roles=roles
647
+ )
648
+ print(f"response: {response}")
649
+
650
+
651
+ Token Management
652
+ ================
653
+ You can manage project tokens, which are essential for authentication and authorization when interacting with specific projects.
654
+
655
+ * Get Project Tokens: Retrieves the tokens associated with a specific project.
656
+
657
+ Get Project Tokens
658
+ ~~~~~~~~~~~~~~~~~~
659
+
660
+ Retrieves the tokens associated with a specific project using PyGEA. You can fetch these tokens by providing the project Id.
661
+
662
+ To achieve this, you have three options:
663
+
664
+ * `Command Line </docs/source/content/api_reference.rst#command-line>`_
665
+ * `Low-Level Service Layer </docs/source/content/api_reference.rst#low-level-service-layer>`_
666
+ * `High-Level Service Layer </docs/source/content/api_reference.rst#high-level-service-layer>`_
667
+
668
+ Command line
669
+ ^^^^^^^^^^^^
670
+
671
+ Use the following command to retrieve project tokens:
672
+
673
+ .. code-block:: shell
674
+ geai org get-tokens --id <project_id>
675
+
676
+ Replace `<project_id>` with the actual project Id. For example:
677
+
678
+ .. code-block:: shell
679
+ geai org get-tokens --id 12345678-90ab-cdef-1234-567890abcdef
680
+
681
+
682
+ Low level service layer
683
+ ^^^^^^^^^^^^^^^^^^^^^^^
684
+
685
+ Use the following code snippet to retrieve project tokens using the low-level service layer:
686
+
687
+
688
+ .. code-block:: python
689
+
690
+ from pygeai.organization.clients import OrganizationClient
691
+
692
+ project_id = "<project_id>"
693
+
694
+ client = OrganizationClient()
695
+ tokens = client.get_project_tokens(project_id=project_id)
696
+ print(tokens)
697
+
698
+ Replace `<project_id>` with the actual project Id. For example:
699
+
700
+ .. code-block:: python
701
+
702
+ from pygeai.organization.clients import OrganizationClient
703
+
704
+ project_id = "12345678-90ab-cdef-1234-567890abcdef"
705
+
706
+ client = OrganizationClient()
707
+ tokens = client.get_project_tokens(project_id=project_id)
708
+ print(tokens)
709
+
710
+ High level service layer
711
+ ^^^^^^^^^^^^^^^^^^^^^^^^
712
+
713
+ Use the following code snippet to retrieve project tokens using the high-level service layer:
714
+
715
+ .. code-block:: python
716
+
717
+ from pygeai.organization.managers import OrganizationManager
718
+ from pygeai.core.base.models import ProjectTokensResponse
719
+
720
+ client = OrganizationManager()
721
+ project_id = "<project_id>"
722
+
723
+ tokens: ProjectTokensResponse = client.get_project_tokens(project_id=project_id)
724
+ print(f"tokens: {tokens}")
725
+
726
+ Replace `<project_id>` with the actual project Id. For example:
727
+
728
+ .. code-block:: python
729
+
730
+ from pygeai.organization.managers import OrganizationManager
731
+ from pygeai.core.models import ProjectTokensResponse
732
+
733
+ client = OrganizationManager()
734
+
735
+ project_id = "12345678-90ab-cdef-1234-567890abcdef"
736
+
737
+ tokens: ProjectTokensResponse = client.get_project_tokens(project_id=project_id)
738
+ print(f"tokens: {tokens}")