{ "openapi": "3.1.0", "info": { "title": "Memobase API", "summary": "APIs for Memobase, a user memory system for LLM Apps", "version": "0.0.40" }, "servers": [ { "url": "https://api.memobase.dev" }, { "url": "https://api.memobase.cn" } ], "paths": { "/api/v1/healthcheck": { "get": { "tags": [ "chore" ], "summary": "Healthcheck", "description": "Check if your memobase is set up correctly", "operationId": "healthcheck_api_v1_healthcheck_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BaseResponse" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nmemobase = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nassert memobase.ping()\n\n", "label": "Python" }, { "lang": "javascript", "source": "// To use the JavaScript SDK, install the package:\n// npm install @memobase/memobase\n\nimport { MemoBaseClient } from '@memobase/memobase';\n\nconst client = new MemoBaseClient(process.env.MEMOBASE_PROJECT_URL, process.env.MEMOBASE_API_KEY);\n\nawait client.ping();\n\n", "label": "JavaScript" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Ping the server\n if !client.Ping() {\n log.Fatal(\"Failed to connect to server\")\n }\n fmt.Println(\"Successfully connected to server\")\n}\n\n", "label": "Go" } ], "security": [] } }, "/api/v1/admin/status_check": { "get": { "tags": [ "admin" ], "summary": "Root Running Status Check", "description": "Check if your memobase is set up correctly", "operationId": "root_running_status_check_api_v1_admin_status_check_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BaseResponse" } } } } } } }, "/api/v1/project/profile_config": { "get": { "tags": [ "project" ], "summary": "Get Project Profile Config String", "operationId": "get_project_profile_config_string_api_v1_project_profile_config_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProfileConfigDataResponse" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nmemobase = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nconfig = memobase.get_config()\n\n", "label": "Python" }, { "lang": "javascript", "source": "// To use the JavaScript SDK, install the package:\n// npm install @memobase/memobase\n\nimport { MemoBaseClient } from '@memobase/memobase';\n\nconst client = new MemoBaseClient(process.env.MEMOBASE_PROJECT_URL, process.env.MEMOBASE_API_KEY);\n\nconst config = await client.getConfig();\n\n", "label": "JavaScript" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get config\n config, err := client.GetConfig()\n if err != nil {\n log.Fatalf(\"Failed to get config: %v\", err)\n }\n fmt.Printf(\"Config: %s\n\", config)\n}\n\n", "label": "Go" } ] }, "post": { "tags": [ "project" ], "summary": "Update Project Profile Config", "operationId": "update_project_profile_config_api_v1_project_profile_config_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProfileConfigData", "description": "The profile config to update" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BaseResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nmemobase = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nmemobase.update_config('your_profile_config')\n\n", "label": "Python" }, { "lang": "javascript", "source": "// To use the JavaScript SDK, install the package:\n// npm install @memobase/memobase\n\nimport { MemoBaseClient } from '@memobase/memobase';\n\nconst client = new MemoBaseClient(process.env.MEMOBASE_PROJECT_URL, process.env.MEMOBASE_API_KEY);\n\nawait client.updateConfig('your_profile_config');\n\n", "label": "JavaScript" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Update config\n err = client.UpdateConfig(\"your_profile_config\")\n if err != nil {\n log.Fatalf(\"Failed to update config: %v\", err)\n }\n fmt.Println(\"Successfully updated config\")\n}\n\n", "label": "Go" } ] } }, "/api/v1/project/billing": { "get": { "tags": [ "project" ], "summary": "Get Project Billing", "operationId": "get_project_billing_api_v1_project_billing_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BillingResponse" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nmemobase = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nprint(memobase.get_usage())\n\n", "label": "Python" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get usage\n usage, err := client.GetUsage()\n if err != nil {\n log.Fatalf(\"Failed to get usage: %v\", err)\n }\n fmt.Printf(\"Usage: %v\n\", usage)\n}\n\n", "label": "Go" } ] } }, "/api/v1/project/users": { "get": { "tags": [ "project" ], "summary": "Get Project Users", "description": "Get the users of a project in different orders", "operationId": "get_project_users_api_v1_project_users_get", "parameters": [ { "name": "search", "in": "query", "required": false, "schema": { "type": "string", "description": "Search string in username field", "default": "", "title": "Search" }, "description": "Search string in username field" }, { "name": "order_by", "in": "query", "required": false, "schema": { "enum": [ "updated_at", "profile_count", "event_count" ], "type": "string", "description": "Order by field", "default": "updated_at", "title": "Order By" }, "description": "Order by field" }, { "name": "order_desc", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Order descending or ascending", "default": true, "title": "Order Desc" }, "description": "Order descending or ascending" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "description": "Limit the number of results returned", "default": 10, "title": "Limit" }, "description": "Limit the number of results returned" }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "description": "Offset the starting point for pagination", "default": 0, "title": "Offset" }, "description": "Offset the starting point for pagination" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectUsersDataResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nmemobase = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nusers = memobase.get_all_users(search=\"\", order_by=\"updated_at\", order_desc=True, limit=10, offset=0)\n\n", "label": "Python" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get all users\n users, err := client.GetAllUsers(\"\", \"updated_at\", true, 10, 0)\n if err != nil {\n log.Fatalf(\"Failed to get all users: %v\", err)\n }\n fmt.Printf(\"Found %d users\n\", len(users))\n}\n\n", "label": "Go" } ] } }, "/api/v1/project/usage": { "get": { "tags": [ "project" ], "summary": "Get Project Usage", "description": "Get the usage of a project in the last days", "operationId": "get_project_usage_api_v1_project_usage_get", "parameters": [ { "name": "last_days", "in": "query", "required": false, "schema": { "type": "integer", "description": "The number of days to get", "default": 7, "title": "Last Days" }, "description": "The number of days to get" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UsageResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nmemobase = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nusage = memobase.get_daily_usage(days=7)\n\n", "label": "Python" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get daily usage\n usage, err := client.GetDailyUsage(7)\n if err != nil {\n log.Fatalf(\"Failed to get daily usage: %v\", err)\n }\n fmt.Printf(\"Usage: %v\n\", usage)\n}\n\n", "label": "Go" } ] } }, "/api/v1/users": { "post": { "tags": [ "user" ], "summary": "Create User", "description": "Create a new user with additional data", "operationId": "create_user_api_v1_users_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserData", "description": "User data for creating a new user" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nuid = client.add_user({\"ANY\": \"DATA\"})\n\n", "label": "Python" }, { "lang": "javascript", "source": "// To use the JavaScript SDK, install the package:\n// npm install @memobase/memobase\n\nimport { MemoBaseClient } from '@memobase/memobase';\n\nconst client = new MemoBaseClient(process.env.MEMOBASE_PROJECT_URL, process.env.MEMOBASE_API_KEY);\n\nconst userId = await client.addUser({ANY: \"DATA\"});\n\n", "label": "JavaScript" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/google/uuid\"\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Add a user\n userID := uuid.New().String()\n data := map[string]interface{}{\"ANY\": \"DATA\"}\n _, err = client.AddUser(data, userID)\n if err != nil {\n log.Fatalf(\"Failed to add user: %v\", err)\n }\n fmt.Printf(\"User added with ID: %s\n\", userID)\n}\n\n", "label": "Go" } ] } }, "/api/v1/users/{user_id}": { "get": { "tags": [ "user" ], "summary": "Get User", "operationId": "get_user_api_v1_users__user_id__get", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user to retrieve", "title": "User Id" }, "description": "The ID of the user to retrieve" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserDataResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nu = client.get_user(uid)\n\n", "label": "Python" }, { "lang": "javascript", "source": "// To use the JavaScript SDK, install the package:\n// npm install @memobase/memobase\n\nimport { MemoBaseClient } from '@memobase/memobase';\n\nconst client = new MemoBaseClient(process.env.MEMOBASE_PROJECT_URL, process.env.MEMOBASE_API_KEY);\n\nconst user = await client.getUser(userId);\n\n", "label": "JavaScript" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/google/uuid\"\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get a user\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n user, err := client.GetUser(userID, false)\n if err != nil {\n log.Fatalf(\"Failed to get user: %v\", err)\n }\n fmt.Printf(\"Successfully retrieved user with ID: %s\n\", user.UserID)\n}\n\n", "label": "Go" } ] }, "put": { "tags": [ "user" ], "summary": "Update User", "operationId": "update_user_api_v1_users__user_id__put", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user to update", "title": "User Id" }, "description": "The ID of the user to update" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "additionalProperties": true, "description": "Updated user data", "title": "User Data" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nclient.update_user(uid, {\"ANY\": \"NEW_DATA\"})\n\n", "label": "Python" }, { "lang": "javascript", "source": "// To use the JavaScript SDK, install the package:\n// npm install @memobase/memobase\n\nimport { MemoBaseClient } from '@memobase/memobase';\n\nconst client = new MemoBaseClient(process.env.MEMOBASE_PROJECT_URL, process.env.MEMOBASE_API_KEY);\n\nawait client.updateUser(userId, {ANY: \"NEW_DATA\"});\n\n", "label": "JavaScript" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Update a user\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n newData := map[string]interface{}{\"ANY\": \"NEW_DATA\"}\n _, err = client.UpdateUser(userID, newData)\n if err != nil {\n log.Fatalf(\"Failed to update user: %v\", err)\n }\n fmt.Printf(\"Successfully updated user with ID: %s\n\", userID)\n}\n\n", "label": "Go" } ] }, "delete": { "tags": [ "user" ], "summary": "Delete User", "operationId": "delete_user_api_v1_users__user_id__delete", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user to delete", "title": "User Id" }, "description": "The ID of the user to delete" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BaseResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nclient.delete_user(uid)\n\n", "label": "Python" }, { "lang": "javascript", "source": "// To use the JavaScript SDK, install the package:\n// npm install @memobase/memobase\n\nimport { MemoBaseClient } from '@memobase/memobase';\n\nconst client = new MemoBaseClient(process.env.MEMOBASE_PROJECT_URL, process.env.MEMOBASE_API_KEY);\n\nawait client.deleteUser(userId);\n\n", "label": "JavaScript" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Delete a user\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n err = client.DeleteUser(userID)\n if err != nil {\n log.Fatalf(\"Failed to delete user: %v\", err)\n }\n fmt.Printf(\"Successfully deleted user with ID: %s\n\", userID)\n}\n\n", "label": "Go" } ] } }, "/api/v1/users/blobs/{user_id}/{blob_type}": { "get": { "tags": [ "user" ], "summary": "Get User All Blobs", "operationId": "get_user_all_blobs_api_v1_users_blobs__user_id___blob_type__get", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user to fetch blobs for", "title": "User Id" }, "description": "The ID of the user to fetch blobs for" }, { "name": "blob_type", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/BlobType", "description": "The type of blobs to retrieve" }, "description": "The type of blobs to retrieve" }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "description": "Page number for pagination, starting from 0", "default": 0, "title": "Page" }, "description": "Page number for pagination, starting from 0" }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "description": "Number of items per page, default is 10", "default": 10, "title": "Page Size" }, "description": "Number of items per page, default is 10" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\nfrom memobase.core.blob import BlobType\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nuser = client.get_user('user_id')\nblobs = user.get_all(BlobType.chat)\n\n", "label": "Python" }, { "lang": "javascript", "source": "// To use the JavaScript SDK, install the package:\n// npm install @memobase/memobase\n\nimport { MemoBaseClient, BlobType } from '@memobase/memobase';\n\nconst client = new MemoBaseClient(process.env.MEMOBASE_PROJECT_URL, process.env.MEMOBASE_API_KEY);\n\nconst user = client.getUser('user_id');\nconst blobs = await user.getAll(BlobType.Enum.chat);\n\n", "label": "JavaScript" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/blob\"\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get a user\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n user, err := client.GetUser(userID, false)\n if err != nil {\n log.Fatalf(\"Failed to get user: %v\", err)\n }\n\n // Get all chat blobs\n blobIDs, err := user.GetAll(blob.ChatType, 0, 10)\n if err != nil {\n log.Fatalf(\"Failed to get blobs: %v\", err)\n }\n\n fmt.Printf(\"Found %d chat blobs\n\", len(blobIDs))\n}\n\n", "label": "Go" } ] } }, "/api/v1/blobs/insert/{user_id}": { "post": { "tags": [ "blob" ], "summary": "Insert Blob", "operationId": "insert_blob_api_v1_blobs_insert__user_id__post", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user to insert the blob for", "title": "User Id" }, "description": "The ID of the user to insert the blob for" }, { "name": "wait_process", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Whether to wait for the blob to be processed", "default": false, "title": "Wait Process" }, "description": "Whether to wait for the blob to be processed" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BlobData", "description": "The blob data to insert" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BlobInsertResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\nfrom memobase.core.blob import ChatBlob\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nb = ChatBlob(messages=[\n {\n \"role\": \"user\",\n \"content\": \"Hi, I'm here again\"\n },\n {\n \"role\": \"assistant\",\n \"content\": \"Hi, Gus! How can I help you?\"\n }\n])\nu = client.get_user(uid)\nbid = u.insert(b)\n\n", "label": "Python" }, { "lang": "javascript", "source": "// To use the JavaScript SDK, install the package:\n// npm install @memobase/memobase\n\nimport { MemoBaseClient, Blob, BlobType } from '@memobase/memobase';\n\nconst client = new MemoBaseClient(process.env.MEMOBASE_PROJECT_URL, process.env.MEMOBASE_API_KEY);\nconst user = await client.getUser(userId);\n\nconst blobId = await user.insert(Blob.parse({\n type: BlobType.Enum.chat,\n messages: [\n {\n role: 'user',\n content: 'Hi, I'm here again'\n },\n {\n role: 'assistant',\n content: 'Hi, Gus! How can I help you?'\n }\n ]\n}));\n\n", "label": "JavaScript" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/blob\"\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get a user\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n user, err := client.GetUser(userID, false)\n if err != nil {\n log.Fatalf(\"Failed to get user: %v\", err)\n }\n\n // Create a chat blob\n chatBlob := &blob.ChatBlob{\n BaseBlob: blob.BaseBlob{\n Type: blob.ChatType,\n },\n Messages: []blob.OpenAICompatibleMessage{\n {\n Role: \"user\",\n Content: \"Hello, I am Jinjia!\",\n },\n {\n Role: \"assistant\",\n Content: \"Hi there! How can I help you today?\",\n },\n },\n }\n\n // Insert the blob\n blobID, err := user.Insert(chatBlob, false)\n if err != nil {\n log.Fatalf(\"Failed to insert blob: %v\", err)\n }\n fmt.Printf(\"Successfully inserted blob with ID: %s\n\", blobID)\n}\n\n", "label": "Go" } ] } }, "/api/v1/blobs/{user_id}/{blob_id}": { "get": { "tags": [ "blob" ], "summary": "Get Blob", "operationId": "get_blob_api_v1_blobs__user_id___blob_id__get", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user", "title": "User Id" }, "description": "The ID of the user" }, { "name": "blob_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the blob to retrieve", "title": "Blob Id" }, "description": "The ID of the blob to retrieve" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BlobDataResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nu = client.get_user(uid)\nb = u.get(bid)\n\n", "label": "Python" }, { "lang": "javascript", "source": "// To use the JavaScript SDK, install the package:\n// npm install @memobase/memobase\n\nimport { MemoBaseClient } from '@memobase/memobase';\n\nconst client = new MemoBaseClient(process.env.MEMOBASE_PROJECT_URL, process.env.MEMOBASE_API_KEY);\nconst user = await client.getUser(userId);\n\nconst blob = await user.get(blobId);\n\n", "label": "JavaScript" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/blob\"\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get a user\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n user, err := client.GetUser(userID, false)\n if err != nil {\n log.Fatalf(\"Failed to get user: %v\", err)\n }\n\n // Get a blob\n blobID := \"EXISTING_BLOB_ID\" // Replace with an actual blob ID\n retrievedBlob, err := user.Get(blobID)\n if err != nil {\n log.Fatalf(\"Failed to get blob: %v\", err)\n }\n\n // Type assert to use as ChatBlob\n if chatBlob, ok := retrievedBlob.(*blob.ChatBlob); ok {\n fmt.Printf(\"Retrieved message: %s\n\", chatBlob.Messages[0].Content)\n }\n}\n\n", "label": "Go" } ] }, "delete": { "tags": [ "blob" ], "summary": "Delete Blob", "operationId": "delete_blob_api_v1_blobs__user_id___blob_id__delete", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user", "title": "User Id" }, "description": "The ID of the user" }, { "name": "blob_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the blob to delete", "title": "Blob Id" }, "description": "The ID of the blob to delete" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BaseResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nu = client.get_user(uid)\nu.delete(bid)\n\n", "label": "Python" }, { "lang": "javascript", "source": "// To use the JavaScript SDK, install the package:\n// npm install @memobase/memobase\n\nimport { MemoBaseClient } from '@memobase/memobase';\n\nconst client = new MemoBaseClient(process.env.MEMOBASE_PROJECT_URL, process.env.MEMOBASE_API_KEY);\nconst user = await client.getUser(userId);\n\nawait user.delete(blobId);\n\n", "label": "JavaScript" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get a user\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n user, err := client.GetUser(userID, false)\n if err != nil {\n log.Fatalf(\"Failed to get user: %v\", err)\n }\n\n // Delete a blob\n blobID := \"EXISTING_BLOB_ID\" // Replace with an actual blob ID\n err = user.Delete(blobID)\n if err != nil {\n log.Fatalf(\"Failed to delete blob: %v\", err)\n }\n fmt.Printf(\"Successfully deleted blob with ID: %s\n\", blobID)\n}\n\n", "label": "Go" } ] } }, "/api/v1/users/profile/{user_id}": { "get": { "tags": [ "profile" ], "summary": "Get User Profile", "description": "Get the real-time user profiles for long term memory", "operationId": "get_user_profile_api_v1_users_profile__user_id__get", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user to get profiles for", "title": "User Id" }, "description": "The ID of the user to get profiles for" }, { "name": "topk", "in": "query", "required": false, "schema": { "type": "integer", "description": "Number of profiles to retrieve, default is all", "title": "Topk" }, "description": "Number of profiles to retrieve, default is all" }, { "name": "max_token_size", "in": "query", "required": false, "schema": { "type": "integer", "description": "Max token size of returned profile content, default is all", "title": "Max Token Size" }, "description": "Max token size of returned profile content, default is all" }, { "name": "prefer_topics", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string" }, "description": "Rank prefer topics at first to try to keep them in filtering, default order is by updated time", "title": "Prefer Topics" }, "description": "Rank prefer topics at first to try to keep them in filtering, default order is by updated time" }, { "name": "only_topics", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string" }, "description": "Only return profiles with these topics, default is all", "title": "Only Topics" }, "description": "Only return profiles with these topics, default is all" }, { "name": "max_subtopic_size", "in": "query", "required": false, "schema": { "type": "integer", "description": "Max subtopic size of the same topic in returned profile, default is all", "title": "Max Subtopic Size" }, "description": "Max subtopic size of the same topic in returned profile, default is all" }, { "name": "topic_limits_json", "in": "query", "required": false, "schema": { "type": "string", "description": "Set specific subtopic limits for topics in JSON, for example {\"topic1\": 3, \"topic2\": 5}. The limits in this param will override `max_subtopic_size`.", "title": "Topic Limits Json" }, "description": "Set specific subtopic limits for topics in JSON, for example {\"topic1\": 3, \"topic2\": 5}. The limits in this param will override `max_subtopic_size`." }, { "name": "chats_str", "in": "query", "required": false, "schema": { "type": "string", "description": "List of chats in OpenAI Message format, for example: [{\"role\": \"user\", \"content\": \"Hello\"}, {\"role\": \"assistant\", \"content\": \"Hi\"}]", "title": "Chats Str" }, "description": "List of chats in OpenAI Message format, for example: [{\"role\": \"user\", \"content\": \"Hello\"}, {\"role\": \"assistant\", \"content\": \"Hi\"}]" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserProfileResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nu = client.get_user(uid)\np = u.profile()\n\n", "label": "Python" }, { "lang": "javascript", "source": "// To use the JavaScript SDK, install the package:\n// npm install @memobase/memobase\n\nimport { MemoBaseClient } from '@memobase/memobase';\n\nconst client = new MemoBaseClient(process.env.MEMOBASE_PROJECT_URL, process.env.MEMOBASE_API_KEY);\nconst user = await client.getUser(userId);\n\nconst profiles = await user.profile();\n\n", "label": "JavaScript" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get a user\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n user, err := client.GetUser(userID, false)\n if err != nil {\n log.Fatalf(\"Failed to get user: %v\", err)\n }\n\n // Get user profile\n profiles, err := user.Profile(nil)\n if err != nil {\n log.Fatalf(\"Failed to get user profile: %v\", err)\n }\n\n // Print profiles\n fmt.Println(\"\nUser Profiles:\")\n for _, profile := range profiles {\n fmt.Printf(\"ID: %s\nTopic: %s\nSub-topic: %s\nContent: %s\n\n\",\n profile.ID,\n profile.Attributes.Topic,\n profile.Attributes.SubTopic,\n profile.Content,\n )\n }\n}\n\n", "label": "Go" } ] }, "post": { "tags": [ "profile" ], "summary": "Add User Profile", "description": "Add the real-time user profiles for long term memory", "operationId": "add_user_profile_api_v1_users_profile__user_id__post", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user", "title": "User Id" }, "description": "The ID of the user" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProfileDelta", "description": "The content of the profile to add" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nuser = client.get_user('user_id')\nuser.add_profile(content=\"I am a software engineer\", topic=\"career\", sub_topic=\"job\")\n\n", "label": "Python" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get a user\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n user, err := client.GetUser(userID, false)\n if err != nil {\n log.Fatalf(\"Failed to get user: %v\", err)\n }\n\n // Add a profile\n profileID, err := user.AddProfile(\"value\", \"topic\", \"sub_topic\")\n if err != nil {\n log.Fatalf(\"Failed to add profile: %v\", err)\n }\n fmt.Printf(\"Successfully added profile with ID: %s\n\", profileID)\n}\n\n", "label": "Go" } ] } }, "/api/v1/users/profile/import/{user_id}": { "post": { "tags": [ "profile" ], "summary": "Import User Context", "operationId": "import_user_context_api_v1_users_profile_import__user_id__post", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user", "title": "User Id" }, "description": "The ID of the user" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserContextImport", "description": "The content of the user context to import" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BaseResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/users/profile/{user_id}/{profile_id}": { "put": { "tags": [ "profile" ], "summary": "Update User Profile", "description": "Update the real-time user profiles for long term memory", "operationId": "update_user_profile_api_v1_users_profile__user_id___profile_id__put", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user", "title": "User Id" }, "description": "The ID of the user" }, { "name": "profile_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the profile to update", "title": "Profile Id" }, "description": "The ID of the profile to update" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProfileDelta", "description": "The content of the profile to update" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BaseResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nuser = client.get_user('user_id')\nuser.update_profile(profile_id=\"profile_id\", content=\"I am a software engineer\", topic=\"career\", sub_topic=\"job\")\n\n", "label": "Python" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get a user\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n user, err := client.GetUser(userID, false)\n if err != nil {\n log.Fatalf(\"Failed to get user: %v\", err)\n }\n\n // Update a profile\n profileID := \"EXISTING_PROFILE_ID\" // Replace with an actual profile ID\n err = user.UpdateProfile(profileID, \"value2\", \"topic2\", \"sub_topic2\")\n if err != nil {\n log.Fatalf(\"Failed to update profile: %v\", err)\n }\n fmt.Printf(\"Successfully updated profile with ID: %s\n\", profileID)\n}\n\n", "label": "Go" } ] }, "delete": { "tags": [ "profile" ], "summary": "Delete User Profile", "description": "Delete a profile", "operationId": "delete_user_profile_api_v1_users_profile__user_id___profile_id__delete", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user", "title": "User Id" }, "description": "The ID of the user" }, { "name": "profile_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the profile to delete", "title": "Profile Id" }, "description": "The ID of the profile to delete" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BaseResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nuser = client.get_user('user_id')\nuser.delete_profile('profile_id')\n\n", "label": "Python" }, { "lang": "javascript", "source": "// To use the JavaScript SDK, install the package:\n// npm install @memobase/memobase\n\nimport { MemoBaseClient } from '@memobase/memobase';\n\nconst client = new MemoBaseClient(process.env.MEMOBASE_PROJECT_URL, process.env.MEMOBASE_API_KEY);\n\nawait client.deleteProfile('user_id', 'profile_id');\n\n", "label": "JavaScript" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get a user\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n user, err := client.GetUser(userID, false)\n if err != nil {\n log.Fatalf(\"Failed to get user: %v\", err)\n }\n\n // Delete a profile\n profileID := \"EXISTING_PROFILE_ID\" // Replace with an actual profile ID\n err = user.DeleteProfile(profileID)\n if err != nil {\n log.Fatalf(\"Failed to delete profile: %v\", err)\n }\n fmt.Printf(\"Successfully deleted profile with ID: %s\n\", profileID)\n}\n\n", "label": "Go" } ] } }, "/api/v1/users/buffer/{user_id}/{buffer_type}": { "post": { "tags": [ "buffer" ], "summary": "Flush Buffer", "description": "Flush unprocessed blobs into Memory", "operationId": "flush_buffer_api_v1_users_buffer__user_id___buffer_type__post", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user", "title": "User Id" }, "description": "The ID of the user" }, { "name": "buffer_type", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/BlobType", "description": "The type of buffer to flush" }, "description": "The type of buffer to flush" }, { "name": "wait_process", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Whether to wait for the buffer to be processed", "default": false, "title": "Wait Process" }, "description": "Whether to wait for the buffer to be processed" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChatModalAPIResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nu = client.get_user(uid)\nu.flush()\nu.flush(sync=True) # wait for the buffer to be processed\n\n", "label": "Python" }, { "lang": "javascript", "source": "// To use the JavaScript SDK, install the package:\n// npm install @memobase/memobase\n\nimport { MemoBaseClient, BlobType } from '@memobase/memobase';\n\nconst client = new MemoBaseClient(process.env.MEMOBASE_PROJECT_URL, process.env.MEMOBASE_API_KEY);\nconst user = await client.getUser(userId);\n\nawait user.flush(BlobType.Enum.chat);\n\n", "label": "JavaScript" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/blob\"\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get a user\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n user, err := client.GetUser(userID, false)\n if err != nil {\n log.Fatalf(\"Failed to get user: %v\", err)\n }\n\n // Flush the buffer\n err = user.Flush(blob.ChatType, false)\n if err != nil {\n log.Fatalf(\"Failed to flush buffer: %v\", err)\n }\n fmt.Println(\"Successfully flushed buffer\")\n}\n\n", "label": "Go" } ] } }, "/api/v1/users/buffer/capacity/{user_id}/{buffer_type}": { "get": { "tags": [ "buffer" ], "summary": "Get Processing Buffer Ids", "description": "Get processing buffer ids", "operationId": "get_processing_buffer_ids_api_v1_users_buffer_capacity__user_id___buffer_type__get", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user", "title": "User Id" }, "description": "The ID of the user" }, { "name": "buffer_type", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/BlobType", "description": "The type of buffer to flush" }, "description": "The type of buffer to flush" }, { "name": "status", "in": "query", "required": false, "schema": { "enum": [ "idle", "processing", "failed", "done" ], "type": "string", "description": "The status of the buffer to get", "default": "processing", "title": "Status" }, "description": "The status of the buffer to get" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\nfrom memobase.core.blob import BlobType\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\nuser = client.get_user('user_id')\nblobs = user.buffer(BlobType.chat)\n\n", "label": "Python" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/blob\"\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get a user\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n user, err := client.GetUser(userID, false)\n if err != nil {\n log.Fatalf(\"Failed to get user: %v\", err)\n }\n\n // Get buffer capacity\n blobIDs, err := user.Buffer(blob.ChatType, \"processing\")\n if err != nil {\n log.Fatalf(\"Failed to get buffer capacity: %v\", err)\n }\n fmt.Printf(\"Found %d blobs in buffer\n\", len(blobIDs))\n}\n\n", "label": "Go" } ] } }, "/api/v1/users/event/{user_id}": { "get": { "tags": [ "event" ], "summary": "Get User Events", "operationId": "get_user_events_api_v1_users_event__user_id__get", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user", "title": "User Id" }, "description": "The ID of the user" }, { "name": "topk", "in": "query", "required": false, "schema": { "type": "integer", "description": "Number of events to retrieve, default is 10", "default": 10, "title": "Topk" }, "description": "Number of events to retrieve, default is 10" }, { "name": "max_token_size", "in": "query", "required": false, "schema": { "type": "integer", "description": "Max token size of returned events", "title": "Max Token Size" }, "description": "Max token size of returned events" }, { "name": "need_summary", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Whether to return events with summaries", "default": false, "title": "Need Summary" }, "description": "Whether to return events with summaries" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserEventsDataResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\nu = client.get_user(uid)\n\nevents = u.event(topk=10, max_token_size=1000, need_summary=True)\n\n", "label": "Python" }, { "lang": "javascript", "source": "// To use the JavaScript SDK, install the package:\n// npm install @memobase/memobase\n\nimport { MemoBaseClient } from '@memobase/memobase';\n\nconst client = new MemoBaseClient(process.env.MEMOBASE_PROJECT_URL, process.env.MEMOBASE_API_KEY);\nconst user = await client.getUser(userId);\n\nconst events = await user.event();\n\n", "label": "JavaScript" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get a user\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n user, err := client.GetUser(userID, false)\n if err != nil {\n log.Fatalf(\"Failed to get user: %v\", err)\n }\n\n // Get user events\n events, err := user.Event(10, nil, false)\n if err != nil {\n log.Fatalf(\"Failed to get events: %v\", err)\n }\n\n fmt.Printf(\"Found %d events\n\", len(events))\n}\n\n", "label": "Go" } ] } }, "/api/v1/users/event/{user_id}/{event_id}": { "put": { "tags": [ "event" ], "summary": "Update User Event", "operationId": "update_user_event_api_v1_users_event__user_id___event_id__put", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user", "title": "User Id" }, "description": "The ID of the user" }, { "name": "event_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the event", "title": "Event Id" }, "description": "The ID of the event" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventData", "description": "Event data to update" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BaseResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\nuid = client.add_user()\nu = client.get_user(uid)\n# ... insert messages to user\n\nevents = u.event(topk=5)\neid = events[0].id\n\nu.update_event(eid, {\"event_tip\": \"The event is about...\"})\nprint(u.event(topk=1))\n\n", "label": "Python" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get a user\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n user, err := client.GetUser(userID, false)\n if err != nil {\n log.Fatalf(\"Failed to get user: %v\", err)\n }\n\n // Update an event\n eventID := \"EXISTING_EVENT_ID\" // Replace with an actual event ID\n eventData := map[string]interface{}{\"event_tip\": \"The event is about...\"}\n err = user.UpdateEvent(eventID, eventData)\n if err != nil {\n log.Fatalf(\"Failed to update event: %v\", err)\n }\n fmt.Printf(\"Successfully updated event with ID: %s\n\", eventID)\n}\n\n", "label": "Go" } ] }, "delete": { "tags": [ "event" ], "summary": "Delete User Event", "operationId": "delete_user_event_api_v1_users_event__user_id___event_id__delete", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user", "title": "User Id" }, "description": "The ID of the user" }, { "name": "event_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the event", "title": "Event Id" }, "description": "The ID of the event" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BaseResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\nuid = client.add_user()\nu = client.get_user(uid)\n# ... insert messages to user\n\nevents = u.event(topk=1)\nprint(events)\n\neid = events[0].id\nu.delete_event(eid)\n\nprint(u.event(topk=1))\n\n", "label": "Python" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get a user\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n user, err := client.GetUser(userID, false)\n if err != nil {\n log.Fatalf(\"Failed to get user: %v\", err)\n }\n\n // Delete an event\n eventID := \"EXISTING_EVENT_ID\" // Replace with an actual event ID\n err = user.DeleteEvent(eventID)\n if err != nil {\n log.Fatalf(\"Failed to delete event: %v\", err)\n }\n fmt.Printf(\"Successfully deleted event with ID: %s\n\", eventID)\n}\n\n", "label": "Go" } ] } }, "/api/v1/users/event/search/{user_id}": { "get": { "tags": [ "event" ], "summary": "Search User Events", "operationId": "search_user_events_api_v1_users_event_search__user_id__get", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user", "title": "User Id" }, "description": "The ID of the user" }, { "name": "query", "in": "query", "required": true, "schema": { "type": "string", "description": "The query to search for", "title": "Query" }, "description": "The query to search for" }, { "name": "topk", "in": "query", "required": false, "schema": { "type": "integer", "description": "Number of events to retrieve, default is 10", "default": 10, "title": "Topk" }, "description": "Number of events to retrieve, default is 10" }, { "name": "similarity_threshold", "in": "query", "required": false, "schema": { "type": "number", "description": "Similarity threshold, default is 0.2", "default": 0.2, "title": "Similarity Threshold" }, "description": "Similarity threshold, default is 0.2" }, { "name": "time_range_in_days", "in": "query", "required": false, "schema": { "type": "integer", "description": "Only allow events within the past few days, default is 180", "default": 180, "title": "Time Range In Days" }, "description": "Only allow events within the past few days, default is 180" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserEventsDataResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\nfrom memobase.core.blob import ChatBlob\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\nuid = client.add_user()\nu = client.get_user(uid)\n\nb = ChatBlob(messages=[\n {\n \"role\": \"user\",\n \"content\": \"Hi, I'm here again\"\n },\n {\n \"role\": \"assistant\",\n \"content\": \"Hi, Gus! How can I help you?\"\n }\n])\nu.insert(b)\nu.flush(sync=True)\n\nevents = u.search_event('query')\nprint(events)\n\n", "label": "Python" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get a user\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n user, err := client.GetUser(userID, false)\n if err != nil {\n log.Fatalf(\"Failed to get user: %v\", err)\n }\n\n // Search for events\n events, err := user.SearchEvent(\"query\", 10, 0.7, 7)\n if err != nil {\n log.Fatalf(\"Failed to search events: %v\", err)\n }\n\n fmt.Printf(\"Found %d events\n\", len(events))\n}\n\n", "label": "Go" } ] } }, "/api/v1/users/event_gist/search/{user_id}": { "get": { "tags": [ "event_gist" ], "summary": "Search User Event Gists", "operationId": "search_user_event_gists_api_v1_users_event_gist_search__user_id__get", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user", "title": "User Id" }, "description": "The ID of the user" }, { "name": "query", "in": "query", "required": true, "schema": { "type": "string", "description": "The query to search for", "title": "Query" }, "description": "The query to search for" }, { "name": "topk", "in": "query", "required": false, "schema": { "type": "integer", "description": "Number of events to retrieve, default is 10", "default": 10, "title": "Topk" }, "description": "Number of events to retrieve, default is 10" }, { "name": "similarity_threshold", "in": "query", "required": false, "schema": { "type": "number", "description": "Similarity threshold, default is 0.2", "default": 0.2, "title": "Similarity Threshold" }, "description": "Similarity threshold, default is 0.2" }, { "name": "time_range_in_days", "in": "query", "required": false, "schema": { "type": "integer", "description": "Only allow events within the past few days, default is 180", "default": 180, "title": "Time Range In Days" }, "description": "Only allow events within the past few days, default is 180" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserEventGistsDataResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\nfrom memobase import MemoBaseClient\nfrom memobase.core.blob import ChatBlob\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\nuid = client.add_user()\nu = client.get_user(uid)\n\nb = ChatBlob(messages=[\n {\n \"role\": \"user\",\n \"content\": \"Hi, I'm here again\"\n },\n {\n \"role\": \"assistant\",\n \"content\": \"Hi, Gus! How can I help you?\"\n }\n])\nu.insert(b)\nu.flush(sync=True)\n\nevents = u.search_event_gist('query')\nprint(events)\n", "label": "Python" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n \"github.com/memodb-io/memobase/src/client/memobase-go/blob\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get a user\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n user, err := client.GetUser(userID, false)\n if err != nil {\n log.Fatalf(\"Failed to get user: %v\", err)\n }\n\n // Insert chat to generate event\n chat := &blob.ChatBlob{\n BaseBlob: blob.BaseBlob{Type: blob.ChatType},\n Messages: []blob.OpenAICompatibleMessage{\n {Role: \"user\", Content: \"Hi, I'm here again\"},\n {Role: \"assistant\", Content: \"Hi, Gus! How can I help you?\"},\n },\n }\n _, err = user.Insert(chat, false)\n if err != nil {\n log.Fatalf(\"Failed to insert chat: %v\", err)\n }\n\n // Flush to process the chat\n err = user.Flush(blob.ChatType, true)\n if err != nil {\n log.Fatalf(\"Failed to flush: %v\", err)\n }\n\n // Search for event gists\n gistEvents, err := user.SearchEventGist(\"query\")\n if err != nil {\n log.Fatalf(\"Failed to search event gists: %v\", err)\n }\n\n fmt.Printf(\"Found %d event gists\\n\", len(gistEvents))\n for _, event := range gistEvents {\n fmt.Printf(\"Event ID: %s, Content: %s, Similarity: %.2f\\n\", \n event.ID, event.GistData.Content, event.Similarity)\n }\n}\n\n", "label": "Go" } ] } }, "/api/v1/users/event_tags/search/{user_id}": { "get": { "tags": [ "event" ], "summary": "Search User Events By Tags", "operationId": "search_user_events_by_tags_api_v1_users_event_tags_search__user_id__get", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user", "title": "User Id" }, "description": "The ID of the user" }, { "name": "tags", "in": "query", "required": false, "schema": { "type": "string", "description": "Comma-separated list of tag names that events must have (e.g.'emotion,romance')", "title": "Tags" }, "description": "Comma-separated list of tag names that events must have (e.g.'emotion,romance')" }, { "name": "tag_values", "in": "query", "required": false, "schema": { "type": "string", "description": "Comma-separated tag=value pairs for exact matches (e.g., 'emotion=happy,topic=work')", "title": "Tag Values" }, "description": "Comma-separated tag=value pairs for exact matches (e.g., 'emotion=happy,topic=work')" }, { "name": "topk", "in": "query", "required": false, "schema": { "type": "integer", "description": "Number of events to retrieve, default is 10", "default": 10, "title": "Topk" }, "description": "Number of events to retrieve, default is 10" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserEventsDataResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\nu = client.get_user(uid)\n\n# Search for events with specific tags\nevents = u.search_event_by_tags(tags=[\"emotion\", \"romance\"])\n\n# Search for events with specific tag values\nevents = u.search_event_by_tags(tag_values={\"emotion\": \"happy\", \"topic\": \"work\"})\n\n# Combine both filters\nevents = u.search_event_by_tags(tags=[\"emotion\"], tag_values={\"topic\": \"work\"})\n\n", "label": "Python" } ] } }, "/api/v1/users/context/{user_id}": { "get": { "tags": [ "context" ], "summary": "Get User Context", "operationId": "get_user_context_api_v1_users_context__user_id__get", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user", "title": "User Id" }, "description": "The ID of the user" }, { "name": "max_token_size", "in": "query", "required": false, "schema": { "type": "integer", "description": "Max token size of returned Context", "default": 1000, "title": "Max Token Size" }, "description": "Max token size of returned Context" }, { "name": "prefer_topics", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string" }, "description": "Rank prefer topics at first to try to keep them in filtering, default order is by updated time", "title": "Prefer Topics" }, "description": "Rank prefer topics at first to try to keep them in filtering, default order is by updated time" }, { "name": "only_topics", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string" }, "description": "Only return profiles with these topics, default is all", "title": "Only Topics" }, "description": "Only return profiles with these topics, default is all" }, { "name": "max_subtopic_size", "in": "query", "required": false, "schema": { "type": "integer", "description": "Max subtopic size of the same topic in returned Context", "title": "Max Subtopic Size" }, "description": "Max subtopic size of the same topic in returned Context" }, { "name": "topic_limits_json", "in": "query", "required": false, "schema": { "type": "string", "description": "Set specific subtopic limits for topics in JSON, for example {\"topic1\": 3, \"topic2\": 5}. The limits in this param will override `max_subtopic_size`.", "title": "Topic Limits Json" }, "description": "Set specific subtopic limits for topics in JSON, for example {\"topic1\": 3, \"topic2\": 5}. The limits in this param will override `max_subtopic_size`." }, { "name": "profile_event_ratio", "in": "query", "required": false, "schema": { "type": "number", "description": "Profile event ratio of returned Context", "default": 0.6, "title": "Profile Event Ratio" }, "description": "Profile event ratio of returned Context" }, { "name": "require_event_summary", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Whether to require event summary in returned Context", "default": false, "title": "Require Event Summary" }, "description": "Whether to require event summary in returned Context" }, { "name": "chats_str", "in": "query", "required": false, "schema": { "type": "string", "description": "Pass the recent chats to enable context search. \nMemobase will use those chats to search for relevant events.\nIt's a list of chats in OpenAI Message format, for example: [{\"role\": \"user\", \"content\": \"Hello\"}, {\"role\": \"assistant\", \"content\": \"Hi\"}].\n\n**NOTICE**\n- It will increase your latency by 0.1-1 seconds, because Memobase will use Embedding to search for relevant profiles and events.\n- It will cost your Memobase tokens, roughly 100~200 tokens per chat based on the profile size.\n- The profiles in the context will not be searched by the `chats_str`.\n- If you want also search profiles, see `full_profile_and_only_search_event` query parameter.\n", "title": "Chats Str" }, "description": "Pass the recent chats to enable context search. \nMemobase will use those chats to search for relevant events.\nIt's a list of chats in OpenAI Message format, for example: [{\"role\": \"user\", \"content\": \"Hello\"}, {\"role\": \"assistant\", \"content\": \"Hi\"}].\n\n**NOTICE**\n- It will increase your latency by 0.1-1 seconds, because Memobase will use Embedding to search for relevant profiles and events.\n- It will cost your Memobase tokens, roughly 100~200 tokens per chat based on the profile size.\n- The profiles in the context will not be searched by the `chats_str`.\n- If you want also search profiles, see `full_profile_and_only_search_event` query parameter.\n" }, { "name": "event_similarity_threshold", "in": "query", "required": false, "schema": { "type": "number", "description": "Event similarity threshold of returned Context", "default": 0.2, "title": "Event Similarity Threshold" }, "description": "Event similarity threshold of returned Context" }, { "name": "time_range_in_days", "in": "query", "required": false, "schema": { "type": "integer", "description": "Only allow events within the past few days, default is 180", "default": 180, "title": "Time Range In Days" }, "description": "Only allow events within the past few days, default is 180" }, { "name": "customize_context_prompt", "in": "query", "required": false, "schema": { "type": "string", "description": "Customize context prompt template.\n- use `{profile_section}` to refer to the profile section\n- use `{event_section}` to refer to the event section\n\nFor example:\n```\n# Memory\nUnless the user has relevant queries, do not actively mention those memories in the conversation.\n## User Background:\n{profile_section}\n\n## Latest Events:\n{event_section}\n```\n", "title": "Customize Context Prompt" }, "description": "Customize context prompt template.\n- use `{profile_section}` to refer to the profile section\n- use `{event_section}` to refer to the event section\n\nFor example:\n```\n# Memory\nUnless the user has relevant queries, do not actively mention those memories in the conversation.\n## User Background:\n{profile_section}\n\n## Latest Events:\n{event_section}\n```\n" }, { "name": "full_profile_and_only_search_event", "in": "query", "required": false, "schema": { "type": "boolean", "description": "If you pass `chats_str` and set this to `False`, Memobase will search for relevant profiles and events at the same time.\n**NOTICE**\n- It will increase your latency by 2-5(based on the profile size) seconds, because Memobase will use LLM and Embedding to search for relevant profiles and events.\n- It will cost your Memobase tokens, roughly 100~1000 tokens per chat based on the profile size.\n", "default": true, "title": "Full Profile And Only Search Event" }, "description": "If you pass `chats_str` and set this to `False`, Memobase will search for relevant profiles and events at the same time.\n**NOTICE**\n- It will increase your latency by 2-5(based on the profile size) seconds, because Memobase will use LLM and Embedding to search for relevant profiles and events.\n- It will cost your Memobase tokens, roughly 100~1000 tokens per chat based on the profile size.\n" }, { "name": "fill_window_with_events", "in": "query", "required": false, "schema": { "type": "boolean", "description": "If set to `True`, Memobase will fill the token window with the rest events.", "default": false, "title": "Fill Window With Events" }, "description": "If set to `True`, Memobase will fill the token window with the rest events." } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserContextDataResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-code-samples": [ { "lang": "python", "source": "# To use the Python SDK, install the package:\n# pip install memobase\n\nfrom memobase import MemoBaseClient\n\nclient = MemoBaseClient(project_url='PROJECT_URL', api_key='PROJECT_TOKEN')\n\ncontext = u.context()\n\n", "label": "Python" }, { "lang": "javascript", "source": "// To use the JavaScript SDK, install the package:\n// npm install @memobase/memobase\n\nimport { MemoBaseClient } from '@memobase/memobase';\n\nconst client = new MemoBaseClient(process.env.MEMOBASE_PROJECT_URL, process.env.MEMOBASE_API_KEY);\nconst user = await client.getUser(userId);\n\nconst context = await user.context();\n\n", "label": "JavaScript" }, { "lang": "go", "source": "// To use the Go SDK, install the package:\n// go get github.com/memodb-io/memobase/src/client/memobase-go@latest\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/memodb-io/memobase/src/client/memobase-go/core\"\n)\n\nfunc main() {\n projectURL := \"YOUR_PROJECT_URL\"\n apiKey := \"YOUR_API_KEY\"\n // Initialize the client\n client, err := core.NewMemoBaseClient(\n projectURL,\n apiKey,\n )\n if err != nil {\n log.Fatalf(\"Failed to create client: %v\", err)\n }\n\n // Get user context\n userID := \"EXISTING_USER_ID\" // Replace with an actual user ID\n user, err := client.GetUser(userID, false)\n if err != nil {\n log.Fatalf(\"Failed to get user: %v\", err)\n }\n\n context, err := user.Context(nil)\n if err != nil {\n log.Fatalf(\"Failed to get context: %v\", err)\n }\n fmt.Printf(\"User context: %s\n\", context)\n}\n\n", "label": "Go" } ] } }, "/api/v1/users/roleplay/proactive/{user_id}": { "post": { "tags": [ "roleplay" ], "summary": "Infer Proactive Topics", "description": "Provide interest detection and personalized topics", "operationId": "infer_proactive_topics_api_v1_users_roleplay_proactive__user_id__post", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "description": "The ID of the user", "title": "User Id" }, "description": "The ID of the user" }, { "name": "topk", "in": "query", "required": false, "schema": { "type": "integer", "description": "Number of profiles to retrieve, default is all", "title": "Topk" }, "description": "Number of profiles to retrieve, default is all" }, { "name": "max_token_size", "in": "query", "required": false, "schema": { "type": "integer", "description": "Max token size of returned profile content, default is all", "title": "Max Token Size" }, "description": "Max token size of returned profile content, default is all" }, { "name": "prefer_topics", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string" }, "description": "Rank prefer topics at first to try to keep them in filtering, default order is by updated time", "title": "Prefer Topics" }, "description": "Rank prefer topics at first to try to keep them in filtering, default order is by updated time" }, { "name": "only_topics", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string" }, "description": "Only return profiles with these topics, default is all", "title": "Only Topics" }, "description": "Only return profiles with these topics, default is all" }, { "name": "max_subtopic_size", "in": "query", "required": false, "schema": { "type": "integer", "description": "Max subtopic size of the same topic in returned profile, default is all", "title": "Max Subtopic Size" }, "description": "Max subtopic size of the same topic in returned profile, default is all" }, { "name": "topic_limits_json", "in": "query", "required": false, "schema": { "type": "string", "description": "Set specific subtopic limits for topics in JSON, for example {\"topic1\": 3, \"topic2\": 5}. The limits in this param will override `max_subtopic_size`.", "title": "Topic Limits Json" }, "description": "Set specific subtopic limits for topics in JSON, for example {\"topic1\": 3, \"topic2\": 5}. The limits in this param will override `max_subtopic_size`." } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProactiveTopicRequest", "description": "The body of the request" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProactiveTopicResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } } }, "components": { "schemas": { "BaseResponse": { "properties": { "data": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Data", "description": "Response data payload" }, "errno": { "$ref": "#/components/schemas/CODE", "description": "Error code, 0 means success", "default": 0 }, "errmsg": { "type": "string", "title": "Errmsg", "description": "Error message, empty when success", "default": "" } }, "type": "object", "title": "BaseResponse" }, "BillingData": { "properties": { "token_left": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Token Left", "description": "Total token left" }, "next_refill_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Next Refill At", "description": "Next refill time" }, "project_token_cost_month": { "type": "integer", "title": "Project Token Cost Month", "description": "Token cost of this project for this month" } }, "type": "object", "required": [ "project_token_cost_month" ], "title": "BillingData" }, "BillingResponse": { "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/BillingData" }, { "type": "null" } ], "description": "Response containing token left" }, "errno": { "$ref": "#/components/schemas/CODE", "description": "Error code, 0 means success", "default": 0 }, "errmsg": { "type": "string", "title": "Errmsg", "description": "Error message, empty when success", "default": "" } }, "type": "object", "title": "BillingResponse" }, "BlobData": { "properties": { "blob_type": { "$ref": "#/components/schemas/BlobType" }, "blob_data": { "additionalProperties": true, "type": "object", "title": "Blob Data" }, "fields": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Fields" }, "created_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Created At" }, "updated_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Updated At" } }, "type": "object", "required": [ "blob_type", "blob_data" ], "title": "BlobData" }, "BlobDataResponse": { "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/BlobData" }, { "type": "null" } ], "description": "Response containing blob data" }, "errno": { "$ref": "#/components/schemas/CODE", "description": "Error code, 0 means success", "default": 0 }, "errmsg": { "type": "string", "title": "Errmsg", "description": "Error message, empty when success", "default": "" } }, "type": "object", "title": "BlobDataResponse" }, "BlobInsertData": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "title": "Id", "description": "The UUID identifier" }, "chat_results": { "anyOf": [ { "items": { "$ref": "#/components/schemas/ChatModalResponse" }, "type": "array" }, { "type": "null" } ], "title": "Chat Results", "description": "List of chat modal data" } }, "type": "object", "required": [ "id" ], "title": "BlobInsertData" }, "BlobInsertResponse": { "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/BlobInsertData" }, { "type": "null" } ], "description": "Response containing blob insert data" }, "errno": { "$ref": "#/components/schemas/CODE", "description": "Error code, 0 means success", "default": 0 }, "errmsg": { "type": "string", "title": "Errmsg", "description": "Error message, empty when success", "default": "" } }, "type": "object", "title": "BlobInsertResponse" }, "BlobType": { "type": "string", "enum": [ "chat", "summary", "doc", "image", "code", "transcript" ], "title": "BlobType" }, "CODE": { "type": "integer", "enum": [ 0, 400, 401, 403, 404, 405, 409, 422, 500, 501, 502, 503, 504, 520 ], "title": "CODE" }, "ChatModalAPIResponse": { "properties": { "data": { "anyOf": [ { "items": { "$ref": "#/components/schemas/ChatModalResponse" }, "type": "array" }, { "type": "null" } ], "title": "Data", "description": "Response containing chat modal data" }, "errno": { "$ref": "#/components/schemas/CODE", "description": "Error code, 0 means success", "default": 0 }, "errmsg": { "type": "string", "title": "Errmsg", "description": "Error message, empty when success", "default": "" } }, "type": "object", "title": "ChatModalAPIResponse" }, "ChatModalResponse": { "properties": { "event_id": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" }, { "type": "null" } ], "title": "Event Id", "description": "The event's unique identifier" }, "add_profiles": { "anyOf": [ { "items": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ] }, "type": "array" }, { "type": "null" } ], "title": "Add Profiles", "description": "List of added profiles' ids" }, "update_profiles": { "anyOf": [ { "items": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ] }, "type": "array" }, { "type": "null" } ], "title": "Update Profiles", "description": "List of updated profiles' ids" }, "delete_profiles": { "anyOf": [ { "items": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ] }, "type": "array" }, { "type": "null" } ], "title": "Delete Profiles", "description": "List of deleted profiles' ids" } }, "type": "object", "required": [ "event_id", "add_profiles", "update_profiles", "delete_profiles" ], "title": "ChatModalResponse" }, "ContextData": { "properties": { "context": { "type": "string", "title": "Context", "description": "Context string" } }, "type": "object", "required": [ "context" ], "title": "ContextData" }, "DailyUsage": { "properties": { "date": { "type": "string", "title": "Date", "description": "The date" }, "total_insert": { "type": "integer", "title": "Total Insert", "description": "The total insert", "default": 0 }, "total_success_insert": { "type": "integer", "title": "Total Success Insert", "description": "The total update", "default": 0 }, "total_input_token": { "type": "integer", "title": "Total Input Token", "description": "The total input token", "default": 0 }, "total_output_token": { "type": "integer", "title": "Total Output Token", "description": "The total output token", "default": 0 } }, "type": "object", "required": [ "date" ], "title": "DailyUsage" }, "EventData": { "properties": { "profile_delta": { "anyOf": [ { "items": { "$ref": "#/components/schemas/ProfileDelta" }, "type": "array" }, { "type": "null" } ], "title": "Profile Delta", "description": "List of profile data" }, "event_tip": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Tip", "description": "Event tip" }, "event_tags": { "anyOf": [ { "items": { "$ref": "#/components/schemas/EventTag" }, "type": "array" }, { "type": "null" } ], "title": "Event Tags", "description": "List of event tags" } }, "type": "object", "title": "EventData" }, "EventGistData": { "properties": { "content": { "type": "string", "title": "Content", "description": "The event gist content" } }, "type": "object", "required": [ "content" ], "title": "EventGistData" }, "EventTag": { "properties": { "tag": { "type": "string", "title": "Tag", "description": "The event tag" }, "value": { "type": "string", "title": "Value", "description": "The event tag value" } }, "type": "object", "required": [ "tag", "value" ], "title": "EventTag" }, "HTTPValidationError": { "properties": { "detail": { "items": { "$ref": "#/components/schemas/ValidationError" }, "type": "array", "title": "Detail" } }, "type": "object", "title": "HTTPValidationError" }, "IdData": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "title": "Id", "description": "The UUID identifier" } }, "type": "object", "required": [ "id" ], "title": "IdData" }, "IdResponse": { "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/IdData" }, { "type": "null" } ], "description": "Response containing a single ID" }, "errno": { "$ref": "#/components/schemas/CODE", "description": "Error code, 0 means success", "default": 0 }, "errmsg": { "type": "string", "title": "Errmsg", "description": "Error message, empty when success", "default": "" } }, "type": "object", "title": "IdResponse" }, "IdsData": { "properties": { "ids": { "items": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ] }, "type": "array", "title": "Ids", "description": "List of UUID identifiers" } }, "type": "object", "required": [ "ids" ], "title": "IdsData" }, "IdsResponse": { "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/IdsData" }, { "type": "null" } ], "description": "Response containing multiple IDs" }, "errno": { "$ref": "#/components/schemas/CODE", "description": "Error code, 0 means success", "default": 0 }, "errmsg": { "type": "string", "title": "Errmsg", "description": "Error message, empty when success", "default": "" } }, "type": "object", "title": "IdsResponse" }, "OpenAICompatibleMessage": { "properties": { "role": { "type": "string", "enum": [ "user", "assistant" ], "title": "Role" }, "content": { "type": "string", "title": "Content" }, "alias": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Alias" }, "created_at": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Created At" } }, "type": "object", "required": [ "role", "content" ], "title": "OpenAICompatibleMessage" }, "ProactiveTopicData": { "properties": { "action": { "type": "string", "enum": [ "new_topic", "continue" ], "title": "Action", "description": "The action to take" }, "topic_prompt": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Topic Prompt", "description": "The topic prompt, insert it to your latest user message or system prompt" } }, "type": "object", "required": [ "action" ], "title": "ProactiveTopicData" }, "ProactiveTopicRequest": { "properties": { "messages": { "items": { "$ref": "#/components/schemas/OpenAICompatibleMessage" }, "type": "array", "title": "Messages", "description": "The latest messages between user/assistant" }, "agent_context": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Agent Context", "description": "The agent's roleplay prompt" } }, "type": "object", "required": [ "messages" ], "title": "ProactiveTopicRequest" }, "ProactiveTopicResponse": { "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/ProactiveTopicData" }, { "type": "null" } ], "description": "Response containing proactive topic data" }, "errno": { "$ref": "#/components/schemas/CODE", "description": "Error code, 0 means success", "default": 0 }, "errmsg": { "type": "string", "title": "Errmsg", "description": "Error message, empty when success", "default": "" } }, "type": "object", "title": "ProactiveTopicResponse" }, "ProfileConfigData": { "properties": { "profile_config": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Profile Config", "description": "Profile config string" } }, "type": "object", "required": [ "profile_config" ], "title": "ProfileConfigData" }, "ProfileConfigDataResponse": { "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/ProfileConfigData" }, { "type": "null" } ], "description": "Response containing profile config data" }, "errno": { "$ref": "#/components/schemas/CODE", "description": "Error code, 0 means success", "default": 0 }, "errmsg": { "type": "string", "title": "Errmsg", "description": "Error message, empty when success", "default": "" } }, "type": "object", "title": "ProfileConfigDataResponse" }, "ProfileData": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "title": "Id", "description": "The profile's unique identifier" }, "content": { "type": "string", "title": "Content", "description": "User profile content value" }, "created_at": { "type": "string", "format": "date-time", "title": "Created At", "description": "Timestamp when the profile was created" }, "updated_at": { "type": "string", "format": "date-time", "title": "Updated At", "description": "Timestamp when the profile was last updated" }, "attributes": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Attributes", "description": "User profile attributes in JSON, containing 'topic', 'sub_topic'" } }, "type": "object", "required": [ "id", "content" ], "title": "ProfileData" }, "ProfileDelta": { "properties": { "content": { "type": "string", "title": "Content", "description": "The profile content" }, "attributes": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Attributes", "description": "User profile attributes in JSON, containing 'topic', 'sub_topic'" } }, "type": "object", "required": [ "content", "attributes" ], "title": "ProfileDelta" }, "ProjectUsersData": { "properties": { "users": { "items": {}, "type": "array", "title": "Users", "description": "The user list" }, "count": { "type": "integer", "title": "Count", "description": "The user count", "default": 0 } }, "type": "object", "required": [ "users" ], "title": "ProjectUsersData" }, "ProjectUsersDataResponse": { "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/ProjectUsersData" }, { "type": "null" } ], "description": "Response containing the users" }, "errno": { "$ref": "#/components/schemas/CODE", "description": "Error code, 0 means success", "default": 0 }, "errmsg": { "type": "string", "title": "Errmsg", "description": "Error message, empty when success", "default": "" } }, "type": "object", "title": "ProjectUsersDataResponse" }, "UsageResponse": { "properties": { "data": { "anyOf": [ { "items": { "$ref": "#/components/schemas/DailyUsage" }, "type": "array" }, { "type": "null" } ], "title": "Data", "description": "Response containing the daily usage" }, "errno": { "$ref": "#/components/schemas/CODE", "description": "Error code, 0 means success", "default": 0 }, "errmsg": { "type": "string", "title": "Errmsg", "description": "Error message, empty when success", "default": "" } }, "type": "object", "title": "UsageResponse" }, "UserContextDataResponse": { "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/ContextData" }, { "type": "null" } ], "description": "Response containing user context" }, "errno": { "$ref": "#/components/schemas/CODE", "description": "Error code, 0 means success", "default": 0 }, "errmsg": { "type": "string", "title": "Errmsg", "description": "Error message, empty when success", "default": "" } }, "type": "object", "title": "UserContextDataResponse" }, "UserContextImport": { "properties": { "context": { "type": "string", "title": "Context", "description": "The user context you want to import to Memobase" } }, "type": "object", "required": [ "context" ], "title": "UserContextImport" }, "UserData": { "properties": { "data": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Data", "description": "User additional data in JSON" }, "id": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" }, { "type": "null" } ], "title": "Id", "description": "User ID in UUIDv4/5" }, "created_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Created At", "description": "Timestamp when the user was created" }, "updated_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Updated At", "description": "Timestamp when the user was last updated" } }, "type": "object", "title": "UserData" }, "UserDataResponse": { "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/UserData" }, { "type": "null" } ], "description": "Response containing user data" }, "errno": { "$ref": "#/components/schemas/CODE", "description": "Error code, 0 means success", "default": 0 }, "errmsg": { "type": "string", "title": "Errmsg", "description": "Error message, empty when success", "default": "" } }, "type": "object", "title": "UserDataResponse" }, "UserEventData": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "title": "Id", "description": "The event's unique identifier" }, "event_data": { "$ref": "#/components/schemas/EventData", "description": "User event data in JSON" }, "created_at": { "type": "string", "format": "date-time", "title": "Created At", "description": "Timestamp when the event was created" }, "updated_at": { "type": "string", "format": "date-time", "title": "Updated At", "description": "Timestamp when the event was last updated" }, "similarity": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Similarity", "description": "Similarity score" } }, "type": "object", "required": [ "id" ], "title": "UserEventData" }, "UserEventGistData": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string", "format": "uuid5" } ], "title": "Id", "description": "The event gist's unique identifier" }, "gist_data": { "$ref": "#/components/schemas/EventGistData", "description": "User event gist data" }, "created_at": { "type": "string", "format": "date-time", "title": "Created At", "description": "Timestamp when the event gist was created" }, "updated_at": { "type": "string", "format": "date-time", "title": "Updated At", "description": "Timestamp when the event gist was last updated" }, "similarity": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Similarity", "description": "Similarity score" } }, "type": "object", "required": [ "id" ], "title": "UserEventGistData" }, "UserEventGistsData": { "properties": { "gists": { "items": { "$ref": "#/components/schemas/UserEventGistData" }, "type": "array", "title": "Gists", "description": "List of user event gists" }, "events": { "items": { "$ref": "#/components/schemas/UserEventData" }, "type": "array", "title": "Events", "description": "List of user events" } }, "type": "object", "required": [ "gists" ], "title": "UserEventGistsData" }, "UserEventGistsDataResponse": { "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/UserEventGistsData" }, { "type": "null" } ], "description": "Response containing user event gists" }, "errno": { "$ref": "#/components/schemas/CODE", "description": "Error code, 0 means success", "default": 0 }, "errmsg": { "type": "string", "title": "Errmsg", "description": "Error message, empty when success", "default": "" } }, "type": "object", "title": "UserEventGistsDataResponse" }, "UserEventsData": { "properties": { "events": { "items": { "$ref": "#/components/schemas/UserEventData" }, "type": "array", "title": "Events", "description": "List of user events" }, "gists": { "items": { "$ref": "#/components/schemas/UserEventGistData" }, "type": "array", "title": "Gists", "description": "List of user event gists" } }, "type": "object", "required": [ "events" ], "title": "UserEventsData" }, "UserEventsDataResponse": { "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/UserEventsData" }, { "type": "null" } ], "description": "Response containing user events" }, "errno": { "$ref": "#/components/schemas/CODE", "description": "Error code, 0 means success", "default": 0 }, "errmsg": { "type": "string", "title": "Errmsg", "description": "Error message, empty when success", "default": "" } }, "type": "object", "title": "UserEventsDataResponse" }, "UserProfileResponse": { "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/UserProfilesData" }, { "type": "null" } ], "description": "Response containing user profiles" }, "errno": { "$ref": "#/components/schemas/CODE", "description": "Error code, 0 means success", "default": 0 }, "errmsg": { "type": "string", "title": "Errmsg", "description": "Error message, empty when success", "default": "" } }, "type": "object", "title": "UserProfileResponse" }, "UserProfilesData": { "properties": { "profiles": { "items": { "$ref": "#/components/schemas/ProfileData" }, "type": "array", "title": "Profiles", "description": "List of user profiles" } }, "type": "object", "required": [ "profiles" ], "title": "UserProfilesData" }, "ValidationError": { "properties": { "loc": { "items": { "anyOf": [ { "type": "string" }, { "type": "integer" } ] }, "type": "array", "title": "Location" }, "msg": { "type": "string", "title": "Message" }, "type": { "type": "string", "title": "Error Type" } }, "type": "object", "required": [ "loc", "msg", "type" ], "title": "ValidationError" } }, "securitySchemes": { "BearerAuth": { "type": "http", "scheme": "bearer" } } }, "security": [ { "BearerAuth": [] } ] }