From 88bb8c0d4ceb86f9af92e6d4f3b525af2b8def2e Mon Sep 17 00:00:00 2001 From: Robert Date: Thu, 28 May 2026 20:25:06 -0300 Subject: [PATCH] Commit pending workspace updates --- .gitignore | 1 + README.md | 2 +- agent.py | 391 ++++++++- openapi.json | 2376 ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 2767 insertions(+), 3 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..930cce6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.codegraph/ diff --git a/README.md b/README.md index 331fda0..b392749 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Generated A2APack agent for Tasks API. - Source OpenAPI: https://tasks.a2acloud.io/openapi.json -- Generated operations: 12 +- Generated operations: 32 - Main skill: `auto` The generated code is intentionally editable. Tune prompts, operation diff --git a/agent.py b/agent.py index 91cb196..3cf5a1c 100644 --- a/agent.py +++ b/agent.py @@ -27,7 +27,7 @@ from a2a_pack import ( DEFAULT_BASE_URL = "https://tasks.a2acloud.io" -OPERATIONS = json.loads("{\n \"create_epic\": {\n \"description\": \"Create Epic\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"create_epic\",\n \"parameters\": [],\n \"path\": \"/api/epics\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/EpicCreate\"\n },\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"create_epic\",\n \"summary\": \"Create Epic\",\n \"tags\": [\n \"Epics\"\n ]\n },\n \"create_task\": {\n \"description\": \"Create Task\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"create_task\",\n \"parameters\": [],\n \"path\": \"/api/tasks\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/TaskCreate\"\n },\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"create_task\",\n \"summary\": \"Create Task\",\n \"tags\": [\n \"Tasks\"\n ]\n },\n \"delete_epic\": {\n \"description\": \"Delete Epic\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"delete_epic\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"epic_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Epic Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/epics/{epic_id}\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"delete_epic\",\n \"summary\": \"Delete Epic\",\n \"tags\": [\n \"Epics\"\n ]\n },\n \"delete_task\": {\n \"description\": \"Delete Task\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"delete_task\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"task_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Task Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/tasks/{task_id}\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"delete_task\",\n \"summary\": \"Delete Task\",\n \"tags\": [\n \"Tasks\"\n ]\n },\n \"get_epic\": {\n \"description\": \"Get Epic\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"get_epic\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"epic_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Epic Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/epics/{epic_id}\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"get_epic\",\n \"summary\": \"Get Epic\",\n \"tags\": [\n \"Epics\"\n ]\n },\n \"get_task\": {\n \"description\": \"Get Task\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"get_task\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"task_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Task Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/tasks/{task_id}\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"get_task\",\n \"summary\": \"Get Task\",\n \"tags\": [\n \"Tasks\"\n ]\n },\n \"get_tasks_health\": {\n \"description\": \"Healthz\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"get_tasks_health\",\n \"parameters\": [],\n \"path\": \"/healthz\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"get_tasks_health\",\n \"summary\": \"Healthz\",\n \"tags\": [\n \"Health\"\n ]\n },\n \"list_epic_tasks\": {\n \"description\": \"List Epic Tasks\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"list_epic_tasks\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"epic_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Epic Id\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"status\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"enum\": [\n \"todo\",\n \"in_progress\",\n \"done\",\n \"canceled\"\n ],\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Status\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"q\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"maxLength\": 120,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Q\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"due_before\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Due Before\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 50,\n \"maximum\": 200,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"offset\",\n \"required\": false,\n \"schema\": {\n \"default\": 0,\n \"minimum\": 0,\n \"title\": \"Offset\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/epics/{epic_id}/tasks\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"list_epic_tasks\",\n \"summary\": \"List Epic Tasks\",\n \"tags\": [\n \"Epics\"\n ]\n },\n \"list_epics\": {\n \"description\": \"List Epics\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"list_epics\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"status\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"enum\": [\n \"todo\",\n \"in_progress\",\n \"done\",\n \"canceled\"\n ],\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Status\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"q\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"maxLength\": 120,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Q\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"due_before\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Due Before\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 50,\n \"maximum\": 200,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"offset\",\n \"required\": false,\n \"schema\": {\n \"default\": 0,\n \"minimum\": 0,\n \"title\": \"Offset\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/epics\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"list_epics\",\n \"summary\": \"List Epics\",\n \"tags\": [\n \"Epics\"\n ]\n },\n \"list_tasks\": {\n \"description\": \"List Tasks\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"list_tasks\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"status\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"enum\": [\n \"todo\",\n \"in_progress\",\n \"done\",\n \"canceled\"\n ],\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Status\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"q\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"maxLength\": 120,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Q\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"due_before\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Due Before\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"epic_id\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"maxLength\": 36,\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Epic Id\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 50,\n \"maximum\": 200,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"offset\",\n \"required\": false,\n \"schema\": {\n \"default\": 0,\n \"minimum\": 0,\n \"title\": \"Offset\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/tasks\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"list_tasks\",\n \"summary\": \"List Tasks\",\n \"tags\": [\n \"Tasks\"\n ]\n },\n \"update_epic\": {\n \"description\": \"Update Epic\",\n \"destructive\": true,\n \"method\": \"PATCH\",\n \"operation_id\": \"update_epic\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"epic_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Epic Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/epics/{epic_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/EpicUpdate\"\n },\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"update_epic\",\n \"summary\": \"Update Epic\",\n \"tags\": [\n \"Epics\"\n ]\n },\n \"update_task\": {\n \"description\": \"Update Task\",\n \"destructive\": true,\n \"method\": \"PATCH\",\n \"operation_id\": \"update_task\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"task_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Task Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/tasks/{task_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/TaskUpdate\"\n },\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"update_task\",\n \"summary\": \"Update Task\",\n \"tags\": [\n \"Tasks\"\n ]\n }\n}") +OPERATIONS = json.loads("{\n \"create_crm_entity\": {\n \"description\": \"Create Crm Entity\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"create_crm_entity\",\n \"parameters\": [],\n \"path\": \"/api/crm/entities\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CrmEntityCreate\"\n },\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"create_crm_entity\",\n \"summary\": \"Create Crm Entity\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"create_crm_pipeline\": {\n \"description\": \"Create Crm Pipeline\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"create_crm_pipeline\",\n \"parameters\": [],\n \"path\": \"/api/crm/pipelines\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CrmPipelineCreate\"\n },\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"create_crm_pipeline\",\n \"summary\": \"Create Crm Pipeline\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"create_crm_pipeline_entry\": {\n \"description\": \"Create Crm Pipeline Entry\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"create_crm_pipeline_entry\",\n \"parameters\": [],\n \"path\": \"/api/crm/pipeline-entries\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CrmPipelineEntryCreate\"\n },\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"create_crm_pipeline_entry\",\n \"summary\": \"Create Crm Pipeline Entry\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"create_crm_pipeline_stage\": {\n \"description\": \"Create Crm Pipeline Stage\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"create_crm_pipeline_stage\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"pipeline_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Pipeline Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/crm/pipelines/{pipeline_id}/stages\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CrmPipelineStageCreate\"\n },\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"create_crm_pipeline_stage\",\n \"summary\": \"Create Crm Pipeline Stage\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"create_epic\": {\n \"description\": \"Create Epic\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"create_epic\",\n \"parameters\": [],\n \"path\": \"/api/epics\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/EpicCreate\"\n },\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"create_epic\",\n \"summary\": \"Create Epic\",\n \"tags\": [\n \"Epics\"\n ]\n },\n \"create_task\": {\n \"description\": \"Create Task\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"create_task\",\n \"parameters\": [],\n \"path\": \"/api/tasks\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/TaskCreate\"\n },\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"create_task\",\n \"summary\": \"Create Task\",\n \"tags\": [\n \"Tasks\"\n ]\n },\n \"delete_crm_entity\": {\n \"description\": \"Delete Crm Entity\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"delete_crm_entity\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"entity_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Entity Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/crm/entities/{entity_id}\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"delete_crm_entity\",\n \"summary\": \"Delete Crm Entity\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"delete_crm_pipeline\": {\n \"description\": \"Delete Crm Pipeline\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"delete_crm_pipeline\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"pipeline_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Pipeline Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/crm/pipelines/{pipeline_id}\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"delete_crm_pipeline\",\n \"summary\": \"Delete Crm Pipeline\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"delete_crm_pipeline_entry\": {\n \"description\": \"Delete Crm Pipeline Entry\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"delete_crm_pipeline_entry\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"entry_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Entry Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/crm/pipeline-entries/{entry_id}\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"delete_crm_pipeline_entry\",\n \"summary\": \"Delete Crm Pipeline Entry\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"delete_crm_pipeline_stage\": {\n \"description\": \"Delete Crm Pipeline Stage\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"delete_crm_pipeline_stage\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"stage_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Stage Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/crm/pipeline-stages/{stage_id}\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"delete_crm_pipeline_stage\",\n \"summary\": \"Delete Crm Pipeline Stage\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"delete_epic\": {\n \"description\": \"Delete Epic\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"delete_epic\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"epic_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Epic Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/epics/{epic_id}\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"delete_epic\",\n \"summary\": \"Delete Epic\",\n \"tags\": [\n \"Epics\"\n ]\n },\n \"delete_task\": {\n \"description\": \"Delete Task\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"delete_task\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"task_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Task Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/tasks/{task_id}\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"delete_task\",\n \"summary\": \"Delete Task\",\n \"tags\": [\n \"Tasks\"\n ]\n },\n \"get_crm_entity\": {\n \"description\": \"Get Crm Entity\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"get_crm_entity\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"entity_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Entity Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/crm/entities/{entity_id}\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"get_crm_entity\",\n \"summary\": \"Get Crm Entity\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"get_crm_pipeline\": {\n \"description\": \"Get Crm Pipeline\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"get_crm_pipeline\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"pipeline_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Pipeline Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/crm/pipelines/{pipeline_id}\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"get_crm_pipeline\",\n \"summary\": \"Get Crm Pipeline\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"get_crm_pipeline_entry\": {\n \"description\": \"Get Crm Pipeline Entry\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"get_crm_pipeline_entry\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"entry_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Entry Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/crm/pipeline-entries/{entry_id}\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"get_crm_pipeline_entry\",\n \"summary\": \"Get Crm Pipeline Entry\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"get_crm_pipeline_stage\": {\n \"description\": \"Get Crm Pipeline Stage\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"get_crm_pipeline_stage\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"stage_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Stage Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/crm/pipeline-stages/{stage_id}\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"get_crm_pipeline_stage\",\n \"summary\": \"Get Crm Pipeline Stage\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"get_epic\": {\n \"description\": \"Get Epic\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"get_epic\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"epic_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Epic Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/epics/{epic_id}\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"get_epic\",\n \"summary\": \"Get Epic\",\n \"tags\": [\n \"Epics\"\n ]\n },\n \"get_task\": {\n \"description\": \"Get Task\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"get_task\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"task_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Task Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/tasks/{task_id}\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"get_task\",\n \"summary\": \"Get Task\",\n \"tags\": [\n \"Tasks\"\n ]\n },\n \"get_tasks_health\": {\n \"description\": \"Healthz\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"get_tasks_health\",\n \"parameters\": [],\n \"path\": \"/healthz\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"get_tasks_health\",\n \"summary\": \"Healthz\",\n \"tags\": [\n \"Health\"\n ]\n },\n \"list_crm_entities\": {\n \"description\": \"List Crm Entities\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"list_crm_entities\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"kind\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"maxLength\": 32,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Kind\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"q\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"maxLength\": 120,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Q\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 50,\n \"maximum\": 200,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"offset\",\n \"required\": false,\n \"schema\": {\n \"default\": 0,\n \"minimum\": 0,\n \"title\": \"Offset\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/crm/entities\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"list_crm_entities\",\n \"summary\": \"List Crm Entities\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"list_crm_pipeline_entries\": {\n \"description\": \"List Crm Pipeline Entries\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"list_crm_pipeline_entries\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"pipeline_id\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"maxLength\": 36,\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Pipeline Id\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"stage_id\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"maxLength\": 36,\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Stage Id\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"entity_id\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"maxLength\": 36,\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Entity Id\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"status\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"enum\": [\n \"active\",\n \"won\",\n \"lost\",\n \"archived\"\n ],\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Status\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 50,\n \"maximum\": 200,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"offset\",\n \"required\": false,\n \"schema\": {\n \"default\": 0,\n \"minimum\": 0,\n \"title\": \"Offset\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/crm/pipeline-entries\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"list_crm_pipeline_entries\",\n \"summary\": \"List Crm Pipeline Entries\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"list_crm_pipeline_stages\": {\n \"description\": \"List Crm Pipeline Stages\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"list_crm_pipeline_stages\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"pipeline_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Pipeline Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/crm/pipelines/{pipeline_id}/stages\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"list_crm_pipeline_stages\",\n \"summary\": \"List Crm Pipeline Stages\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"list_crm_pipelines\": {\n \"description\": \"List Crm Pipelines\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"list_crm_pipelines\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"kind\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"maxLength\": 32,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Kind\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"entity_kind\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"maxLength\": 32,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Entity Kind\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"q\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"maxLength\": 120,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Q\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 50,\n \"maximum\": 200,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"offset\",\n \"required\": false,\n \"schema\": {\n \"default\": 0,\n \"minimum\": 0,\n \"title\": \"Offset\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/crm/pipelines\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"list_crm_pipelines\",\n \"summary\": \"List Crm Pipelines\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"list_epic_tasks\": {\n \"description\": \"List Epic Tasks\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"list_epic_tasks\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"epic_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Epic Id\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"status\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"enum\": [\n \"todo\",\n \"in_progress\",\n \"done\",\n \"canceled\"\n ],\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Status\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"q\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"maxLength\": 120,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Q\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"due_before\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Due Before\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 50,\n \"maximum\": 200,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"offset\",\n \"required\": false,\n \"schema\": {\n \"default\": 0,\n \"minimum\": 0,\n \"title\": \"Offset\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/epics/{epic_id}/tasks\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"list_epic_tasks\",\n \"summary\": \"List Epic Tasks\",\n \"tags\": [\n \"Epics\"\n ]\n },\n \"list_epics\": {\n \"description\": \"List Epics\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"list_epics\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"status\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"enum\": [\n \"todo\",\n \"in_progress\",\n \"done\",\n \"canceled\"\n ],\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Status\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"q\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"maxLength\": 120,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Q\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"due_before\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Due Before\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 50,\n \"maximum\": 200,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"offset\",\n \"required\": false,\n \"schema\": {\n \"default\": 0,\n \"minimum\": 0,\n \"title\": \"Offset\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/epics\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"list_epics\",\n \"summary\": \"List Epics\",\n \"tags\": [\n \"Epics\"\n ]\n },\n \"list_tasks\": {\n \"description\": \"List Tasks\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"list_tasks\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"status\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"enum\": [\n \"todo\",\n \"in_progress\",\n \"done\",\n \"canceled\"\n ],\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Status\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"q\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"maxLength\": 120,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Q\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"due_before\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Due Before\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"epic_id\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"maxLength\": 36,\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Epic Id\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"crm_entity_id\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"maxLength\": 36,\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Crm Entity Id\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"crm_pipeline_entry_id\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"maxLength\": 36,\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Crm Pipeline Entry Id\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 50,\n \"maximum\": 200,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"offset\",\n \"required\": false,\n \"schema\": {\n \"default\": 0,\n \"minimum\": 0,\n \"title\": \"Offset\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/tasks\",\n \"request_body\": null,\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"list_tasks\",\n \"summary\": \"List Tasks\",\n \"tags\": [\n \"Tasks\"\n ]\n },\n \"update_crm_entity\": {\n \"description\": \"Update Crm Entity\",\n \"destructive\": true,\n \"method\": \"PATCH\",\n \"operation_id\": \"update_crm_entity\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"entity_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Entity Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/crm/entities/{entity_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CrmEntityUpdate\"\n },\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"update_crm_entity\",\n \"summary\": \"Update Crm Entity\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"update_crm_pipeline\": {\n \"description\": \"Update Crm Pipeline\",\n \"destructive\": true,\n \"method\": \"PATCH\",\n \"operation_id\": \"update_crm_pipeline\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"pipeline_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Pipeline Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/crm/pipelines/{pipeline_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CrmPipelineUpdate\"\n },\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"update_crm_pipeline\",\n \"summary\": \"Update Crm Pipeline\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"update_crm_pipeline_entry\": {\n \"description\": \"Update Crm Pipeline Entry\",\n \"destructive\": true,\n \"method\": \"PATCH\",\n \"operation_id\": \"update_crm_pipeline_entry\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"entry_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Entry Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/crm/pipeline-entries/{entry_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CrmPipelineEntryUpdate\"\n },\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"update_crm_pipeline_entry\",\n \"summary\": \"Update Crm Pipeline Entry\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"update_crm_pipeline_stage\": {\n \"description\": \"Update Crm Pipeline Stage\",\n \"destructive\": true,\n \"method\": \"PATCH\",\n \"operation_id\": \"update_crm_pipeline_stage\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"stage_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Stage Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/crm/pipeline-stages/{stage_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CrmPipelineStageUpdate\"\n },\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"update_crm_pipeline_stage\",\n \"summary\": \"Update Crm Pipeline Stage\",\n \"tags\": [\n \"CRM\"\n ]\n },\n \"update_epic\": {\n \"description\": \"Update Epic\",\n \"destructive\": true,\n \"method\": \"PATCH\",\n \"operation_id\": \"update_epic\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"epic_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Epic Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/epics/{epic_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/EpicUpdate\"\n },\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"update_epic\",\n \"summary\": \"Update Epic\",\n \"tags\": [\n \"Epics\"\n ]\n },\n \"update_task\": {\n \"description\": \"Update Task\",\n \"destructive\": true,\n \"method\": \"PATCH\",\n \"operation_id\": \"update_task\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"task_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Task Id\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/tasks/{task_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/TaskUpdate\"\n },\n \"security\": [\n {\n \"bearerAuth\": []\n },\n {\n \"apiKeyAuth\": []\n }\n ],\n \"skill_name\": \"update_task\",\n \"summary\": \"Update Task\",\n \"tags\": [\n \"Tasks\"\n ]\n }\n}") ROOT_SECURITY = json.loads("[]") SECURITY_SCHEMES = json.loads("{\n \"apiKeyAuth\": {\n \"description\": \"Use the configured `TASKS_API_KEY` value.\",\n \"in\": \"header\",\n \"name\": \"x-api-key\",\n \"type\": \"apiKey\"\n },\n \"bearerAuth\": {\n \"description\": \"Use `Authorization: Bearer $TASKS_API_KEY`.\",\n \"scheme\": \"bearer\",\n \"type\": \"http\"\n }\n}") SECURITY_FIELDS = json.loads("{\n \"apiKeyAuth\": {\n \"field\": \"X_API_KEY\",\n \"kind\": \"apiKey\",\n \"location\": \"header\",\n \"name\": \"x-api-key\"\n },\n \"bearerAuth\": {\n \"field\": \"BEARERAUTH_TOKEN\",\n \"kind\": \"http\",\n \"scheme\": \"bearer\"\n }\n}") @@ -130,6 +130,386 @@ class TasksApi(A2AAgent): body=body, ) + @skill( + name="list_crm_entities", + description="GET /api/crm/entities - List Crm Entities", + tags=('CRM',), + timeout_seconds=60, + ) + async def list_crm_entities( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "list_crm_entities", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="create_crm_entity", + description="POST /api/crm/entities - Create Crm Entity", + tags=('CRM',), + timeout_seconds=120, + ) + async def create_crm_entity( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "create_crm_entity", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="get_crm_entity", + description="GET /api/crm/entities/{entity_id} - Get Crm Entity", + tags=('CRM',), + timeout_seconds=60, + ) + async def get_crm_entity( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "get_crm_entity", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="update_crm_entity", + description="PATCH /api/crm/entities/{entity_id} - Update Crm Entity", + tags=('CRM',), + timeout_seconds=120, + ) + async def update_crm_entity( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "update_crm_entity", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="delete_crm_entity", + description="DELETE /api/crm/entities/{entity_id} - Delete Crm Entity", + tags=('CRM',), + timeout_seconds=120, + ) + async def delete_crm_entity( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "delete_crm_entity", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="list_crm_pipelines", + description="GET /api/crm/pipelines - List Crm Pipelines", + tags=('CRM',), + timeout_seconds=60, + ) + async def list_crm_pipelines( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "list_crm_pipelines", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="create_crm_pipeline", + description="POST /api/crm/pipelines - Create Crm Pipeline", + tags=('CRM',), + timeout_seconds=120, + ) + async def create_crm_pipeline( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "create_crm_pipeline", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="get_crm_pipeline", + description="GET /api/crm/pipelines/{pipeline_id} - Get Crm Pipeline", + tags=('CRM',), + timeout_seconds=60, + ) + async def get_crm_pipeline( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "get_crm_pipeline", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="update_crm_pipeline", + description="PATCH /api/crm/pipelines/{pipeline_id} - Update Crm Pipeline", + tags=('CRM',), + timeout_seconds=120, + ) + async def update_crm_pipeline( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "update_crm_pipeline", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="delete_crm_pipeline", + description="DELETE /api/crm/pipelines/{pipeline_id} - Delete Crm Pipeline", + tags=('CRM',), + timeout_seconds=120, + ) + async def delete_crm_pipeline( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "delete_crm_pipeline", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="list_crm_pipeline_stages", + description="GET /api/crm/pipelines/{pipeline_id}/stages - List Crm Pipeline Stages", + tags=('CRM',), + timeout_seconds=60, + ) + async def list_crm_pipeline_stages( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "list_crm_pipeline_stages", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="create_crm_pipeline_stage", + description="POST /api/crm/pipelines/{pipeline_id}/stages - Create Crm Pipeline Stage", + tags=('CRM',), + timeout_seconds=120, + ) + async def create_crm_pipeline_stage( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "create_crm_pipeline_stage", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="get_crm_pipeline_stage", + description="GET /api/crm/pipeline-stages/{stage_id} - Get Crm Pipeline Stage", + tags=('CRM',), + timeout_seconds=60, + ) + async def get_crm_pipeline_stage( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "get_crm_pipeline_stage", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="update_crm_pipeline_stage", + description="PATCH /api/crm/pipeline-stages/{stage_id} - Update Crm Pipeline Stage", + tags=('CRM',), + timeout_seconds=120, + ) + async def update_crm_pipeline_stage( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "update_crm_pipeline_stage", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="delete_crm_pipeline_stage", + description="DELETE /api/crm/pipeline-stages/{stage_id} - Delete Crm Pipeline Stage", + tags=('CRM',), + timeout_seconds=120, + ) + async def delete_crm_pipeline_stage( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "delete_crm_pipeline_stage", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="list_crm_pipeline_entries", + description="GET /api/crm/pipeline-entries - List Crm Pipeline Entries", + tags=('CRM',), + timeout_seconds=60, + ) + async def list_crm_pipeline_entries( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "list_crm_pipeline_entries", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="create_crm_pipeline_entry", + description="POST /api/crm/pipeline-entries - Create Crm Pipeline Entry", + tags=('CRM',), + timeout_seconds=120, + ) + async def create_crm_pipeline_entry( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "create_crm_pipeline_entry", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="get_crm_pipeline_entry", + description="GET /api/crm/pipeline-entries/{entry_id} - Get Crm Pipeline Entry", + tags=('CRM',), + timeout_seconds=60, + ) + async def get_crm_pipeline_entry( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "get_crm_pipeline_entry", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="update_crm_pipeline_entry", + description="PATCH /api/crm/pipeline-entries/{entry_id} - Update Crm Pipeline Entry", + tags=('CRM',), + timeout_seconds=120, + ) + async def update_crm_pipeline_entry( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "update_crm_pipeline_entry", + parameters=parameters or {}, + body=body, + ) + + @skill( + name="delete_crm_pipeline_entry", + description="DELETE /api/crm/pipeline-entries/{entry_id} - Delete Crm Pipeline Entry", + tags=('CRM',), + timeout_seconds=120, + ) + async def delete_crm_pipeline_entry( + self, + ctx: RunContext, + parameters: dict[str, Any] | None = None, + body: Any | None = None, + ) -> dict[str, Any]: + return await self._request( + ctx, + "delete_crm_pipeline_entry", + parameters=parameters or {}, + body=body, + ) + @skill( name="list_epics", description="GET /api/epics - List Epics", @@ -371,6 +751,7 @@ class TasksApi(A2AAgent): "Call tools to get real results. Do not invent API responses.", "For write, update, or delete operations, explain the intended action before calling the tool.", "If an operation reports missing consumer setup, tell the user which setup field is required.", + "If an operation returns 404, 405, 410, or a schema/validation error that suggests the live API no longer matches these tools, tell the user this generated agent may need to be refreshed from the latest OpenAPI spec and ask whether they want to refresh it.", "", "Available operations:", ] @@ -436,12 +817,18 @@ class TasksApi(A2AAgent): except ValueError: payload = response.text if response.status_code >= 400: - return { + out = { "ok": False, "status_code": response.status_code, "operation_id": operation_id, "error": payload, } + if response.status_code in {404, 405, 410, 422}: + out["stale_openapi_hint"] = ( + "This generated OpenAPI agent may be stale. Ask the user " + "whether they want to refresh it from the latest OpenAPI spec." + ) + return out return { "ok": True, "status_code": response.status_code, diff --git a/openapi.json b/openapi.json index 3b21601..6bf52f0 100644 --- a/openapi.json +++ b/openapi.json @@ -1,6 +1,1048 @@ { "components": { "schemas": { + "CrmEntityCreate": { + "properties": { + "custom_fields": { + "additionalProperties": true, + "title": "Custom Fields", + "type": "object" + }, + "description": { + "default": "", + "maxLength": 10000, + "title": "Description", + "type": "string" + }, + "email": { + "anyOf": [ + { + "maxLength": 320, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Email" + }, + "kind": { + "default": "investor", + "maxLength": 32, + "minLength": 1, + "title": "Kind", + "type": "string" + }, + "labels": { + "items": { + "type": "string" + }, + "maxItems": 20, + "title": "Labels", + "type": "array" + }, + "name": { + "maxLength": 240, + "minLength": 1, + "title": "Name", + "type": "string" + }, + "phone": { + "anyOf": [ + { + "maxLength": 80, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Phone" + }, + "website": { + "anyOf": [ + { + "maxLength": 500, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Website" + } + }, + "required": [ + "name" + ], + "title": "CrmEntityCreate", + "type": "object" + }, + "CrmEntityListOut": { + "properties": { + "entities": { + "items": { + "$ref": "#/components/schemas/CrmEntityOut" + }, + "title": "Entities", + "type": "array" + }, + "limit": { + "title": "Limit", + "type": "integer" + }, + "offset": { + "title": "Offset", + "type": "integer" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "entities", + "total", + "limit", + "offset" + ], + "title": "CrmEntityListOut", + "type": "object" + }, + "CrmEntityOut": { + "properties": { + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "custom_fields": { + "additionalProperties": true, + "title": "Custom Fields", + "type": "object" + }, + "description": { + "title": "Description", + "type": "string" + }, + "email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Email" + }, + "id": { + "title": "Id", + "type": "string" + }, + "kind": { + "title": "Kind", + "type": "string" + }, + "labels": { + "items": { + "type": "string" + }, + "title": "Labels", + "type": "array" + }, + "name": { + "title": "Name", + "type": "string" + }, + "phone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Phone" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + }, + "website": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Website" + } + }, + "required": [ + "id", + "kind", + "name", + "description", + "email", + "website", + "phone", + "labels", + "custom_fields", + "created_at", + "updated_at" + ], + "title": "CrmEntityOut", + "type": "object" + }, + "CrmEntityUpdate": { + "properties": { + "custom_fields": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Custom Fields" + }, + "description": { + "anyOf": [ + { + "maxLength": 10000, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "email": { + "anyOf": [ + { + "maxLength": 320, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Email" + }, + "kind": { + "anyOf": [ + { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Kind" + }, + "labels": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "maxItems": 20, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Labels" + }, + "name": { + "anyOf": [ + { + "maxLength": 240, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "phone": { + "anyOf": [ + { + "maxLength": 80, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Phone" + }, + "website": { + "anyOf": [ + { + "maxLength": 500, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Website" + } + }, + "title": "CrmEntityUpdate", + "type": "object" + }, + "CrmPipelineCreate": { + "properties": { + "custom_fields": { + "additionalProperties": true, + "title": "Custom Fields", + "type": "object" + }, + "entity_kind": { + "default": "investor", + "maxLength": 32, + "minLength": 1, + "title": "Entity Kind", + "type": "string" + }, + "is_default": { + "default": false, + "title": "Is Default", + "type": "boolean" + }, + "kind": { + "default": "fundraising", + "maxLength": 32, + "minLength": 1, + "title": "Kind", + "type": "string" + }, + "labels": { + "items": { + "type": "string" + }, + "maxItems": 20, + "title": "Labels", + "type": "array" + }, + "name": { + "maxLength": 240, + "minLength": 1, + "title": "Name", + "type": "string" + } + }, + "required": [ + "name" + ], + "title": "CrmPipelineCreate", + "type": "object" + }, + "CrmPipelineEntryCreate": { + "properties": { + "amount": { + "anyOf": [ + { + "minimum": 0.0, + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Amount" + }, + "currency": { + "anyOf": [ + { + "maxLength": 8, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Currency" + }, + "custom_fields": { + "additionalProperties": true, + "title": "Custom Fields", + "type": "object" + }, + "entity_id": { + "maxLength": 36, + "minLength": 1, + "title": "Entity Id", + "type": "string" + }, + "expected_close_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Expected Close At" + }, + "pipeline_id": { + "maxLength": 36, + "minLength": 1, + "title": "Pipeline Id", + "type": "string" + }, + "stage_id": { + "maxLength": 36, + "minLength": 1, + "title": "Stage Id", + "type": "string" + }, + "status": { + "default": "active", + "enum": [ + "active", + "won", + "lost", + "archived" + ], + "title": "Status", + "type": "string" + }, + "title": { + "anyOf": [ + { + "maxLength": 240, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + } + }, + "required": [ + "pipeline_id", + "stage_id", + "entity_id" + ], + "title": "CrmPipelineEntryCreate", + "type": "object" + }, + "CrmPipelineEntryListOut": { + "properties": { + "entries": { + "items": { + "$ref": "#/components/schemas/CrmPipelineEntryOut" + }, + "title": "Entries", + "type": "array" + }, + "limit": { + "title": "Limit", + "type": "integer" + }, + "offset": { + "title": "Offset", + "type": "integer" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "entries", + "total", + "limit", + "offset" + ], + "title": "CrmPipelineEntryListOut", + "type": "object" + }, + "CrmPipelineEntryOut": { + "properties": { + "amount": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Amount" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "currency": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Currency" + }, + "custom_fields": { + "additionalProperties": true, + "title": "Custom Fields", + "type": "object" + }, + "entity_id": { + "title": "Entity Id", + "type": "string" + }, + "expected_close_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Expected Close At" + }, + "id": { + "title": "Id", + "type": "string" + }, + "pipeline_id": { + "title": "Pipeline Id", + "type": "string" + }, + "stage_id": { + "title": "Stage Id", + "type": "string" + }, + "status": { + "enum": [ + "active", + "won", + "lost", + "archived" + ], + "title": "Status", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "id", + "pipeline_id", + "stage_id", + "entity_id", + "title", + "status", + "amount", + "currency", + "expected_close_at", + "custom_fields", + "created_at", + "updated_at" + ], + "title": "CrmPipelineEntryOut", + "type": "object" + }, + "CrmPipelineEntryUpdate": { + "properties": { + "amount": { + "anyOf": [ + { + "minimum": 0.0, + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Amount" + }, + "currency": { + "anyOf": [ + { + "maxLength": 8, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Currency" + }, + "custom_fields": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Custom Fields" + }, + "entity_id": { + "anyOf": [ + { + "maxLength": 36, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Entity Id" + }, + "expected_close_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Expected Close At" + }, + "pipeline_id": { + "anyOf": [ + { + "maxLength": 36, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pipeline Id" + }, + "stage_id": { + "anyOf": [ + { + "maxLength": 36, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Stage Id" + }, + "status": { + "anyOf": [ + { + "enum": [ + "active", + "won", + "lost", + "archived" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "title": { + "anyOf": [ + { + "maxLength": 240, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + } + }, + "title": "CrmPipelineEntryUpdate", + "type": "object" + }, + "CrmPipelineListOut": { + "properties": { + "limit": { + "title": "Limit", + "type": "integer" + }, + "offset": { + "title": "Offset", + "type": "integer" + }, + "pipelines": { + "items": { + "$ref": "#/components/schemas/CrmPipelineOut" + }, + "title": "Pipelines", + "type": "array" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "pipelines", + "total", + "limit", + "offset" + ], + "title": "CrmPipelineListOut", + "type": "object" + }, + "CrmPipelineOut": { + "properties": { + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "custom_fields": { + "additionalProperties": true, + "title": "Custom Fields", + "type": "object" + }, + "entity_kind": { + "title": "Entity Kind", + "type": "string" + }, + "id": { + "title": "Id", + "type": "string" + }, + "is_default": { + "title": "Is Default", + "type": "boolean" + }, + "kind": { + "title": "Kind", + "type": "string" + }, + "labels": { + "items": { + "type": "string" + }, + "title": "Labels", + "type": "array" + }, + "name": { + "title": "Name", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "id", + "name", + "kind", + "entity_kind", + "is_default", + "labels", + "custom_fields", + "created_at", + "updated_at" + ], + "title": "CrmPipelineOut", + "type": "object" + }, + "CrmPipelineStageCreate": { + "properties": { + "color": { + "anyOf": [ + { + "maxLength": 32, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Color" + }, + "is_terminal": { + "default": false, + "title": "Is Terminal", + "type": "boolean" + }, + "name": { + "maxLength": 160, + "minLength": 1, + "title": "Name", + "type": "string" + }, + "position": { + "default": 0, + "minimum": 0.0, + "title": "Position", + "type": "integer" + } + }, + "required": [ + "name" + ], + "title": "CrmPipelineStageCreate", + "type": "object" + }, + "CrmPipelineStageListOut": { + "properties": { + "stages": { + "items": { + "$ref": "#/components/schemas/CrmPipelineStageOut" + }, + "title": "Stages", + "type": "array" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "stages", + "total" + ], + "title": "CrmPipelineStageListOut", + "type": "object" + }, + "CrmPipelineStageOut": { + "properties": { + "color": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Color" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "id": { + "title": "Id", + "type": "string" + }, + "is_terminal": { + "title": "Is Terminal", + "type": "boolean" + }, + "name": { + "title": "Name", + "type": "string" + }, + "pipeline_id": { + "title": "Pipeline Id", + "type": "string" + }, + "position": { + "title": "Position", + "type": "integer" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "id", + "pipeline_id", + "name", + "position", + "color", + "is_terminal", + "created_at", + "updated_at" + ], + "title": "CrmPipelineStageOut", + "type": "object" + }, + "CrmPipelineStageUpdate": { + "properties": { + "color": { + "anyOf": [ + { + "maxLength": 32, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Color" + }, + "is_terminal": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Terminal" + }, + "name": { + "anyOf": [ + { + "maxLength": 160, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "position": { + "anyOf": [ + { + "minimum": 0.0, + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Position" + } + }, + "title": "CrmPipelineStageUpdate", + "type": "object" + }, + "CrmPipelineUpdate": { + "properties": { + "custom_fields": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Custom Fields" + }, + "entity_kind": { + "anyOf": [ + { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Entity Kind" + }, + "is_default": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Default" + }, + "kind": { + "anyOf": [ + { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Kind" + }, + "labels": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "maxItems": 20, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Labels" + }, + "name": { + "anyOf": [ + { + "maxLength": 240, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + } + }, + "title": "CrmPipelineUpdate", + "type": "object" + }, "DeleteOut": { "properties": { "ok": { @@ -322,6 +1364,30 @@ }, "TaskCreate": { "properties": { + "crm_entity_id": { + "anyOf": [ + { + "maxLength": 36, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Crm Entity Id" + }, + "crm_pipeline_entry_id": { + "anyOf": [ + { + "maxLength": 36, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Crm Pipeline Entry Id" + }, "description": { "default": "", "maxLength": 10000, @@ -441,6 +1507,28 @@ "title": "Created At", "type": "string" }, + "crm_entity_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Crm Entity Id" + }, + "crm_pipeline_entry_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Crm Pipeline Entry Id" + }, "description": { "title": "Description", "type": "string" @@ -512,6 +1600,8 @@ "labels", "due_at", "epic_id", + "crm_entity_id", + "crm_pipeline_entry_id", "completed_at", "created_at", "updated_at" @@ -521,6 +1611,30 @@ }, "TaskUpdate": { "properties": { + "crm_entity_id": { + "anyOf": [ + { + "maxLength": 36, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Crm Entity Id" + }, + "crm_pipeline_entry_id": { + "anyOf": [ + { + "maxLength": 36, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Crm Pipeline Entry Id" + }, "description": { "anyOf": [ { @@ -681,6 +1795,1234 @@ }, "openapi": "3.1.0", "paths": { + "/api/crm/entities": { + "get": { + "operationId": "listCrmEntities", + "parameters": [ + { + "in": "query", + "name": "kind", + "required": false, + "schema": { + "anyOf": [ + { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Kind" + } + }, + { + "in": "query", + "name": "q", + "required": false, + "schema": { + "anyOf": [ + { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Q" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 50, + "maximum": 200, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmEntityListOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "List Crm Entities", + "tags": [ + "CRM" + ] + }, + "post": { + "operationId": "createCrmEntity", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmEntityCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmEntityOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "Create Crm Entity", + "tags": [ + "CRM" + ] + } + }, + "/api/crm/entities/{entity_id}": { + "delete": { + "operationId": "deleteCrmEntity", + "parameters": [ + { + "in": "path", + "name": "entity_id", + "required": true, + "schema": { + "title": "Entity Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "Delete Crm Entity", + "tags": [ + "CRM" + ] + }, + "get": { + "operationId": "getCrmEntity", + "parameters": [ + { + "in": "path", + "name": "entity_id", + "required": true, + "schema": { + "title": "Entity Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmEntityOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "Get Crm Entity", + "tags": [ + "CRM" + ] + }, + "patch": { + "operationId": "updateCrmEntity", + "parameters": [ + { + "in": "path", + "name": "entity_id", + "required": true, + "schema": { + "title": "Entity Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmEntityUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmEntityOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "Update Crm Entity", + "tags": [ + "CRM" + ] + } + }, + "/api/crm/pipeline-entries": { + "get": { + "operationId": "listCrmPipelineEntries", + "parameters": [ + { + "in": "query", + "name": "pipeline_id", + "required": false, + "schema": { + "anyOf": [ + { + "maxLength": 36, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pipeline Id" + } + }, + { + "in": "query", + "name": "stage_id", + "required": false, + "schema": { + "anyOf": [ + { + "maxLength": 36, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Stage Id" + } + }, + { + "in": "query", + "name": "entity_id", + "required": false, + "schema": { + "anyOf": [ + { + "maxLength": 36, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Entity Id" + } + }, + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "enum": [ + "active", + "won", + "lost", + "archived" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 50, + "maximum": 200, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmPipelineEntryListOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "List Crm Pipeline Entries", + "tags": [ + "CRM" + ] + }, + "post": { + "operationId": "createCrmPipelineEntry", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmPipelineEntryCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmPipelineEntryOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "Create Crm Pipeline Entry", + "tags": [ + "CRM" + ] + } + }, + "/api/crm/pipeline-entries/{entry_id}": { + "delete": { + "operationId": "deleteCrmPipelineEntry", + "parameters": [ + { + "in": "path", + "name": "entry_id", + "required": true, + "schema": { + "title": "Entry Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "Delete Crm Pipeline Entry", + "tags": [ + "CRM" + ] + }, + "get": { + "operationId": "getCrmPipelineEntry", + "parameters": [ + { + "in": "path", + "name": "entry_id", + "required": true, + "schema": { + "title": "Entry Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmPipelineEntryOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "Get Crm Pipeline Entry", + "tags": [ + "CRM" + ] + }, + "patch": { + "operationId": "updateCrmPipelineEntry", + "parameters": [ + { + "in": "path", + "name": "entry_id", + "required": true, + "schema": { + "title": "Entry Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmPipelineEntryUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmPipelineEntryOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "Update Crm Pipeline Entry", + "tags": [ + "CRM" + ] + } + }, + "/api/crm/pipeline-stages/{stage_id}": { + "delete": { + "operationId": "deleteCrmPipelineStage", + "parameters": [ + { + "in": "path", + "name": "stage_id", + "required": true, + "schema": { + "title": "Stage Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "Delete Crm Pipeline Stage", + "tags": [ + "CRM" + ] + }, + "get": { + "operationId": "getCrmPipelineStage", + "parameters": [ + { + "in": "path", + "name": "stage_id", + "required": true, + "schema": { + "title": "Stage Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmPipelineStageOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "Get Crm Pipeline Stage", + "tags": [ + "CRM" + ] + }, + "patch": { + "operationId": "updateCrmPipelineStage", + "parameters": [ + { + "in": "path", + "name": "stage_id", + "required": true, + "schema": { + "title": "Stage Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmPipelineStageUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmPipelineStageOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "Update Crm Pipeline Stage", + "tags": [ + "CRM" + ] + } + }, + "/api/crm/pipelines": { + "get": { + "operationId": "listCrmPipelines", + "parameters": [ + { + "in": "query", + "name": "kind", + "required": false, + "schema": { + "anyOf": [ + { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Kind" + } + }, + { + "in": "query", + "name": "entity_kind", + "required": false, + "schema": { + "anyOf": [ + { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Entity Kind" + } + }, + { + "in": "query", + "name": "q", + "required": false, + "schema": { + "anyOf": [ + { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Q" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 50, + "maximum": 200, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmPipelineListOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "List Crm Pipelines", + "tags": [ + "CRM" + ] + }, + "post": { + "operationId": "createCrmPipeline", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmPipelineCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmPipelineOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "Create Crm Pipeline", + "tags": [ + "CRM" + ] + } + }, + "/api/crm/pipelines/{pipeline_id}": { + "delete": { + "operationId": "deleteCrmPipeline", + "parameters": [ + { + "in": "path", + "name": "pipeline_id", + "required": true, + "schema": { + "title": "Pipeline Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "Delete Crm Pipeline", + "tags": [ + "CRM" + ] + }, + "get": { + "operationId": "getCrmPipeline", + "parameters": [ + { + "in": "path", + "name": "pipeline_id", + "required": true, + "schema": { + "title": "Pipeline Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmPipelineOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "Get Crm Pipeline", + "tags": [ + "CRM" + ] + }, + "patch": { + "operationId": "updateCrmPipeline", + "parameters": [ + { + "in": "path", + "name": "pipeline_id", + "required": true, + "schema": { + "title": "Pipeline Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmPipelineUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmPipelineOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "Update Crm Pipeline", + "tags": [ + "CRM" + ] + } + }, + "/api/crm/pipelines/{pipeline_id}/stages": { + "get": { + "operationId": "listCrmPipelineStages", + "parameters": [ + { + "in": "path", + "name": "pipeline_id", + "required": true, + "schema": { + "title": "Pipeline Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmPipelineStageListOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "List Crm Pipeline Stages", + "tags": [ + "CRM" + ] + }, + "post": { + "operationId": "createCrmPipelineStage", + "parameters": [ + { + "in": "path", + "name": "pipeline_id", + "required": true, + "schema": { + "title": "Pipeline Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmPipelineStageCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrmPipelineStageOut" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "apiKeyAuth": [] + } + ], + "summary": "Create Crm Pipeline Stage", + "tags": [ + "CRM" + ] + } + }, "/api/epics": { "get": { "operationId": "listEpics", @@ -1213,6 +3555,40 @@ "title": "Epic Id" } }, + { + "in": "query", + "name": "crm_entity_id", + "required": false, + "schema": { + "anyOf": [ + { + "maxLength": 36, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Crm Entity Id" + } + }, + { + "in": "query", + "name": "crm_pipeline_entry_id", + "required": false, + "schema": { + "anyOf": [ + { + "maxLength": 36, + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Crm Pipeline Entry Id" + } + }, { "in": "query", "name": "limit",