From af06dba0b3456d845ae15745ff3783f18404e644 Mon Sep 17 00:00:00 2001 From: Joey French Date: Sat, 15 Nov 2025 22:42:20 -0600 Subject: [PATCH] Enhance API documentation with subgraph support details This commit adds comprehensive documentation for subgraph support across various API endpoints. Key updates include: - Clear instructions on using both parent graph IDs and subgraph IDs. - Specific examples of ID formats for parent graphs and subgraphs. - Clarifications on how agents, health metrics, and database information operate independently within specified graphs or subgraphs. These enhancements aim to improve user understanding and facilitate better integration with the API. --- .../api/agent/auto_select_agent.py | 28 ++++++++++ .../api/graph_health/get_database_health.py | 28 ++++++++++ .../api/graph_info/get_database_info.py | 28 ++++++++++ .../api/graph_limits/get_graph_limits.py | 8 +-- robosystems_client/api/mcp/call_mcp_tool.py | 28 ++++++++++ robosystems_client/api/mcp/list_mcp_tools.py | 28 ++++++++++ .../api/query/execute_cypher_query.py | 24 +++++++++ .../api/schema/get_graph_schema.py | 32 ++++++++++++ .../api/schema/validate_schema.py | 28 ++++++++++ .../api/subgraphs/create_subgraph.py | 24 +++++++++ .../api/subgraphs/delete_subgraph.py | 52 ++++++++++++++----- .../api/subgraphs/get_subgraph_info.py | 48 ++++++++++++----- .../api/tables/get_upload_url.py | 28 ++++++++++ .../api/tables/ingest_tables.py | 36 +++++++++++-- robosystems_client/api/tables/query_tables.py | 24 +++++++++ robosystems_client/models/payment_method.py | 6 +-- 16 files changed, 411 insertions(+), 39 deletions(-) diff --git a/robosystems_client/api/agent/auto_select_agent.py b/robosystems_client/api/agent/auto_select_agent.py index 312bb4a..3f5f14f 100644 --- a/robosystems_client/api/agent/auto_select_agent.py +++ b/robosystems_client/api/agent/auto_select_agent.py @@ -158,6 +158,13 @@ def sync_detailed( - Leverage conversation history for contextual understanding - Enable RAG for knowledge base enrichment + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Agents operate on the specified graph/subgraph's data independently. RAG enrichment + and knowledge base search are scoped to the specific graph/subgraph. + See request/response examples in the \"Examples\" dropdown below. Args: @@ -246,6 +253,13 @@ def sync( - Leverage conversation history for contextual understanding - Enable RAG for knowledge base enrichment + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Agents operate on the specified graph/subgraph's data independently. RAG enrichment + and knowledge base search are scoped to the specific graph/subgraph. + See request/response examples in the \"Examples\" dropdown below. Args: @@ -329,6 +343,13 @@ async def asyncio_detailed( - Leverage conversation history for contextual understanding - Enable RAG for knowledge base enrichment + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Agents operate on the specified graph/subgraph's data independently. RAG enrichment + and knowledge base search are scoped to the specific graph/subgraph. + See request/response examples in the \"Examples\" dropdown below. Args: @@ -415,6 +436,13 @@ async def asyncio( - Leverage conversation history for contextual understanding - Enable RAG for knowledge base enrichment + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Agents operate on the specified graph/subgraph's data independently. RAG enrichment + and knowledge base search are scoped to the specific graph/subgraph. + See request/response examples in the \"Examples\" dropdown below. Args: diff --git a/robosystems_client/api/graph_health/get_database_health.py b/robosystems_client/api/graph_health/get_database_health.py index 32542f9..6c1db98 100644 --- a/robosystems_client/api/graph_health/get_database_health.py +++ b/robosystems_client/api/graph_health/get_database_health.py @@ -86,6 +86,13 @@ def sync_detailed( - **Resource Usage**: Memory and storage consumption - **Alerts**: Active warnings or issues + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Health metrics are specific to the requested graph/subgraph. Subgraphs share the + same physical instance as their parent but have independent health indicators. + This endpoint provides essential monitoring data for operational visibility. Args: @@ -133,6 +140,13 @@ def sync( - **Resource Usage**: Memory and storage consumption - **Alerts**: Active warnings or issues + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Health metrics are specific to the requested graph/subgraph. Subgraphs share the + same physical instance as their parent but have independent health indicators. + This endpoint provides essential monitoring data for operational visibility. Args: @@ -175,6 +189,13 @@ async def asyncio_detailed( - **Resource Usage**: Memory and storage consumption - **Alerts**: Active warnings or issues + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Health metrics are specific to the requested graph/subgraph. Subgraphs share the + same physical instance as their parent but have independent health indicators. + This endpoint provides essential monitoring data for operational visibility. Args: @@ -220,6 +241,13 @@ async def asyncio( - **Resource Usage**: Memory and storage consumption - **Alerts**: Active warnings or issues + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Health metrics are specific to the requested graph/subgraph. Subgraphs share the + same physical instance as their parent but have independent health indicators. + This endpoint provides essential monitoring data for operational visibility. Args: diff --git a/robosystems_client/api/graph_info/get_database_info.py b/robosystems_client/api/graph_info/get_database_info.py index 5865c5d..0732b40 100644 --- a/robosystems_client/api/graph_info/get_database_info.py +++ b/robosystems_client/api/graph_info/get_database_info.py @@ -87,6 +87,13 @@ def sync_detailed( - **Backup Status**: Backup availability and recency - **Timestamps**: Creation and modification dates + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Returned metrics are specific to the requested graph/subgraph. Subgraphs have + independent size, node/relationship counts, and backup status. + This endpoint provides essential database information for capacity planning and monitoring. Args: @@ -135,6 +142,13 @@ def sync( - **Backup Status**: Backup availability and recency - **Timestamps**: Creation and modification dates + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Returned metrics are specific to the requested graph/subgraph. Subgraphs have + independent size, node/relationship counts, and backup status. + This endpoint provides essential database information for capacity planning and monitoring. Args: @@ -178,6 +192,13 @@ async def asyncio_detailed( - **Backup Status**: Backup availability and recency - **Timestamps**: Creation and modification dates + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Returned metrics are specific to the requested graph/subgraph. Subgraphs have + independent size, node/relationship counts, and backup status. + This endpoint provides essential database information for capacity planning and monitoring. Args: @@ -224,6 +245,13 @@ async def asyncio( - **Backup Status**: Backup availability and recency - **Timestamps**: Creation and modification dates + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Returned metrics are specific to the requested graph/subgraph. Subgraphs have + independent size, node/relationship counts, and backup status. + This endpoint provides essential database information for capacity planning and monitoring. Args: diff --git a/robosystems_client/api/graph_limits/get_graph_limits.py b/robosystems_client/api/graph_limits/get_graph_limits.py index 02f30d9..12a4d7f 100644 --- a/robosystems_client/api/graph_limits/get_graph_limits.py +++ b/robosystems_client/api/graph_limits/get_graph_limits.py @@ -82,7 +82,7 @@ def sync_detailed( This unified endpoint provides all limits in one place for easier client integration. - **Note**: Limits vary based on subscription tier (Standard, Enterprise, Premium). + **Note**: Limits vary based on subscription tier (kuzu-standard, kuzu-large, kuzu-xlarge). Args: graph_id (str): @@ -125,7 +125,7 @@ def sync( This unified endpoint provides all limits in one place for easier client integration. - **Note**: Limits vary based on subscription tier (Standard, Enterprise, Premium). + **Note**: Limits vary based on subscription tier (kuzu-standard, kuzu-large, kuzu-xlarge). Args: graph_id (str): @@ -163,7 +163,7 @@ async def asyncio_detailed( This unified endpoint provides all limits in one place for easier client integration. - **Note**: Limits vary based on subscription tier (Standard, Enterprise, Premium). + **Note**: Limits vary based on subscription tier (kuzu-standard, kuzu-large, kuzu-xlarge). Args: graph_id (str): @@ -204,7 +204,7 @@ async def asyncio( This unified endpoint provides all limits in one place for easier client integration. - **Note**: Limits vary based on subscription tier (Standard, Enterprise, Premium). + **Note**: Limits vary based on subscription tier (kuzu-standard, kuzu-large, kuzu-xlarge). Args: graph_id (str): diff --git a/robosystems_client/api/mcp/call_mcp_tool.py b/robosystems_client/api/mcp/call_mcp_tool.py index ee20506..f1d8cd4 100644 --- a/robosystems_client/api/mcp/call_mcp_tool.py +++ b/robosystems_client/api/mcp/call_mcp_tool.py @@ -157,6 +157,13 @@ def sync_detailed( - `408 Request Timeout`: Tool execution exceeded timeout - Clients should implement exponential backoff on errors + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + MCP tools operate on the specified graph/subgraph independently. Each subgraph + has its own schema, data, and can be queried separately via MCP. + **Credit Model:** MCP tool execution is included - no credit consumption required. Database operations (queries, schema inspection, analytics) are completely free. @@ -233,6 +240,13 @@ def sync( - `408 Request Timeout`: Tool execution exceeded timeout - Clients should implement exponential backoff on errors + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + MCP tools operate on the specified graph/subgraph independently. Each subgraph + has its own schema, data, and can be queried separately via MCP. + **Credit Model:** MCP tool execution is included - no credit consumption required. Database operations (queries, schema inspection, analytics) are completely free. @@ -304,6 +318,13 @@ async def asyncio_detailed( - `408 Request Timeout`: Tool execution exceeded timeout - Clients should implement exponential backoff on errors + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + MCP tools operate on the specified graph/subgraph independently. Each subgraph + has its own schema, data, and can be queried separately via MCP. + **Credit Model:** MCP tool execution is included - no credit consumption required. Database operations (queries, schema inspection, analytics) are completely free. @@ -378,6 +399,13 @@ async def asyncio( - `408 Request Timeout`: Tool execution exceeded timeout - Clients should implement exponential backoff on errors + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + MCP tools operate on the specified graph/subgraph independently. Each subgraph + has its own schema, data, and can be queried separately via MCP. + **Credit Model:** MCP tool execution is included - no credit consumption required. Database operations (queries, schema inspection, analytics) are completely free. diff --git a/robosystems_client/api/mcp/list_mcp_tools.py b/robosystems_client/api/mcp/list_mcp_tools.py index c642ebb..3a46ad7 100644 --- a/robosystems_client/api/mcp/list_mcp_tools.py +++ b/robosystems_client/api/mcp/list_mcp_tools.py @@ -81,6 +81,13 @@ def sync_detailed( - User permissions and subscription tier - Backend capabilities (Kuzu, Neo4j, etc.) + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + The returned tool list is identical for parent graphs and subgraphs, as all + MCP tools work uniformly across graph boundaries. + **Note:** MCP tool listing is included - no credit consumption required. @@ -125,6 +132,13 @@ def sync( - User permissions and subscription tier - Backend capabilities (Kuzu, Neo4j, etc.) + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + The returned tool list is identical for parent graphs and subgraphs, as all + MCP tools work uniformly across graph boundaries. + **Note:** MCP tool listing is included - no credit consumption required. @@ -164,6 +178,13 @@ async def asyncio_detailed( - User permissions and subscription tier - Backend capabilities (Kuzu, Neo4j, etc.) + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + The returned tool list is identical for parent graphs and subgraphs, as all + MCP tools work uniformly across graph boundaries. + **Note:** MCP tool listing is included - no credit consumption required. @@ -206,6 +227,13 @@ async def asyncio( - User permissions and subscription tier - Backend capabilities (Kuzu, Neo4j, etc.) + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + The returned tool list is identical for parent graphs and subgraphs, as all + MCP tools work uniformly across graph boundaries. + **Note:** MCP tool listing is included - no credit consumption required. diff --git a/robosystems_client/api/query/execute_cypher_query.py b/robosystems_client/api/query/execute_cypher_query.py index 08bb2de..1f79781 100644 --- a/robosystems_client/api/query/execute_cypher_query.py +++ b/robosystems_client/api/query/execute_cypher_query.py @@ -193,6 +193,12 @@ def sync_detailed( - `503 Service Unavailable`: Circuit breaker open or SSE disabled - Clients should implement exponential backoff + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Subgraphs share the same instance as their parent graph and have independent data. + **Note:** Query operations are included - no credit consumption required. Queue position is based on subscription tier for priority. @@ -298,6 +304,12 @@ def sync( - `503 Service Unavailable`: Circuit breaker open or SSE disabled - Clients should implement exponential backoff + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Subgraphs share the same instance as their parent graph and have independent data. + **Note:** Query operations are included - no credit consumption required. Queue position is based on subscription tier for priority. @@ -398,6 +410,12 @@ async def asyncio_detailed( - `503 Service Unavailable`: Circuit breaker open or SSE disabled - Clients should implement exponential backoff + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Subgraphs share the same instance as their parent graph and have independent data. + **Note:** Query operations are included - no credit consumption required. Queue position is based on subscription tier for priority. @@ -501,6 +519,12 @@ async def asyncio( - `503 Service Unavailable`: Circuit breaker open or SSE disabled - Clients should implement exponential backoff + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Subgraphs share the same instance as their parent graph and have independent data. + **Note:** Query operations are included - no credit consumption required. Queue position is based on subscription tier for priority. diff --git a/robosystems_client/api/schema/get_graph_schema.py b/robosystems_client/api/schema/get_graph_schema.py index bef70d4..ab9f363 100644 --- a/robosystems_client/api/schema/get_graph_schema.py +++ b/robosystems_client/api/schema/get_graph_schema.py @@ -105,6 +105,14 @@ def sync_detailed( Property discovery is limited to 10 properties per node type for performance. For complete schema definitions, use `/schema/export`. + ## Subgraph Support + + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Each subgraph has independent schema and data. The returned schema reflects + only the specified graph/subgraph's actual structure. + This operation is included - no credit consumption required. Args: @@ -171,6 +179,14 @@ def sync( Property discovery is limited to 10 properties per node type for performance. For complete schema definitions, use `/schema/export`. + ## Subgraph Support + + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Each subgraph has independent schema and data. The returned schema reflects + only the specified graph/subgraph's actual structure. + This operation is included - no credit consumption required. Args: @@ -232,6 +248,14 @@ async def asyncio_detailed( Property discovery is limited to 10 properties per node type for performance. For complete schema definitions, use `/schema/export`. + ## Subgraph Support + + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Each subgraph has independent schema and data. The returned schema reflects + only the specified graph/subgraph's actual structure. + This operation is included - no credit consumption required. Args: @@ -296,6 +320,14 @@ async def asyncio( Property discovery is limited to 10 properties per node type for performance. For complete schema definitions, use `/schema/export`. + ## Subgraph Support + + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Each subgraph has independent schema and data. The returned schema reflects + only the specified graph/subgraph's actual structure. + This operation is included - no credit consumption required. Args: diff --git a/robosystems_client/api/schema/validate_schema.py b/robosystems_client/api/schema/validate_schema.py index 1e774b7..4a880d7 100644 --- a/robosystems_client/api/schema/validate_schema.py +++ b/robosystems_client/api/schema/validate_schema.py @@ -105,6 +105,13 @@ def sync_detailed( - Performance problems - Naming conflicts + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Schema validation is performed against the specified graph/subgraph's current + schema and data structure. + This operation is included - no credit consumption required. Args: @@ -160,6 +167,13 @@ def sync( - Performance problems - Naming conflicts + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Schema validation is performed against the specified graph/subgraph's current + schema and data structure. + This operation is included - no credit consumption required. Args: @@ -210,6 +224,13 @@ async def asyncio_detailed( - Performance problems - Naming conflicts + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Schema validation is performed against the specified graph/subgraph's current + schema and data structure. + This operation is included - no credit consumption required. Args: @@ -263,6 +284,13 @@ async def asyncio( - Performance problems - Naming conflicts + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Schema validation is performed against the specified graph/subgraph's current + schema and data structure. + This operation is included - no credit consumption required. Args: diff --git a/robosystems_client/api/subgraphs/create_subgraph.py b/robosystems_client/api/subgraphs/create_subgraph.py index 78cf5f4..33bd206 100644 --- a/robosystems_client/api/subgraphs/create_subgraph.py +++ b/robosystems_client/api/subgraphs/create_subgraph.py @@ -81,6 +81,12 @@ def sync_detailed( **Returns:** - Created subgraph details including its unique ID + - Subgraph ID format: `{parent_id}_{subgraph_name}` (e.g., kg1234567890abcdef_dev) + + **Usage:** + - Subgraphs share parent's credit pool + - Subgraph ID can be used in all standard `/v1/graphs/{graph_id}/*` endpoints + - Permissions inherited from parent graph Args: graph_id (str): @@ -126,6 +132,12 @@ def sync( **Returns:** - Created subgraph details including its unique ID + - Subgraph ID format: `{parent_id}_{subgraph_name}` (e.g., kg1234567890abcdef_dev) + + **Usage:** + - Subgraphs share parent's credit pool + - Subgraph ID can be used in all standard `/v1/graphs/{graph_id}/*` endpoints + - Permissions inherited from parent graph Args: graph_id (str): @@ -166,6 +178,12 @@ async def asyncio_detailed( **Returns:** - Created subgraph details including its unique ID + - Subgraph ID format: `{parent_id}_{subgraph_name}` (e.g., kg1234567890abcdef_dev) + + **Usage:** + - Subgraphs share parent's credit pool + - Subgraph ID can be used in all standard `/v1/graphs/{graph_id}/*` endpoints + - Permissions inherited from parent graph Args: graph_id (str): @@ -209,6 +227,12 @@ async def asyncio( **Returns:** - Created subgraph details including its unique ID + - Subgraph ID format: `{parent_id}_{subgraph_name}` (e.g., kg1234567890abcdef_dev) + + **Usage:** + - Subgraphs share parent's credit pool + - Subgraph ID can be used in all standard `/v1/graphs/{graph_id}/*` endpoints + - Permissions inherited from parent graph Args: graph_id (str): diff --git a/robosystems_client/api/subgraphs/delete_subgraph.py b/robosystems_client/api/subgraphs/delete_subgraph.py index f662c9f..780b7d0 100644 --- a/robosystems_client/api/subgraphs/delete_subgraph.py +++ b/robosystems_client/api/subgraphs/delete_subgraph.py @@ -13,7 +13,7 @@ def _get_kwargs( graph_id: str, - subgraph_id: str, + subgraph_name: str, *, body: DeleteSubgraphRequest, ) -> dict[str, Any]: @@ -21,7 +21,7 @@ def _get_kwargs( _kwargs: dict[str, Any] = { "method": "delete", - "url": f"/v1/graphs/{graph_id}/subgraphs/{subgraph_id}", + "url": f"/v1/graphs/{graph_id}/subgraphs/{subgraph_name}", } _kwargs["json"] = body.to_dict() @@ -88,7 +88,7 @@ def _build_response( def sync_detailed( graph_id: str, - subgraph_id: str, + subgraph_name: str, *, client: AuthenticatedClient, body: DeleteSubgraphRequest, @@ -100,6 +100,7 @@ def sync_detailed( **Requirements:** - Must be a valid subgraph (not parent graph) - User must have admin access to parent graph + - Subgraph name must be alphanumeric (1-20 characters) - Optional backup before deletion **Deletion Options:** @@ -114,9 +115,14 @@ def sync_detailed( If backup requested, stored in S3 Kuzu database bucket at: `s3://{kuzu_s3_bucket}/{instance_id}/{database_name}_{timestamp}.backup` + **Notes:** + - Use the subgraph name (e.g., 'dev', 'staging') not the full subgraph ID + - Deletion does not affect parent graph's credit pool or permissions + - Backup creation consumes credits from parent graph's allocation + Args: graph_id (str): - subgraph_id (str): Subgraph identifier to delete + subgraph_name (str): Subgraph name to delete (e.g., 'dev', 'staging') body (DeleteSubgraphRequest): Request model for deleting a subgraph. Raises: @@ -129,7 +135,7 @@ def sync_detailed( kwargs = _get_kwargs( graph_id=graph_id, - subgraph_id=subgraph_id, + subgraph_name=subgraph_name, body=body, ) @@ -142,7 +148,7 @@ def sync_detailed( def sync( graph_id: str, - subgraph_id: str, + subgraph_name: str, *, client: AuthenticatedClient, body: DeleteSubgraphRequest, @@ -154,6 +160,7 @@ def sync( **Requirements:** - Must be a valid subgraph (not parent graph) - User must have admin access to parent graph + - Subgraph name must be alphanumeric (1-20 characters) - Optional backup before deletion **Deletion Options:** @@ -168,9 +175,14 @@ def sync( If backup requested, stored in S3 Kuzu database bucket at: `s3://{kuzu_s3_bucket}/{instance_id}/{database_name}_{timestamp}.backup` + **Notes:** + - Use the subgraph name (e.g., 'dev', 'staging') not the full subgraph ID + - Deletion does not affect parent graph's credit pool or permissions + - Backup creation consumes credits from parent graph's allocation + Args: graph_id (str): - subgraph_id (str): Subgraph identifier to delete + subgraph_name (str): Subgraph name to delete (e.g., 'dev', 'staging') body (DeleteSubgraphRequest): Request model for deleting a subgraph. Raises: @@ -183,7 +195,7 @@ def sync( return sync_detailed( graph_id=graph_id, - subgraph_id=subgraph_id, + subgraph_name=subgraph_name, client=client, body=body, ).parsed @@ -191,7 +203,7 @@ def sync( async def asyncio_detailed( graph_id: str, - subgraph_id: str, + subgraph_name: str, *, client: AuthenticatedClient, body: DeleteSubgraphRequest, @@ -203,6 +215,7 @@ async def asyncio_detailed( **Requirements:** - Must be a valid subgraph (not parent graph) - User must have admin access to parent graph + - Subgraph name must be alphanumeric (1-20 characters) - Optional backup before deletion **Deletion Options:** @@ -217,9 +230,14 @@ async def asyncio_detailed( If backup requested, stored in S3 Kuzu database bucket at: `s3://{kuzu_s3_bucket}/{instance_id}/{database_name}_{timestamp}.backup` + **Notes:** + - Use the subgraph name (e.g., 'dev', 'staging') not the full subgraph ID + - Deletion does not affect parent graph's credit pool or permissions + - Backup creation consumes credits from parent graph's allocation + Args: graph_id (str): - subgraph_id (str): Subgraph identifier to delete + subgraph_name (str): Subgraph name to delete (e.g., 'dev', 'staging') body (DeleteSubgraphRequest): Request model for deleting a subgraph. Raises: @@ -232,7 +250,7 @@ async def asyncio_detailed( kwargs = _get_kwargs( graph_id=graph_id, - subgraph_id=subgraph_id, + subgraph_name=subgraph_name, body=body, ) @@ -243,7 +261,7 @@ async def asyncio_detailed( async def asyncio( graph_id: str, - subgraph_id: str, + subgraph_name: str, *, client: AuthenticatedClient, body: DeleteSubgraphRequest, @@ -255,6 +273,7 @@ async def asyncio( **Requirements:** - Must be a valid subgraph (not parent graph) - User must have admin access to parent graph + - Subgraph name must be alphanumeric (1-20 characters) - Optional backup before deletion **Deletion Options:** @@ -269,9 +288,14 @@ async def asyncio( If backup requested, stored in S3 Kuzu database bucket at: `s3://{kuzu_s3_bucket}/{instance_id}/{database_name}_{timestamp}.backup` + **Notes:** + - Use the subgraph name (e.g., 'dev', 'staging') not the full subgraph ID + - Deletion does not affect parent graph's credit pool or permissions + - Backup creation consumes credits from parent graph's allocation + Args: graph_id (str): - subgraph_id (str): Subgraph identifier to delete + subgraph_name (str): Subgraph name to delete (e.g., 'dev', 'staging') body (DeleteSubgraphRequest): Request model for deleting a subgraph. Raises: @@ -285,7 +309,7 @@ async def asyncio( return ( await asyncio_detailed( graph_id=graph_id, - subgraph_id=subgraph_id, + subgraph_name=subgraph_name, client=client, body=body, ) diff --git a/robosystems_client/api/subgraphs/get_subgraph_info.py b/robosystems_client/api/subgraphs/get_subgraph_info.py index 937b889..d029e7c 100644 --- a/robosystems_client/api/subgraphs/get_subgraph_info.py +++ b/robosystems_client/api/subgraphs/get_subgraph_info.py @@ -12,11 +12,11 @@ def _get_kwargs( graph_id: str, - subgraph_id: str, + subgraph_name: str, ) -> dict[str, Any]: _kwargs: dict[str, Any] = { "method": "get", - "url": f"/v1/graphs/{graph_id}/subgraphs/{subgraph_id}/info", + "url": f"/v1/graphs/{graph_id}/subgraphs/{subgraph_name}/info", } return _kwargs @@ -74,7 +74,7 @@ def _build_response( def sync_detailed( graph_id: str, - subgraph_id: str, + subgraph_name: str, *, client: AuthenticatedClient, ) -> Response[Union[Any, HTTPValidationError, SubgraphResponse]]: @@ -84,6 +84,7 @@ def sync_detailed( **Requirements:** - User must have read access to parent graph + - Subgraph name must be alphanumeric (1-20 characters) **Response includes:** - Full subgraph metadata @@ -100,9 +101,13 @@ def sync_detailed( - Database size on disk - Schema information + **Note:** + Use the subgraph name (e.g., 'dev', 'staging') not the full subgraph ID. + The full ID is returned in the response (e.g., 'kg0123456789abcdef_dev'). + Args: graph_id (str): - subgraph_id (str): Subgraph identifier + subgraph_name (str): Subgraph name (e.g., 'dev', 'staging') Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -114,7 +119,7 @@ def sync_detailed( kwargs = _get_kwargs( graph_id=graph_id, - subgraph_id=subgraph_id, + subgraph_name=subgraph_name, ) response = client.get_httpx_client().request( @@ -126,7 +131,7 @@ def sync_detailed( def sync( graph_id: str, - subgraph_id: str, + subgraph_name: str, *, client: AuthenticatedClient, ) -> Optional[Union[Any, HTTPValidationError, SubgraphResponse]]: @@ -136,6 +141,7 @@ def sync( **Requirements:** - User must have read access to parent graph + - Subgraph name must be alphanumeric (1-20 characters) **Response includes:** - Full subgraph metadata @@ -152,9 +158,13 @@ def sync( - Database size on disk - Schema information + **Note:** + Use the subgraph name (e.g., 'dev', 'staging') not the full subgraph ID. + The full ID is returned in the response (e.g., 'kg0123456789abcdef_dev'). + Args: graph_id (str): - subgraph_id (str): Subgraph identifier + subgraph_name (str): Subgraph name (e.g., 'dev', 'staging') Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -166,14 +176,14 @@ def sync( return sync_detailed( graph_id=graph_id, - subgraph_id=subgraph_id, + subgraph_name=subgraph_name, client=client, ).parsed async def asyncio_detailed( graph_id: str, - subgraph_id: str, + subgraph_name: str, *, client: AuthenticatedClient, ) -> Response[Union[Any, HTTPValidationError, SubgraphResponse]]: @@ -183,6 +193,7 @@ async def asyncio_detailed( **Requirements:** - User must have read access to parent graph + - Subgraph name must be alphanumeric (1-20 characters) **Response includes:** - Full subgraph metadata @@ -199,9 +210,13 @@ async def asyncio_detailed( - Database size on disk - Schema information + **Note:** + Use the subgraph name (e.g., 'dev', 'staging') not the full subgraph ID. + The full ID is returned in the response (e.g., 'kg0123456789abcdef_dev'). + Args: graph_id (str): - subgraph_id (str): Subgraph identifier + subgraph_name (str): Subgraph name (e.g., 'dev', 'staging') Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -213,7 +228,7 @@ async def asyncio_detailed( kwargs = _get_kwargs( graph_id=graph_id, - subgraph_id=subgraph_id, + subgraph_name=subgraph_name, ) response = await client.get_async_httpx_client().request(**kwargs) @@ -223,7 +238,7 @@ async def asyncio_detailed( async def asyncio( graph_id: str, - subgraph_id: str, + subgraph_name: str, *, client: AuthenticatedClient, ) -> Optional[Union[Any, HTTPValidationError, SubgraphResponse]]: @@ -233,6 +248,7 @@ async def asyncio( **Requirements:** - User must have read access to parent graph + - Subgraph name must be alphanumeric (1-20 characters) **Response includes:** - Full subgraph metadata @@ -249,9 +265,13 @@ async def asyncio( - Database size on disk - Schema information + **Note:** + Use the subgraph name (e.g., 'dev', 'staging') not the full subgraph ID. + The full ID is returned in the response (e.g., 'kg0123456789abcdef_dev'). + Args: graph_id (str): - subgraph_id (str): Subgraph identifier + subgraph_name (str): Subgraph name (e.g., 'dev', 'staging') Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -264,7 +284,7 @@ async def asyncio( return ( await asyncio_detailed( graph_id=graph_id, - subgraph_id=subgraph_id, + subgraph_name=subgraph_name, client=client, ) ).parsed diff --git a/robosystems_client/api/tables/get_upload_url.py b/robosystems_client/api/tables/get_upload_url.py index b48ad79..6d7f7fd 100644 --- a/robosystems_client/api/tables/get_upload_url.py +++ b/robosystems_client/api/tables/get_upload_url.py @@ -123,6 +123,13 @@ def sync_detailed( Tables are automatically created on first file upload with type inferred from name (e.g., \"Transaction\" → relationship) and empty schema populated during ingestion. + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Each subgraph has completely isolated S3 staging areas and tables. Files uploaded + to one subgraph do not appear in other subgraphs. + **Important Notes:** - Presigned URLs expire (default: 1 hour) - Use appropriate Content-Type header when uploading to S3 @@ -192,6 +199,13 @@ def sync( Tables are automatically created on first file upload with type inferred from name (e.g., \"Transaction\" → relationship) and empty schema populated during ingestion. + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Each subgraph has completely isolated S3 staging areas and tables. Files uploaded + to one subgraph do not appear in other subgraphs. + **Important Notes:** - Presigned URLs expire (default: 1 hour) - Use appropriate Content-Type header when uploading to S3 @@ -256,6 +270,13 @@ async def asyncio_detailed( Tables are automatically created on first file upload with type inferred from name (e.g., \"Transaction\" → relationship) and empty schema populated during ingestion. + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Each subgraph has completely isolated S3 staging areas and tables. Files uploaded + to one subgraph do not appear in other subgraphs. + **Important Notes:** - Presigned URLs expire (default: 1 hour) - Use appropriate Content-Type header when uploading to S3 @@ -323,6 +344,13 @@ async def asyncio( Tables are automatically created on first file upload with type inferred from name (e.g., \"Transaction\" → relationship) and empty schema populated during ingestion. + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Each subgraph has completely isolated S3 staging areas and tables. Files uploaded + to one subgraph do not appear in other subgraphs. + **Important Notes:** - Presigned URLs expire (default: 1 hour) - Use appropriate Content-Type header when uploading to S3 diff --git a/robosystems_client/api/tables/ingest_tables.py b/robosystems_client/api/tables/ingest_tables.py index 7191471..9d1d2a1 100644 --- a/robosystems_client/api/tables/ingest_tables.py +++ b/robosystems_client/api/tables/ingest_tables.py @@ -110,7 +110,7 @@ def sync_detailed( 2. Files are validated and marked as 'uploaded' 3. Trigger ingestion: `POST /tables/ingest` 4. DuckDB staging tables created from S3 patterns - 5. Data copied row-by-row from DuckDB to Kuzu + 5. Data copied from DuckDB to Kuzu 6. Per-table results and metrics returned **Rebuild Feature:** @@ -141,6 +141,13 @@ def sync_detailed( you'll receive a 409 Conflict error. The distributed lock automatically expires after the configured TTL (default: 1 hour) to prevent deadlocks from failed ingestions. + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Each subgraph has independent staging tables and graph data. Ingestion operates + on the specified graph/subgraph only and does not affect other subgraphs. + **Important Notes:** - Only files with 'uploaded' status are processed - Tables with no uploaded files are skipped @@ -198,7 +205,7 @@ def sync( 2. Files are validated and marked as 'uploaded' 3. Trigger ingestion: `POST /tables/ingest` 4. DuckDB staging tables created from S3 patterns - 5. Data copied row-by-row from DuckDB to Kuzu + 5. Data copied from DuckDB to Kuzu 6. Per-table results and metrics returned **Rebuild Feature:** @@ -229,6 +236,13 @@ def sync( you'll receive a 409 Conflict error. The distributed lock automatically expires after the configured TTL (default: 1 hour) to prevent deadlocks from failed ingestions. + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Each subgraph has independent staging tables and graph data. Ingestion operates + on the specified graph/subgraph only and does not affect other subgraphs. + **Important Notes:** - Only files with 'uploaded' status are processed - Tables with no uploaded files are skipped @@ -281,7 +295,7 @@ async def asyncio_detailed( 2. Files are validated and marked as 'uploaded' 3. Trigger ingestion: `POST /tables/ingest` 4. DuckDB staging tables created from S3 patterns - 5. Data copied row-by-row from DuckDB to Kuzu + 5. Data copied from DuckDB to Kuzu 6. Per-table results and metrics returned **Rebuild Feature:** @@ -312,6 +326,13 @@ async def asyncio_detailed( you'll receive a 409 Conflict error. The distributed lock automatically expires after the configured TTL (default: 1 hour) to prevent deadlocks from failed ingestions. + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Each subgraph has independent staging tables and graph data. Ingestion operates + on the specified graph/subgraph only and does not affect other subgraphs. + **Important Notes:** - Only files with 'uploaded' status are processed - Tables with no uploaded files are skipped @@ -367,7 +388,7 @@ async def asyncio( 2. Files are validated and marked as 'uploaded' 3. Trigger ingestion: `POST /tables/ingest` 4. DuckDB staging tables created from S3 patterns - 5. Data copied row-by-row from DuckDB to Kuzu + 5. Data copied from DuckDB to Kuzu 6. Per-table results and metrics returned **Rebuild Feature:** @@ -398,6 +419,13 @@ async def asyncio( you'll receive a 409 Conflict error. The distributed lock automatically expires after the configured TTL (default: 1 hour) to prevent deadlocks from failed ingestions. + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Each subgraph has independent staging tables and graph data. Ingestion operates + on the specified graph/subgraph only and does not affect other subgraphs. + **Important Notes:** - Only files with 'uploaded' status are processed - Tables with no uploaded files are skipped diff --git a/robosystems_client/api/tables/query_tables.py b/robosystems_client/api/tables/query_tables.py index 0999e17..69aa1c0 100644 --- a/robosystems_client/api/tables/query_tables.py +++ b/robosystems_client/api/tables/query_tables.py @@ -146,6 +146,12 @@ def sync_detailed( - Read-only: No INSERT, UPDATE, DELETE - User's tables only: Cannot query other users' data + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Each subgraph has its own independent staging tables. + **Shared Repositories:** Shared repositories (SEC, etc.) do not allow direct SQL queries. Use the graph query endpoint instead: `POST /v1/graphs/{graph_id}/query` @@ -234,6 +240,12 @@ def sync( - Read-only: No INSERT, UPDATE, DELETE - User's tables only: Cannot query other users' data + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Each subgraph has its own independent staging tables. + **Shared Repositories:** Shared repositories (SEC, etc.) do not allow direct SQL queries. Use the graph query endpoint instead: `POST /v1/graphs/{graph_id}/query` @@ -317,6 +329,12 @@ async def asyncio_detailed( - Read-only: No INSERT, UPDATE, DELETE - User's tables only: Cannot query other users' data + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Each subgraph has its own independent staging tables. + **Shared Repositories:** Shared repositories (SEC, etc.) do not allow direct SQL queries. Use the graph query endpoint instead: `POST /v1/graphs/{graph_id}/query` @@ -403,6 +421,12 @@ async def asyncio( - Read-only: No INSERT, UPDATE, DELETE - User's tables only: Cannot query other users' data + **Subgraph Support:** + This endpoint accepts both parent graph IDs and subgraph IDs. + - Parent graph: Use `graph_id` like `kg0123456789abcdef` + - Subgraph: Use full subgraph ID like `kg0123456789abcdef_dev` + Each subgraph has its own independent staging tables. + **Shared Repositories:** Shared repositories (SEC, etc.) do not allow direct SQL queries. Use the graph query endpoint instead: `POST /v1/graphs/{graph_id}/query` diff --git a/robosystems_client/models/payment_method.py b/robosystems_client/models/payment_method.py index cecadce..488d87f 100644 --- a/robosystems_client/models/payment_method.py +++ b/robosystems_client/models/payment_method.py @@ -18,9 +18,9 @@ class PaymentMethod: type_ (str): Payment method type (card, bank_account, etc.) is_default (bool): Whether this is the default payment method brand (Union[None, Unset, str]): Card brand (visa, mastercard, etc.) - last4 (Union[None, Unset, str]): Last 4 digits - exp_month (Union[None, Unset, int]): Expiration month - exp_year (Union[None, Unset, int]): Expiration year + last4 (Union[None, Unset, str]): Last 4 digits of the card or account number + exp_month (Union[None, Unset, int]): Expiration month of the card + exp_year (Union[None, Unset, int]): Expiration year of the card """ id: str