{
  "openapi": "3.0.3",
  "info": {
    "title": "Future AGI API",
    "version": "1.0.0",
    "description": "API for evaluating, monitoring, and optimizing AI applications."
  },
  "servers": [
    {
      "url": "https://api.futureagi.com"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "API key from https://app.futureagi.com"
      }
    }
  },
  "paths": {
    "/model-hub/eval-groups/get_evals_list/": {
      "get": {
        "summary": "Get Evals List",
        "description": "Retrieves a list of evaluations for a given dataset, with options for filtering and ordering.",
        "operationId": "get_evals_list",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/health/": {
      "get": {
        "summary": "Health check",
        "description": "Returns 200 status when server is up and running. No authentication required.",
        "operationId": "health_check",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/simulate/agent-definitions/{agent_id}/versions/create/": {
      "post": {
        "summary": "Create new version of agent",
        "description": "Create a new version of an existing agent definition by providing updated agent properties and a commit message.",
        "operationId": "create_new_version_of_agent",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "agent_type": {
                    "type": "string",
                    "example": "voice"
                  },
                  "agent_name": {
                    "type": "string",
                    "example": "your-agent_name"
                  },
                  "provider": {
                    "type": "string",
                    "example": "your-provider"
                  },
                  "api_key": {
                    "type": "string",
                    "example": "your-api_key"
                  },
                  "assistant_id": {
                    "type": "string",
                    "example": "your-assistant_id"
                  },
                  "description": {
                    "type": "string",
                    "example": "your-description"
                  },
                  "language": {
                    "type": "string",
                    "example": "your-language"
                  },
                  "knowledge_base": {
                    "type": "string",
                    "example": "your-knowledge_base"
                  },
                  "contact_number": {
                    "type": "string",
                    "example": "your-contact_number"
                  },
                  "commit_message": {
                    "type": "string",
                    "example": "your-commit_message"
                  }
                }
              },
              "example": {
                "agent_type": "voice",
                "agent_name": "your-agent_name",
                "provider": "your-provider",
                "api_key": "your-api_key",
                "assistant_id": "your-assistant_id",
                "description": "your-description",
                "language": "your-language",
                "knowledge_base": "your-knowledge_base",
                "contact_number": "your-contact_number",
                "inbound": true,
                "commit_message": "your-commit_message",
                "observability_enabled": true
              }
            }
          }
        }
      }
    },
    "/simulate/agent-definitions/create/": {
      "post": {
        "summary": "Create agent definition",
        "description": "Create a new agent definition and its first version.",
        "operationId": "create_agent_definition",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "agentType": {
                    "type": "string",
                    "example": "voice"
                  },
                  "agentName": {
                    "type": "string",
                    "example": "your-agentName"
                  },
                  "provider": {
                    "type": "string",
                    "example": "vapi"
                  },
                  "apiKey": {
                    "type": "string",
                    "example": "your-apiKey"
                  },
                  "assistantId": {
                    "type": "string",
                    "example": "your-assistantId"
                  },
                  "description": {
                    "type": "string",
                    "example": "your-description"
                  },
                  "language": {
                    "type": "string",
                    "example": "your-language"
                  },
                  "knowledgeBase": {
                    "type": "string",
                    "example": "your-knowledgeBase"
                  },
                  "countryCode": {
                    "type": "string",
                    "example": "your-countryCode"
                  },
                  "contactNumber": {
                    "type": "string",
                    "example": "your-contactNumber"
                  },
                  "commitMessage": {
                    "type": "string",
                    "example": "your-commitMessage"
                  }
                }
              },
              "example": {
                "agentType": "voice",
                "agentName": "your-agentName",
                "provider": "vapi",
                "apiKey": "your-apiKey",
                "assistantId": "your-assistantId",
                "description": "your-description",
                "language": "your-language",
                "knowledgeBase": "your-knowledgeBase",
                "countryCode": "your-countryCode",
                "contactNumber": "your-contactNumber",
                "inbound": true,
                "commitMessage": "your-commitMessage",
                "observabilityEnabled": true
              }
            }
          }
        }
      }
    },
    "/model-hub/get-eval-logs-details/": {
      "get": {
        "summary": "Get Evaluation Log Details",
        "description": "Retrieves detailed logs for a specific evaluation template, with support for advanced filtering, sorting, and pagination. This endpoint uses a GET req...",
        "operationId": "get_evaluation_log_details",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              },
              "example": {
                "filters": [],
                "sort": []
              }
            }
          }
        }
      }
    },
    "/tracer/bulk-annotation/": {
      "post": {
        "summary": "Bulk Annotate Spans",
        "description": "Submit annotations and notes for multiple observation spans in a single request.",
        "operationId": "bulk_annotate_spans",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotations-labels/{id}/": {
      "delete": {
        "summary": "Delete Label",
        "description": "Soft-delete an annotation label.",
        "operationId": "delete_label",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "put": {
        "summary": "Update Label",
        "description": "Update an existing annotation label.",
        "operationId": "update_label",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "get": {
        "summary": "Get Label",
        "description": "Retrieve a specific annotation label by ID.",
        "operationId": "get_label",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotations-labels/": {
      "get": {
        "summary": "List Labels",
        "description": "List annotation labels with optional filters.",
        "operationId": "list_labels",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "post": {
        "summary": "Create Label",
        "description": "Create a new annotation label.",
        "operationId": "create_label",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotations-labels/{id}/restore/": {
      "post": {
        "summary": "Restore Label",
        "description": "Restore a previously deleted annotation label.",
        "operationId": "restore_label",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/scores/for-source/": {
      "get": {
        "summary": "Get Scores for Source",
        "description": "Retrieve all scores for a specific source.",
        "operationId": "get_scores_for_source",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/scores/": {
      "post": {
        "summary": "Create Score",
        "description": "Create a single annotation score on a source.",
        "operationId": "create_score",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "get": {
        "summary": "List Scores",
        "description": "List scores with optional filters.",
        "operationId": "list_scores",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/scores/{id}/": {
      "delete": {
        "summary": "Delete Score",
        "description": "Soft-delete a score. Only the creator or org admin can delete.",
        "operationId": "delete_score",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/scores/bulk/": {
      "post": {
        "summary": "Bulk Create Scores",
        "description": "Create multiple scores on a single source in one request.",
        "operationId": "bulk_create_scores",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{id}/": {
      "delete": {
        "summary": "Delete Queue",
        "description": "Soft-delete an annotation queue.",
        "operationId": "delete_queue",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "put": {
        "summary": "Update Queue",
        "description": "Update an existing annotation queue's configuration.",
        "operationId": "update_queue",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "get": {
        "summary": "Get Queue",
        "description": "Retrieve details of a specific annotation queue.",
        "operationId": "get_queue",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{id}/export/": {
      "get": {
        "summary": "Export Queue",
        "description": "Export annotation queue items and their annotations as JSON or CSV.",
        "operationId": "export_queue",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{id}/progress/": {
      "get": {
        "summary": "Get Queue Progress",
        "description": "Retrieve progress statistics for an annotation queue.",
        "operationId": "get_queue_progress",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/get-or-create-default/": {
      "post": {
        "summary": "Get or Create Default Queue",
        "description": "Get the default annotation queue for a project, dataset, or agent, creating one if it doesn't exist.",
        "operationId": "get_or_create_default_queue",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{id}/analytics/": {
      "get": {
        "summary": "Get Queue Analytics",
        "description": "Retrieve detailed analytics for an annotation queue.",
        "operationId": "get_queue_analytics",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{id}/remove-label/": {
      "post": {
        "summary": "Remove Label from Queue",
        "description": "Detach an annotation label from a queue.",
        "operationId": "remove_label_from_queue",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{id}/update-status/": {
      "post": {
        "summary": "Update Queue Status",
        "description": "Transition an annotation queue to a new status.",
        "operationId": "update_queue_status",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/": {
      "get": {
        "summary": "List Queues",
        "description": "List annotation queues with optional filtering and pagination.",
        "operationId": "list_queues",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "post": {
        "summary": "Create Queue",
        "description": "Create a new annotation queue with assignment strategy and configuration.",
        "operationId": "create_queue",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{id}/add-label/": {
      "post": {
        "summary": "Add Label to Queue",
        "description": "Attach an annotation label to a queue.",
        "operationId": "add_label_to_queue",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/for-source/": {
      "get": {
        "summary": "Find Queues for Source",
        "description": "Find annotation queues that contain a specific source item.",
        "operationId": "find_queues_for_source",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{id}/export-to-dataset/": {
      "post": {
        "summary": "Export to Dataset",
        "description": "Export completed annotations from a queue into a FutureAGI dataset.",
        "operationId": "export_to_dataset",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{id}/agreement/": {
      "get": {
        "summary": "Get Inter-Annotator Agreement",
        "description": "Retrieve inter-annotator agreement metrics for a queue.",
        "operationId": "get_inter-annotator_agreement",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{queue_id}/items/bulk-remove/": {
      "post": {
        "summary": "Bulk Remove Items",
        "description": "Remove multiple items from an annotation queue at once.",
        "operationId": "bulk_remove_items",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{queue_id}/items/{item_id}/annotations/": {
      "get": {
        "summary": "Get Item Annotations",
        "description": "Retrieve all annotations submitted for a specific queue item.",
        "operationId": "get_item_annotations",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{queue_id}/items/{item_id}/release/": {
      "post": {
        "summary": "Release Item",
        "description": "Release a reserved queue item so it can be assigned to another annotator.",
        "operationId": "release_item",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{queue_id}/items/assign/": {
      "post": {
        "summary": "Assign Items",
        "description": "Assign queue items to a specific annotator.",
        "operationId": "assign_items",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{queue_id}/items/{item_id}/annotate-detail/": {
      "get": {
        "summary": "Get Annotate Detail",
        "description": "Retrieve a queue item with full source data for the annotation UI.",
        "operationId": "get_annotate_detail",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{queue_id}/items/{item_id}/annotations/submit/": {
      "post": {
        "summary": "Submit Annotations",
        "description": "Submit annotations and notes for a queue item.",
        "operationId": "submit_annotations",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{queue_id}/items/{item_id}/skip/": {
      "post": {
        "summary": "Skip Item",
        "description": "Skip a queue item, marking it as skipped by the current user.",
        "operationId": "skip_item",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{queue_id}/items/next-item/": {
      "get": {
        "summary": "Get Next Item",
        "description": "Retrieve the next available item for the current user to annotate.",
        "operationId": "get_next_item",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{queue_id}/items/{item_id}/complete/": {
      "post": {
        "summary": "Complete Item",
        "description": "Mark a queue item as completed and optionally receive the next item.",
        "operationId": "complete_item",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{queue_id}/items/add-items/": {
      "post": {
        "summary": "Add Items to Queue",
        "description": "Add source items to an annotation queue in bulk.",
        "operationId": "add_items_to_queue",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/annotation-queues/{queue_id}/items/": {
      "get": {
        "summary": "List Queue Items",
        "description": "List items in an annotation queue with optional filtering and pagination.",
        "operationId": "list_queue_items",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/simulate/scenarios/{scenario_id}/add-rows/": {
      "post": {
        "summary": "Add rows to a scenario using AI",
        "description": "Initiates an asynchronous task to generate and add a specified number of new rows to a scenario's dataset using AI. A description can be provided to g...",
        "operationId": "add_rows_to_a_scenario_using_ai",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "description": {
                    "type": "string",
                    "example": "your-description"
                  }
                }
              },
              "example": {
                "num_rows": 1,
                "description": "your-description"
              }
            }
          }
        }
      }
    },
    "/model-hub/develops/{dataset_id}/add_empty_rows/": {
      "post": {
        "summary": "Add empty rows to a scenario",
        "description": "Adds a specified number of empty rows to an existing scenario. This is useful for populating a scenario with placeholders for future data entry.",
        "operationId": "add_empty_rows_to_a_scenario",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              },
              "example": {
                "num_rows": 1
              }
            }
          }
        }
      }
    },
    "/simulate/scenarios/create/": {
      "post": {
        "summary": "Generate or create a scenario",
        "description": "Creates a new scenario from a dataset, a script, or a generated/provided graph. The creation is processed in the background.",
        "operationId": "generate_or_create_a_scenario",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/simulate/scenarios/{scenario_id}/edit/": {
      "put": {
        "summary": "Edit a scenario",
        "description": "Updates the properties of a specific scenario, such as its name, description, associated graph, or the simulator agent's prompt.",
        "operationId": "edit_a_scenario",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/simulate/run-tests/{run_test_id}/execute/": {
      "post": {
        "summary": "Execute a test run",
        "description": "Triggers the execution of a specified test run. The execution can be customized to include or exclude specific scenarios.",
        "operationId": "execute_a_test_run",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "simulatorId": {
                    "type": "string",
                    "example": "your-simulatorId"
                  }
                }
              },
              "example": {
                "selectAll": true,
                "scenarioIds": [],
                "simulatorId": "your-simulatorId"
              }
            }
          }
        }
      }
    },
    "/simulate/run-tests/create/": {
      "post": {
        "summary": "Create a New Test Run",
        "description": "Creates and configures a new test run, associating it with scenarios, an agent definition, and detailed evaluation configurations.",
        "operationId": "create_a_new_test_run",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "your-name"
                  },
                  "description": {
                    "type": "string",
                    "example": "your-description"
                  },
                  "agentDefinitionId": {
                    "type": "string",
                    "example": "your-agentDefinitionId"
                  },
                  "agentVersion": {
                    "type": "string",
                    "example": "your-agentVersion"
                  }
                }
              },
              "example": {
                "name": "your-name",
                "description": "your-description",
                "scenarioIds": [],
                "agentDefinitionId": "your-agentDefinitionId",
                "agentVersion": "your-agentVersion",
                "evalConfigIds": [],
                "evaluationsConfig": [],
                "datasetRowIds": [],
                "enableToolEvaluation": true
              }
            }
          }
        }
      }
    },
    "/model-hub/eval-groups/{id}/": {
      "put": {
        "summary": "Update Evaluation Group",
        "description": "Updates an entire evaluation group's details.",
        "operationId": "update_evaluation_group",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "delete": {
        "summary": "Delete Evaluation Group",
        "description": "Soft deletes an evaluation group and removes all its associated evaluation templates.",
        "operationId": "delete_evaluation_group",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "get": {
        "summary": "Retrieve Evaluation Group",
        "description": "Retrieves detailed information about a specific evaluation group, including its members.",
        "operationId": "retrieve_evaluation_group",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/eval-groups/": {
      "get": {
        "summary": "List Evaluation Groups",
        "description": "Retrieves a paginated list of evaluation groups for the user's workspace, including sample groups.",
        "operationId": "list_evaluation_groups",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "post": {
        "summary": "Create Evaluation Group",
        "description": "Creates a new evaluation group within the user's workspace.",
        "operationId": "create_evaluation_group",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "my-eval-group"
                  },
                  "description": {
                    "type": "string",
                    "example": "Quality checks for chatbot"
                  }
                }
              },
              "example": {
                "name": "my-eval-group",
                "description": "Quality checks for chatbot",
                "eval_template_ids": [
                  "uuid-1",
                  "uuid-2"
                ]
              }
            }
          }
        }
      }
    },
    "/model-hub/eval-groups/apply-eval-group/": {
      "post": {
        "summary": "Apply Evaluation Group",
        "description": "Applies an evaluation group to a set of data, creating user evaluation metrics.",
        "operationId": "apply_evaluation_group",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/model-hub/eval-groups/edit-eval-list/": {
      "post": {
        "summary": "Edit Evaluation Group Members",
        "description": "Adds or removes evaluation templates from an evaluation group.",
        "operationId": "edit_evaluation_group_members",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "eval_group_id": {
                    "type": "string",
                    "example": "your-eval_group_id"
                  }
                }
              },
              "example": {
                "eval_group_id": "your-eval_group_id",
                "added_template_ids": [],
                "deleted_template_ids": []
              }
            }
          }
        }
      }
    }
  }
}