diff --git a/src/controllers/dashboard.rs b/src/controllers/dashboard.rs index b548591..bcddbfa 100644 --- a/src/controllers/dashboard.rs +++ b/src/controllers/dashboard.rs @@ -427,6 +427,28 @@ impl DashboardController { // Get resource provider nodes with updated slice calculations let resource_provider_nodes = resource_provider_service.get_resource_provider_nodes(&user_email); + // DEBUG: Log template data being prepared + log::info!( + target: "debug.slice_trace", + "dashboard:template_data_prep user={} nodes_loaded_count={}", + user_email, + resource_provider_nodes.len() + ); + + // DEBUG: Log each node's slice data being sent to template + for node in &resource_provider_nodes { + log::info!( + target: "debug.slice_trace", + "dashboard:node_template_data user={} node_id={} grid_node_id={:?} total_base_slices={} allocated_base_slices={} available_combinations_count={}", + user_email, + node.id, + node.grid_node_id, + node.total_base_slices, + node.allocated_base_slices, + node.available_combinations.len() + ); + } + // Calculate resource_provider statistics from nodes let total_nodes = resource_provider_nodes.len() as u32; let mut online_nodes = 0u32; @@ -2524,6 +2546,17 @@ impl DashboardController { pricing_mode ); + // DEBUG: Log which path will be taken + log::info!( + target: "debug.slice_trace", + "add_grid_nodes:path_decision req_id={} email={} slice_formats_count={} full_node_rental_enabled={} pricing_mode={}", + req_id, + user_email, + slice_formats.len(), + full_node_rental_enabled, + pricing_mode + ); + let add_result = if !slice_formats.is_empty() || full_node_rental_enabled { // Create rental options if full node rental is enabled let rental_options = if full_node_rental_enabled { @@ -2561,6 +2594,13 @@ impl DashboardController { // Choose the appropriate method based on pricing mode if pricing_mode == "individual" && individual_node_pricing.is_some() { + log::info!( + target: "debug.slice_trace", + "add_grid_nodes:calling_individual_pricing req_id={} email={} node_count={}", + req_id, + user_email, + node_ids.len() + ); resource_provider_service.add_multiple_grid_nodes_with_individual_pricing( &user_email, node_ids.clone(), @@ -2568,6 +2608,13 @@ impl DashboardController { individual_node_pricing.unwrap() ).await } else { + log::info!( + target: "debug.slice_trace", + "add_grid_nodes:calling_comprehensive_config req_id={} email={} node_count={}", + req_id, + user_email, + node_ids.len() + ); resource_provider_service.add_multiple_grid_nodes_with_comprehensive_config( &user_email, node_ids.clone(), @@ -2576,6 +2623,13 @@ impl DashboardController { ).await } } else { + log::info!( + target: "debug.slice_trace", + "add_grid_nodes:calling_simple_add req_id={} email={} node_count={}", + req_id, + user_email, + node_ids.len() + ); resource_provider_service.add_multiple_grid_nodes(&user_email, node_ids.clone()).await }; diff --git a/src/services/resource_provider.rs b/src/services/resource_provider.rs index ee94fc4..8a91fe3 100644 --- a/src/services/resource_provider.rs +++ b/src/services/resource_provider.rs @@ -98,15 +98,42 @@ impl ResourceProviderService { /// Get all nodes for a resource_provider pub fn get_resource_provider_nodes(&self, user_email: &str) -> Vec { + log::info!( + target: "debug.slice_trace", + "get_resource_provider_nodes:start user={}", + user_email + ); + if let Some(data) = UserPersistence::load_user_data(user_email) { - // Debug: Log marketplace SLA data for all nodes + log::info!( + target: "debug.slice_trace", + "get_resource_provider_nodes:loaded_data user={} nodes_count={}", + user_email, + data.nodes.len() + ); + + // DEBUG: Log slice data for each node to verify what's stored for node in &data.nodes { - if let Some(ref sla) = node.marketplace_sla { - } else { - } + log::info!( + target: "debug.slice_trace", + "get_resource_provider_nodes:node_data user={} node_id={} grid_node_id={:?} total_base_slices={} allocated_base_slices={} available_combinations_count={} slice_last_calculated={:?}", + user_email, + node.id, + node.grid_node_id, + node.total_base_slices, + node.allocated_base_slices, + node.available_combinations.len(), + node.slice_last_calculated + ); } + data.nodes } else { + log::info!( + target: "debug.slice_trace", + "get_resource_provider_nodes:no_data user={} returning_empty", + user_email + ); Vec::new() } } @@ -1390,10 +1417,25 @@ impl ResourceProviderService { /// Add multiple grid nodes at once pub async fn add_multiple_grid_nodes(&self, user_email: &str, grid_node_ids: Vec) -> Result, String> { + // DEBUG: Log entry point + log::info!( + target: "debug.slice_trace", + "add_multiple_grid_nodes:start user={} node_ids={:?}", + user_email, + grid_node_ids + ); + // Batch approach: load once, add all nodes, save once let mut added_nodes: Vec = Vec::new(); let mut persistent_data = crate::models::builders::SessionDataBuilder::load_or_create(user_email); + log::info!( + target: "debug.slice_trace", + "add_multiple_grid_nodes:loaded_existing user={} existing_node_count={}", + user_email, + persistent_data.nodes.len() + ); + for grid_node_id in grid_node_ids { let node_id = format!("grid_node_{}", grid_node_id); @@ -1415,8 +1457,24 @@ impl ResourceProviderService { let grid_data = self.grid_service.fetch_node_data(grid_node_id).await.map_err(|e| e.to_string())?; // FIX: Calculate slice data using the slice calculator (same as add_node_from_grid) + log::info!( + target: "debug.slice_trace", + "add_multiple_grid_nodes:calculating_slices user={} grid_node_id={} resources={:?}", + user_email, + grid_node_id, + grid_data.total_resources + ); + let total_base_slices = self.slice_calculator.calculate_max_base_slices(&grid_data.total_resources); + log::info!( + target: "debug.slice_trace", + "add_multiple_grid_nodes:calculated_slices user={} grid_node_id={} total_base_slices={}", + user_email, + grid_node_id, + total_base_slices + ); + // Generate unique node ID for SLA let node_id_for_sla = node_id.clone(); @@ -1481,23 +1539,93 @@ impl ResourceProviderService { }; // FIX: Generate initial slice combinations + log::info!( + target: "debug.slice_trace", + "add_multiple_grid_nodes:generating_combinations user={} grid_node_id={} total_base_slices={} allocated_base_slices={}", + user_email, + grid_node_id, + node.total_base_slices, + node.allocated_base_slices + ); + let combinations = self.slice_calculator.generate_slice_combinations( node.total_base_slices as u32, node.allocated_base_slices as u32, &node, user_email ); + + log::info!( + target: "debug.slice_trace", + "add_multiple_grid_nodes:generated_combinations user={} grid_node_id={} combinations_count={}", + user_email, + grid_node_id, + combinations.len() + ); + node.available_combinations = combinations.iter() .map(|c| serde_json::to_value(c).unwrap_or_default()) .collect(); + log::info!( + target: "debug.slice_trace", + "add_multiple_grid_nodes:node_created user={} node_id={} grid_node_id={} total_slices={} available_combinations={}", + user_email, + node.id, + grid_node_id, + node.total_base_slices, + node.available_combinations.len() + ); + persistent_data.nodes.push(node.clone()); added_nodes.push(node); } if !added_nodes.is_empty() { + log::info!( + target: "debug.slice_trace", + "add_multiple_grid_nodes:saving_data user={} total_nodes_to_save={} added_nodes_count={}", + user_email, + persistent_data.nodes.len(), + added_nodes.len() + ); + UserPersistence::save_user_data(&persistent_data).map_err(|e| e.to_string())?; + + log::info!( + target: "debug.slice_trace", + "add_multiple_grid_nodes:data_saved user={} added_nodes_count={}", + user_email, + added_nodes.len() + ); + + // DEBUG: Log final node data to verify what was actually saved + for node in &added_nodes { + log::info!( + target: "debug.slice_trace", + "add_multiple_grid_nodes:final_node_data user={} node_id={} grid_node_id={:?} total_base_slices={} slice_last_calculated={:?}", + user_email, + node.id, + node.grid_node_id, + node.total_base_slices, + node.slice_last_calculated + ); + } + } else { + log::info!( + target: "debug.slice_trace", + "add_multiple_grid_nodes:no_nodes_added user={} (all were duplicates or failed)", + user_email + ); } + + log::info!( + target: "debug.slice_trace", + "add_multiple_grid_nodes:complete user={} result_count={}", + user_email, + added_nodes.len() + ); + Ok(added_nodes) } diff --git a/src/services/slice_calculator.rs b/src/services/slice_calculator.rs index a1a39b2..bed238a 100644 --- a/src/services/slice_calculator.rs +++ b/src/services/slice_calculator.rs @@ -143,12 +143,30 @@ impl SliceCalculatorService { /// Calculate maximum base slices from node capacity pub fn calculate_max_base_slices(&self, capacity: &NodeCapacity) -> u32 { + log::info!( + target: "debug.slice_trace", + "calculate_max_base_slices:start capacity={:?} base_slice={:?}", + capacity, + self.base_slice + ); + let cpu_slices = capacity.cpu_cores as u32 / self.base_slice.cpu_cores; let memory_slices = capacity.memory_gb as u32 / self.base_slice.memory_gb; let storage_slices = capacity.storage_gb as u32 / self.base_slice.storage_gb; + let result = std::cmp::min(std::cmp::min(cpu_slices, memory_slices), storage_slices); + + log::info!( + target: "debug.slice_trace", + "calculate_max_base_slices:result cpu_slices={} memory_slices={} storage_slices={} limiting_factor={}", + cpu_slices, + memory_slices, + storage_slices, + result + ); + // Return the limiting factor - std::cmp::min(std::cmp::min(cpu_slices, memory_slices), storage_slices) + result } /// Generate all possible slice combinations from available base slices @@ -159,10 +177,31 @@ impl SliceCalculatorService { node: &FarmNode, resource_provider_email: &str ) -> Vec { + log::info!( + target: "debug.slice_trace", + "generate_slice_combinations:start max_base_slices={} allocated_slices={} node_id={} user={}", + max_base_slices, + allocated_slices, + node.id, + resource_provider_email + ); + let available_base_slices = max_base_slices.saturating_sub(allocated_slices); let mut combinations = Vec::new(); + log::info!( + target: "debug.slice_trace", + "generate_slice_combinations:available_base_slices={} node_id={}", + available_base_slices, + node.id + ); + if available_base_slices == 0 { + log::info!( + target: "debug.slice_trace", + "generate_slice_combinations:no_available_slices node_id={} returning_empty", + node.id + ); return combinations; } @@ -216,6 +255,30 @@ impl SliceCalculatorService { // Sort by multiplier (smallest slices first) combinations.sort_by_key(|c| c.multiplier); + + log::info!( + target: "debug.slice_trace", + "generate_slice_combinations:result node_id={} combinations_count={} available_base_slices={}", + node.id, + combinations.len(), + available_base_slices + ); + + // DEBUG: Log each combination for detailed analysis + for combination in &combinations { + log::info!( + target: "debug.slice_trace", + "generate_slice_combinations:combination node_id={} id={} multiplier={} quantity={} cpu={} memory={} storage={}", + node.id, + combination.id, + combination.multiplier, + combination.quantity_available, + combination.cpu_cores, + combination.memory_gb, + combination.storage_gb + ); + } + combinations } diff --git a/user_data/account_at_example_com.json b/user_data/account_at_example_com.json deleted file mode 100644 index b260ff6..0000000 --- a/user_data/account_at_example_com.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "user_email": "account@example.com", - "wallet_balance_usd": 0.0, - "transactions": [], - "staked_amount_usd": 0.0, - "pool_positions": {}, - "name": "account", - "country": null, - "timezone": null, - "password_hash": "$2b$12$.JKEdRSl1XdJ0PoF38vPZeG1t1iP5X48mVix0IEwvpPwCR8BoMa2m", - "services": [], - "service_requests": [], - "service_bookings": [], - "availability": null, - "slas": [], - "apps": [], - "app_deployments": [], - "deleted": null, - "deleted_at": null, - "deletion_reason": null, - "nodes": [], - "farmer_earnings": [], - "farmer_settings": null, - "slice_products": [], - "user_activities": [], - "user_preferences": null, - "usage_statistics": null, - "orders": [], - "active_product_rentals": [], - "farmer_rental_earnings": [], - "node_rentals": [], - "node_groups": [], - "slice_rentals": [], - "slice_assignments": [], - "display_currency": "USD", - "quick_topup_amounts": [ - 10.0, - 25.0, - 50.0, - 100.0 - ], - "auto_topup_settings": null, - "products": [], - "owned_products": [], - "owned_product_ids": [], - "ssh_keys": [] -} \ No newline at end of file diff --git a/user_data/as_at_example_com.json b/user_data/as_at_example_com.json deleted file mode 100644 index ec17d5c..0000000 --- a/user_data/as_at_example_com.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "user_email": "as@example.com", - "wallet_balance_usd": 0.0, - "transactions": [], - "staked_amount_usd": 0.0, - "pool_positions": {}, - "name": "as", - "country": null, - "timezone": null, - "password_hash": "$2b$12$ufHU5KPFcSoX6MRyCS8nXeBl.ABeo3jQX8mwy7s5KWvX/ZSn3Sqku", - "services": [], - "service_requests": [], - "service_bookings": [], - "availability": null, - "slas": [], - "apps": [], - "app_deployments": [], - "deleted": true, - "deleted_at": "2025-08-28T02:06:04.008732444+00:00", - "deletion_reason": "User requested account deletion", - "nodes": [], - "farmer_earnings": [], - "farmer_settings": null, - "slice_products": [], - "user_activities": [], - "user_preferences": null, - "usage_statistics": null, - "orders": [], - "active_product_rentals": [], - "farmer_rental_earnings": [], - "node_rentals": [], - "node_groups": [], - "slice_rentals": [], - "slice_assignments": [], - "display_currency": "USD", - "quick_topup_amounts": [ - 10.0, - 25.0, - 50.0, - 100.0 - ], - "auto_topup_settings": null, - "products": [], - "owned_products": [], - "owned_product_ids": [], - "ssh_keys": [] -} \ No newline at end of file diff --git a/user_data/asdf_at_example_com.json b/user_data/asdf_at_example_com.json deleted file mode 100644 index d88fb54..0000000 --- a/user_data/asdf_at_example_com.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "user_email": "asdf@example.com", - "wallet_balance_usd": 0.0, - "transactions": [], - "staked_amount_usd": 0.0, - "pool_positions": {}, - "name": "Johny", - "country": "Bahamas", - "timezone": "UTC-03:30", - "password_hash": "$2b$12$JQLUbKe4Ac/VoTmfxENJzebRhbutn6vVSKpwqgeqZdD78L55exXpC", - "services": [], - "service_requests": [], - "service_bookings": [], - "availability": null, - "slas": [], - "apps": [], - "app_deployments": [], - "deleted": true, - "deleted_at": "2025-08-28T02:03:31.789334123+00:00", - "deletion_reason": "User requested account deletion", - "nodes": [], - "farmer_earnings": [], - "farmer_settings": null, - "slice_products": [], - "user_activities": [], - "user_preferences": { - "theme": "light", - "language": "en", - "currency_display": "USD", - "email_notifications": true, - "push_notifications": true, - "marketing_emails": false, - "data_sharing": false, - "preferred_currency": "USD", - "preferred_language": "en", - "timezone": "UTC", - "notification_settings": { - "email_enabled": true, - "push_enabled": false, - "sms_enabled": false, - "slack_webhook": null, - "discord_webhook": null, - "enabled": false, - "push": true, - "node_offline_alerts": true, - "maintenance_reminders": true, - "earnings_reports": false - }, - "privacy_settings": { - "profile_public": false, - "email_public": false, - "activity_public": false, - "stats_public": false, - "profile_visibility": "private", - "marketing_emails": false, - "data_sharing": false, - "activity_tracking": false - }, - "dashboard_layout": "grid", - "last_payment_method": null - }, - "usage_statistics": null, - "orders": [], - "active_product_rentals": [], - "farmer_rental_earnings": [], - "node_rentals": [], - "node_groups": [], - "slice_rentals": [], - "slice_assignments": [], - "display_currency": "CAD", - "quick_topup_amounts": [ - 10.0, - 25.0, - 50.0, - 100.0 - ], - "auto_topup_settings": null, - "products": [], - "owned_products": [], - "owned_product_ids": [], - "ssh_keys": [] -} \ No newline at end of file diff --git a/user_data/name_at_example_com.json b/user_data/name_at_example_com.json deleted file mode 100644 index a925e5f..0000000 --- a/user_data/name_at_example_com.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "user_email": "name@example.com", - "wallet_balance_usd": 0.0, - "transactions": [], - "staked_amount_usd": 0.0, - "pool_positions": {}, - "name": "name2", - "country": "", - "timezone": "", - "password_hash": "$2b$12$RUOgaY9dKK6QGrQ8E.Fsgus0eteppjzG6NeBDtgAPZKdGblK56PFq", - "services": [], - "service_requests": [], - "service_bookings": [], - "availability": null, - "slas": [], - "apps": [], - "app_deployments": [], - "deleted": true, - "deleted_at": "2025-08-22T15:08:44.196197805+00:00", - "deletion_reason": "User requested account deletion", - "nodes": [], - "farmer_earnings": [], - "farmer_settings": null, - "slice_products": [], - "user_activities": [], - "user_preferences": { - "theme": "light", - "language": "en", - "currency_display": "USD", - "email_notifications": true, - "push_notifications": true, - "marketing_emails": false, - "data_sharing": false, - "preferred_currency": "USD", - "preferred_language": "en", - "timezone": "UTC", - "notification_settings": { - "email_enabled": true, - "push_enabled": true, - "sms_enabled": false, - "slack_webhook": null, - "discord_webhook": null, - "enabled": false, - "push": true, - "node_offline_alerts": true, - "maintenance_reminders": true, - "earnings_reports": false - }, - "privacy_settings": { - "profile_public": false, - "email_public": false, - "activity_public": false, - "stats_public": false, - "profile_visibility": "private", - "marketing_emails": false, - "data_sharing": false, - "activity_tracking": false - }, - "dashboard_layout": "grid", - "last_payment_method": null - }, - "usage_statistics": null, - "orders": [], - "active_product_rentals": [], - "farmer_rental_earnings": [], - "node_rentals": [], - "node_groups": [], - "slice_rentals": [], - "slice_assignments": [], - "display_currency": "USD", - "quick_topup_amounts": [ - 10.0, - 25.0, - 50.0, - 100.0 - ], - "auto_topup_settings": null, - "products": [], - "owned_products": [], - "owned_product_ids": [], - "ssh_keys": [] -} \ No newline at end of file diff --git a/user_data/new_at_example_com.json b/user_data/new_at_example_com.json deleted file mode 100644 index 96c36ed..0000000 --- a/user_data/new_at_example_com.json +++ /dev/null @@ -1,231 +0,0 @@ -{ - "user_email": "new@example.com", - "wallet_balance_usd": 887.0, - "transactions": [ - { - "id": "41594920-3783-4def-bf88-c83ad247be8d", - "user_id": "new@example.com", - "transaction_type": { - "Purchase": { - "product_id": "credits" - } - }, - "amount": 888.0, - "currency": "USD", - "exchange_rate_usd": 1.0, - "amount_usd": 888.0, - "description": "Credits purchase via paypal", - "reference_id": "41594920-3783-4def-bf88-c83ad247be8d", - "metadata": null, - "timestamp": "2025-08-27T07:00:10.506808621Z", - "status": "Completed" - }, - { - "id": "69a6ad1c-52dd-477b-b3ae-5784cc18773f", - "user_id": "new@example.com", - "transaction_type": { - "CreditsTransfer": { - "to_user": "user1@example.com", - "note": null - } - }, - "amount": 1.0, - "currency": "USD", - "exchange_rate_usd": 1.0, - "amount_usd": 1.0, - "description": "Credits transfer to user1@example.com: No note", - "reference_id": "transfer-016c4451-eb04-4373-88fe-31c0a1375996", - "metadata": null, - "timestamp": "2025-08-27T07:00:18.582850390Z", - "status": "Completed" - } - ], - "staked_amount_usd": 0.0, - "pool_positions": {}, - "name": "new", - "country": null, - "timezone": null, - "password_hash": "$2b$12$4urVNAajnRgoyWBQWW9PyuQRCiWehnqK.71/qu6PyEIEVVDW/Vo0W", - "services": [], - "service_requests": [], - "service_bookings": [], - "availability": null, - "slas": [], - "apps": [], - "app_deployments": [], - "deleted": null, - "deleted_at": null, - "deletion_reason": null, - "nodes": [], - "farmer_earnings": [], - "farmer_settings": null, - "slice_products": [], - "user_activities": [ - { - "id": "028ec6ce-6e86-4da6-a514-0a4a2e249e9e", - "user_email": "new@example.com", - "activity_type": "WalletTransaction", - "description": "Transferred $1 credits to user1@example.com", - "metadata": null, - "timestamp": "2025-08-27T07:00:18.582870563Z", - "ip_address": null, - "user_agent": null, - "session_id": null, - "importance": "Medium", - "category": "Wallet" - }, - { - "id": "05d20135-52af-4fb4-9f51-77bcf1d5010c", - "user_email": "new@example.com", - "activity_type": "WalletTransaction", - "description": "Purchased $888 credits via paypal", - "metadata": null, - "timestamp": "2025-08-27T07:00:10.507159414Z", - "ip_address": null, - "user_agent": null, - "session_id": null, - "importance": "Medium", - "category": "Wallet" - } - ], - "user_preferences": { - "theme": "light", - "language": "en", - "currency_display": "symbol", - "email_notifications": true, - "push_notifications": true, - "marketing_emails": false, - "data_sharing": false, - "preferred_currency": "USD", - "preferred_language": "en", - "timezone": "UTC", - "notification_settings": { - "email_enabled": true, - "push_enabled": true, - "sms_enabled": false, - "slack_webhook": null, - "discord_webhook": null, - "enabled": true, - "push": true, - "node_offline_alerts": true, - "maintenance_reminders": true, - "earnings_reports": true - }, - "privacy_settings": { - "profile_public": false, - "email_public": false, - "activity_public": false, - "stats_public": false, - "profile_visibility": "private", - "marketing_emails": false, - "data_sharing": false, - "activity_tracking": true - }, - "dashboard_layout": "default", - "last_payment_method": "paypal" - }, - "usage_statistics": null, - "orders": [], - "active_product_rentals": [], - "farmer_rental_earnings": [], - "node_rentals": [], - "node_groups": [ - { - "id": "compute", - "name": "Compute", - "description": "General compute workloads", - "node_ids": [], - "group_type": { - "Default": "compute" - }, - "updated_at": "2025-08-27T07:00:02.494038779Z", - "created_at": "2025-08-27T07:00:02.494030010Z", - "group_config": { - "group_name": "Compute Nodes", - "max_nodes": 100, - "allocation_strategy": "balanced", - "auto_scaling": true, - "preferred_slice_formats": [ - "1x1", - "2x2" - ], - "default_pricing": 50.0, - "resource_optimization": { - "cpu_optimization": 0.5, - "memory_optimization": 0.5, - "storage_optimization": 0.5, - "network_optimization": 0.5 - } - } - }, - { - "id": "storage", - "name": "Storage", - "description": "Storage and data workloads", - "node_ids": [], - "group_type": { - "Default": "storage" - }, - "updated_at": "2025-08-27T07:00:02.494050216Z", - "created_at": "2025-08-27T07:00:02.494049839Z", - "group_config": { - "group_name": "Storage Nodes", - "max_nodes": 50, - "allocation_strategy": "storage_optimized", - "auto_scaling": false, - "preferred_slice_formats": [ - "1x1" - ], - "default_pricing": 30.0, - "resource_optimization": { - "cpu_optimization": 0.3, - "memory_optimization": 0.3, - "storage_optimization": 0.8, - "network_optimization": 0.6 - } - } - }, - { - "id": "ai-gpu", - "name": "AI/GPU", - "description": "AI and GPU-intensive workloads", - "node_ids": [], - "group_type": { - "Default": "ai-gpu" - }, - "updated_at": "2025-08-27T07:00:02.494057927Z", - "created_at": "2025-08-27T07:00:02.494057555Z", - "group_config": { - "group_name": "AI/GPU Nodes", - "max_nodes": 20, - "allocation_strategy": "gpu_optimized", - "auto_scaling": true, - "preferred_slice_formats": [ - "4x4", - "8x8" - ], - "default_pricing": 200.0, - "resource_optimization": { - "cpu_optimization": 0.8, - "memory_optimization": 0.7, - "storage_optimization": 0.4, - "network_optimization": 0.5 - } - } - } - ], - "slice_rentals": [], - "slice_assignments": [], - "display_currency": "USD", - "quick_topup_amounts": [ - 10.0, - 25.0, - 50.0, - 100.0 - ], - "auto_topup_settings": null, - "products": [], - "owned_products": [], - "owned_product_ids": [], - "ssh_keys": [] -} \ No newline at end of file diff --git a/user_data/orders.json b/user_data/orders.json deleted file mode 100644 index fe51488..0000000 --- a/user_data/orders.json +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/user_data/personas/users.json b/user_data/personas/users.json deleted file mode 100644 index 2e6b841..0000000 --- a/user_data/personas/users.json +++ /dev/null @@ -1,12 +0,0 @@ -[ - {"id":"user1","email":"user1@example.com","password":"password","roles":["provider"],"profile":{"display_name":"User 1","kind":"provider"}}, - {"id":"user2","email":"user2@example.com","password":"password","roles":["provider"],"profile":{"display_name":"User 2","kind":"provider"}}, - {"id":"user3","email":"user3@example.com","password":"password","roles":["provider"],"profile":{"display_name":"User 3","kind":"provider"}}, - {"id":"user4","email":"user4@example.com","password":"password","roles":["provider","buyer"],"profile":{"display_name":"User 4","kind":"provider_buyer"}}, - {"id":"user5","email":"user5@example.com","password":"password","roles":["provider","buyer"],"profile":{"display_name":"User 5","kind":"provider_buyer"}}, - {"id":"user6","email":"user6@example.com","password":"password","roles":["provider","buyer"],"profile":{"display_name":"User 6","kind":"provider_buyer"}}, - {"id":"user7","email":"user7@example.com","password":"password","roles":["buyer"],"profile":{"display_name":"User 7","kind":"buyer"}}, - {"id":"user8","email":"user8@example.com","password":"password","roles":["buyer"],"profile":{"display_name":"User 8","kind":"buyer"}}, - {"id":"user9","email":"user9@example.com","password":"password","roles":["buyer"],"profile":{"display_name":"User 9","kind":"buyer"}}, - {"id":"user10","email":"user10@example.com","password":"password","roles":["buyer"],"profile":{"display_name":"User 10","kind":"buyer"}} -] diff --git a/user_data/services.json b/user_data/services.json deleted file mode 100644 index fe51488..0000000 --- a/user_data/services.json +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/user_data/user0_at_example_com.json b/user_data/user0_at_example_com.json deleted file mode 100644 index db363d8..0000000 --- a/user_data/user0_at_example_com.json +++ /dev/null @@ -1,1366 +0,0 @@ -{ - "user_email": "user0@example.com", - "wallet_balance_usd": 2006.0, - "transactions": [ - { - "id": "1f654b4c-a343-4d59-8a27-e3442539c1cf", - "user_id": "user0@example.com", - "transaction_type": { - "Purchase": { - "product_id": "credits" - } - }, - "amount": 1500.0, - "currency": "USD", - "exchange_rate_usd": 1.0, - "amount_usd": 1500.0, - "description": "Credits purchase via credit_card", - "reference_id": "1f654b4c-a343-4d59-8a27-e3442539c1cf", - "metadata": null, - "timestamp": "2025-08-23T03:35:04.036827423Z", - "status": "Completed" - }, - { - "id": "cba064a3-df61-47a7-aac6-7dceb4448976", - "user_id": "user0@example.com", - "transaction_type": { - "Purchase": { - "product_id": "credits" - } - }, - "amount": 500.0, - "currency": "USD", - "exchange_rate_usd": 1.0, - "amount_usd": 500.0, - "description": "Credits purchase via credit_card", - "reference_id": "cba064a3-df61-47a7-aac6-7dceb4448976", - "metadata": null, - "timestamp": "2025-08-23T03:35:08.419487358Z", - "status": "Completed" - }, - { - "id": "d6f88e25-cede-40cc-8e66-a738753881a8", - "user_id": "user0@example.com", - "transaction_type": { - "Purchase": { - "product_id": "credits" - } - }, - "amount": 5.0, - "currency": "USD", - "exchange_rate_usd": 1.0, - "amount_usd": 5.0, - "description": "Credits purchase via credit_card", - "reference_id": "d6f88e25-cede-40cc-8e66-a738753881a8", - "metadata": null, - "timestamp": "2025-08-23T04:40:18.365569306Z", - "status": "Completed" - }, - { - "id": "40e47d98-8b78-418c-ae65-34cd9a885d56-receive", - "user_id": "user0@example.com", - "transaction_type": { - "Earning": { - "source": "Transfer Received" - } - }, - "amount": 1.0, - "currency": "USD", - "exchange_rate_usd": 1.0, - "amount_usd": 1.0, - "description": "Transfer received from user1@example.com", - "reference_id": "transfer-receive-70c41510-7572-46df-8034-532dbfd33146", - "metadata": null, - "timestamp": "2025-08-28T03:08:00.082463834Z", - "status": "Completed" - } - ], - "staked_amount_usd": 0.0, - "pool_positions": {}, - "name": "user09", - "country": "", - "timezone": "", - "password_hash": "$2b$12$E4.R9z7MFF93FoUhgm9Z3uj4UMnnCAy0GNOTW3KvdmoRU0pvJOZjy", - "services": [], - "service_requests": [ - { - "id": "req-7eb04f59-102bde94", - "customer_email": "user1@example.com", - "service_id": "user_user0_example_com_fa373486", - "description": "Service booking from marketplace order 7eb04f59-7ae5-4927-89f2-09d28a029f6c", - "status": "In Progress", - "estimated_hours": 0, - "hourly_rate_usd": 75.0, - "total_cost_usd": 12.0, - "progress_percentage": 0.0, - "created_date": "2025-08-23", - "completed_date": null, - "progress": null, - "priority": "Medium", - "hours_worked": null, - "notes": null, - "service_name": "Service A", - "budget": 12.0, - "requested_date": "2025-08-23", - "client_phone": null, - "client_name": "user1", - "client_email": "user1@example.com" - }, - { - "id": "req-b7a9eff0-cc4ca035", - "customer_email": "user1@example.com", - "service_id": "user_user0_example_com_fa373486", - "description": "Service booking from marketplace order b7a9eff0-140b-47af-99b7-aafe1bdf70ce", - "status": "Pending", - "estimated_hours": 0, - "hourly_rate_usd": 75.0, - "total_cost_usd": 12.0, - "progress_percentage": 0.0, - "created_date": "2025-08-27", - "completed_date": null, - "progress": null, - "priority": "Medium", - "hours_worked": null, - "notes": null, - "service_name": "Service A", - "budget": 12.0, - "requested_date": "2025-08-27", - "client_phone": null, - "client_name": "user1", - "client_email": "user1@example.com" - }, - { - "id": "req-b31f28bf-1b012ba2", - "customer_email": "user1@example.com", - "service_id": "user_user0_example_com_fa373486", - "description": "Service booking from marketplace order b31f28bf-a3b2-4baf-b1d7-0b1c1161474a", - "status": "Pending", - "estimated_hours": 0, - "hourly_rate_usd": 75.0, - "total_cost_usd": 12.0, - "progress_percentage": 0.0, - "created_date": "2025-08-28", - "completed_date": null, - "progress": null, - "priority": "Medium", - "hours_worked": null, - "notes": null, - "service_name": "Service A", - "budget": 12.0, - "requested_date": "2025-08-28", - "client_phone": null, - "client_name": "user1", - "client_email": "user1@example.com" - }, - { - "id": "req-adf8d9d7-cca7fea4", - "customer_email": "user1@example.com", - "service_id": "user_user0_example_com_fa373486", - "description": "Service booking from marketplace order adf8d9d7-e29d-4eca-9ff3-4e3d2a2ec073", - "status": "Pending", - "estimated_hours": 0, - "hourly_rate_usd": 75.0, - "total_cost_usd": 12.0, - "progress_percentage": 0.0, - "created_date": "2025-08-28", - "completed_date": null, - "progress": null, - "priority": "Medium", - "hours_worked": null, - "notes": null, - "service_name": "Service A", - "budget": 12.0, - "requested_date": "2025-08-28", - "client_phone": null, - "client_name": "user1", - "client_email": "user1@example.com" - }, - { - "id": "req-720ef602-e4f4f304", - "customer_email": "user1@example.com", - "service_id": "user_user0_example_com_8232cf32", - "description": "Service booking from marketplace order 720ef602-c040-4287-abb3-d912d2dd197a", - "status": "Completed", - "estimated_hours": 0, - "hourly_rate_usd": 75.0, - "total_cost_usd": 12.0, - "progress_percentage": 0.0, - "created_date": "2025-08-28", - "completed_date": "2025-08-28", - "progress": 100.0, - "priority": "Medium", - "hours_worked": 0, - "notes": null, - "service_name": "Service 0", - "budget": 12.0, - "requested_date": "2025-08-28", - "client_phone": null, - "client_name": "user1", - "client_email": "user1@example.com" - }, - { - "id": "req-a6761a9e-1db8a97c", - "customer_email": "user1@example.com", - "service_id": "user_user0_example_com_0137df0f", - "description": "Service booking from marketplace order a6761a9e-dd7a-46b6-8bf0-5f23c93b3cf6", - "status": "Pending", - "estimated_hours": 0, - "hourly_rate_usd": 75.0, - "total_cost_usd": 12.0, - "progress_percentage": 0.0, - "created_date": "2025-08-28", - "completed_date": null, - "progress": null, - "priority": "Medium", - "hours_worked": null, - "notes": null, - "service_name": "Service 00", - "budget": 12.0, - "requested_date": "2025-08-28", - "client_phone": null, - "client_name": "user1", - "client_email": "user1@example.com" - }, - { - "id": "req-104ecd70-1699cf5a", - "customer_email": "user1@example.com", - "service_id": "user_user0_example_com_8232cf32", - "description": "Service booking from marketplace order 104ecd70-a33f-4ef3-80c5-97b6151a082e", - "status": "Pending", - "estimated_hours": 0, - "hourly_rate_usd": 75.0, - "total_cost_usd": 12.0, - "progress_percentage": 0.0, - "created_date": "2025-08-29", - "completed_date": null, - "progress": null, - "priority": "Medium", - "hours_worked": null, - "notes": null, - "service_name": "Service 0", - "budget": 12.0, - "requested_date": "2025-08-29", - "client_phone": null, - "client_name": "user1", - "client_email": "user1@example.com" - } - ], - "service_bookings": [], - "availability": null, - "slas": [], - "apps": [], - "app_deployments": [], - "deleted": null, - "deleted_at": null, - "deletion_reason": null, - "nodes": [], - "farmer_earnings": [], - "farmer_settings": null, - "slice_products": [], - "user_activities": [ - { - "id": "129bfc84-04d8-4edb-beb6-7e5a436ad835", - "user_email": "user0@example.com", - "activity_type": "WalletTransaction", - "description": "Purchased $5 credits via credit_card", - "metadata": null, - "timestamp": "2025-08-23T04:40:18.366052780Z", - "ip_address": null, - "user_agent": null, - "session_id": null, - "importance": "Medium", - "category": "Wallet" - }, - { - "id": "c9cca4f1-d004-4d87-a601-915be9307a0a", - "user_email": "user0@example.com", - "activity_type": "WalletTransaction", - "description": "Purchased $500 credits via credit_card", - "metadata": null, - "timestamp": "2025-08-23T03:35:08.419737310Z", - "ip_address": null, - "user_agent": null, - "session_id": null, - "importance": "Medium", - "category": "Wallet" - }, - { - "id": "2834a126-04d9-4ef0-a955-ad33a4964ab7", - "user_email": "user0@example.com", - "activity_type": "WalletTransaction", - "description": "Purchased $1500 credits via credit_card", - "metadata": null, - "timestamp": "2025-08-23T03:35:04.037035004Z", - "ip_address": null, - "user_agent": null, - "session_id": null, - "importance": "Medium", - "category": "Wallet" - } - ], - "user_preferences": { - "theme": "light", - "language": "en", - "currency_display": "symbol", - "email_notifications": true, - "push_notifications": true, - "marketing_emails": false, - "data_sharing": false, - "preferred_currency": "USD", - "preferred_language": "en", - "timezone": "UTC", - "notification_settings": { - "email_enabled": true, - "push_enabled": true, - "sms_enabled": false, - "slack_webhook": null, - "discord_webhook": null, - "enabled": true, - "push": true, - "node_offline_alerts": true, - "maintenance_reminders": true, - "earnings_reports": true - }, - "privacy_settings": { - "profile_public": false, - "email_public": false, - "activity_public": false, - "stats_public": false, - "profile_visibility": "private", - "marketing_emails": false, - "data_sharing": false, - "activity_tracking": true - }, - "dashboard_layout": "default", - "last_payment_method": "credit_card" - }, - "usage_statistics": null, - "orders": [], - "active_product_rentals": [], - "farmer_rental_earnings": [], - "node_rentals": [], - "node_groups": [ - { - "id": "compute", - "name": "Compute", - "description": "General compute workloads", - "node_ids": [], - "group_type": { - "Default": "compute" - }, - "updated_at": "2025-08-23T03:46:01.787352113Z", - "created_at": "2025-08-23T03:46:01.787350674Z", - "group_config": { - "group_name": "Compute Nodes", - "max_nodes": 100, - "allocation_strategy": "balanced", - "auto_scaling": true, - "preferred_slice_formats": [ - "1x1", - "2x2" - ], - "default_pricing": 50.0, - "resource_optimization": { - "cpu_optimization": 0.5, - "memory_optimization": 0.5, - "storage_optimization": 0.5, - "network_optimization": 0.5 - } - } - }, - { - "id": "storage", - "name": "Storage", - "description": "Storage and data workloads", - "node_ids": [], - "group_type": { - "Default": "storage" - }, - "updated_at": "2025-08-23T03:46:01.787360438Z", - "created_at": "2025-08-23T03:46:01.787360117Z", - "group_config": { - "group_name": "Storage Nodes", - "max_nodes": 50, - "allocation_strategy": "storage_optimized", - "auto_scaling": false, - "preferred_slice_formats": [ - "1x1" - ], - "default_pricing": 30.0, - "resource_optimization": { - "cpu_optimization": 0.3, - "memory_optimization": 0.3, - "storage_optimization": 0.8, - "network_optimization": 0.6 - } - } - }, - { - "id": "ai-gpu", - "name": "AI/GPU", - "description": "AI and GPU-intensive workloads", - "node_ids": [], - "group_type": { - "Default": "ai-gpu" - }, - "updated_at": "2025-08-23T03:46:01.787365058Z", - "created_at": "2025-08-23T03:46:01.787364676Z", - "group_config": { - "group_name": "AI/GPU Nodes", - "max_nodes": 20, - "allocation_strategy": "gpu_optimized", - "auto_scaling": true, - "preferred_slice_formats": [ - "4x4", - "8x8" - ], - "default_pricing": 200.0, - "resource_optimization": { - "cpu_optimization": 0.8, - "memory_optimization": 0.7, - "storage_optimization": 0.4, - "network_optimization": 0.5 - } - } - } - ], - "slice_rentals": [], - "slice_assignments": [], - "display_currency": "USD", - "quick_topup_amounts": [ - 10.0, - 25.0, - 50.0, - 100.0 - ], - "auto_topup_settings": { - "enabled": true, - "threshold_amount_usd": 10.0, - "topup_amount_usd": 50.0, - "payment_method_id": "credit_card", - "daily_limit_usd": 200.0, - "monthly_limit_usd": 2002.0, - "created_at": "2025-08-23T04:40:23.538933710Z", - "updated_at": "2025-08-23T04:40:23.538933918Z" - }, - "products": [ - { - "id": "user_user0_example_com_fa373486", - "name": "Service A", - "category_id": "Consulting", - "description": "Service", - "base_price": 12.0, - "base_currency": "USD", - "attributes": { - "response_time": { - "key": "response_time", - "value": "4", - "attribute_type": "Text", - "is_searchable": true, - "is_filterable": false, - "display_order": null - }, - "experience_level": { - "key": "experience_level", - "value": "basic", - "attribute_type": "Text", - "is_searchable": true, - "is_filterable": false, - "display_order": null - }, - "available_hours": { - "key": "available_hours", - "value": "12", - "attribute_type": "Text", - "is_searchable": true, - "is_filterable": false, - "display_order": null - }, - "delivery_method": { - "key": "delivery_method", - "value": "remote", - "attribute_type": "Text", - "is_searchable": true, - "is_filterable": false, - "display_order": null - }, - "pricing_type": { - "key": "pricing_type", - "value": "hourly", - "attribute_type": "Text", - "is_searchable": true, - "is_filterable": false, - "display_order": null - }, - "skills": { - "key": "skills", - "value": "12", - "attribute_type": "Text", - "is_searchable": true, - "is_filterable": false, - "display_order": null - } - }, - "provider_id": "user0@example.com", - "provider_name": "user09", - "availability": "Available", - "metadata": { - "tags": [ - "12" - ], - "location": null, - "rating": null, - "review_count": 0, - "featured": false, - "last_updated": "2025-08-23T04:41:44.901079586Z", - "visibility": "Public", - "seo_keywords": [], - "custom_fields": {} - }, - "created_at": "2025-08-23T04:41:44.901086305Z", - "updated_at": "2025-08-23T04:41:44.901086537Z" - }, - { - "id": "user_user0_example_com_8232cf32", - "name": "Service 0", - "category_id": "Consulting", - "description": "s", - "base_price": 12.0, - "base_currency": "USD", - "attributes": { - "skills": { - "key": "skills", - "value": "", - "attribute_type": "Text", - "is_searchable": true, - "is_filterable": false, - "display_order": null - }, - "response_time": { - "key": "response_time", - "value": "4", - "attribute_type": "Text", - "is_searchable": true, - "is_filterable": false, - "display_order": null - }, - "delivery_method": { - "key": "delivery_method", - "value": "remote", - "attribute_type": "Text", - "is_searchable": true, - "is_filterable": false, - "display_order": null - }, - "experience_level": { - "key": "experience_level", - "value": "basic", - "attribute_type": "Text", - "is_searchable": true, - "is_filterable": false, - "display_order": null - }, - "available_hours": { - "key": "available_hours", - "value": "11", - "attribute_type": "Text", - "is_searchable": true, - "is_filterable": false, - "display_order": null - }, - "pricing_type": { - "key": "pricing_type", - "value": "hourly", - "attribute_type": "Text", - "is_searchable": true, - "is_filterable": false, - "display_order": null - } - }, - "provider_id": "user0@example.com", - "provider_name": "user09", - "availability": "Available", - "metadata": { - "tags": [], - "location": null, - "rating": null, - "review_count": 0, - "featured": false, - "last_updated": "2025-08-28T03:37:09.609165523Z", - "visibility": "Public", - "seo_keywords": [], - "custom_fields": {} - }, - "created_at": "2025-08-28T03:37:09.609168638Z", - "updated_at": "2025-08-28T03:37:09.609168960Z" - }, - { - "id": "user_user0_example_com_0137df0f", - "name": "Service 00", - "category_id": "Consulting", - "description": "a", - "base_price": 12.0, - "base_currency": "USD", - "attributes": { - "available_hours": { - "key": "available_hours", - "value": "11", - "attribute_type": "Text", - "is_searchable": true, - "is_filterable": false, - "display_order": null - }, - "delivery_method": { - "key": "delivery_method", - "value": "remote", - "attribute_type": "Text", - "is_searchable": true, - "is_filterable": false, - "display_order": null - }, - "skills": { - "key": "skills", - "value": "12", - "attribute_type": "Text", - "is_searchable": true, - "is_filterable": false, - "display_order": null - }, - "experience_level": { - "key": "experience_level", - "value": "basic", - "attribute_type": "Text", - "is_searchable": true, - "is_filterable": false, - "display_order": null - }, - "response_time": { - "key": "response_time", - "value": "4", - "attribute_type": "Text", - "is_searchable": true, - "is_filterable": false, - "display_order": null - }, - "pricing_type": { - "key": "pricing_type", - "value": "hourly", - "attribute_type": "Text", - "is_searchable": true, - "is_filterable": false, - "display_order": null - } - }, - "provider_id": "user0@example.com", - "provider_name": "user09", - "availability": "Available", - "metadata": { - "tags": [ - "12" - ], - "location": null, - "rating": null, - "review_count": 0, - "featured": false, - "last_updated": "2025-08-28T03:53:40.461214564Z", - "visibility": "Public", - "seo_keywords": [], - "custom_fields": {} - }, - "created_at": "2025-08-28T03:53:40.461222007Z", - "updated_at": "2025-08-28T03:53:40.461222900Z" - } - ], - "owned_products": [], - "owned_product_ids": [], - "ssh_keys": [], - "message_threads": [ - { - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "user_a_email": "user1@example.com", - "user_b_email": "user0@example.com", - "context_type": "service_booking", - "context_id": "req-a6761a9e-1db8a97c", - "subject": "Service Booking #req-a6761a9e-1db8a97c", - "created_at": "2025-08-28T04:55:41.747608734Z", - "updated_at": "2025-08-29T17:20:36.539346560Z", - "last_message_at": "2025-08-29T17:20:36.539344441Z", - "user_a_unread_count": 0, - "user_b_unread_count": 0 - }, - { - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "user_a_email": "user1@example.com", - "user_b_email": "user0@example.com", - "context_type": "service_booking", - "context_id": "req-b31f28bf-1b012ba2", - "subject": "Service Booking #req-b31f28bf-1b012ba2", - "created_at": "2025-08-28T13:57:44.966825957Z", - "updated_at": "2025-08-29T17:24:10.829159961Z", - "last_message_at": "2025-08-29T17:24:10.829154825Z", - "user_a_unread_count": 0, - "user_b_unread_count": 0 - }, - { - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "user_a_email": "user1@example.com", - "user_b_email": "user0@example.com", - "context_type": "service_booking", - "context_id": "req-adf8d9d7-cca7fea4", - "subject": "Service Booking #req-adf8d9d7-cca7fea4", - "created_at": "2025-08-28T14:05:04.325533402Z", - "updated_at": "2025-08-29T17:06:37.753315749Z", - "last_message_at": "2025-08-29T17:06:37.753309290Z", - "user_a_unread_count": 0, - "user_b_unread_count": 0 - }, - { - "thread_id": "12e1971d-8c98-4c38-8bd9-d235575952a6", - "user_a_email": "user1@example.com", - "user_b_email": "user0@example.com", - "context_type": "service_booking", - "context_id": "req-720ef602-e4f4f304", - "subject": "Service Booking #req-720ef602-e4f4f304", - "created_at": "2025-08-29T05:27:06.739756827Z", - "updated_at": "2025-08-29T06:36:21.048788603Z", - "last_message_at": "2025-08-29T06:36:21.048787006Z", - "user_a_unread_count": 0, - "user_b_unread_count": 0 - }, - { - "thread_id": "a1da1188-183d-4de2-b74e-12dab70ef27c", - "user_a_email": "user1@example.com", - "user_b_email": "user0@example.com", - "context_type": "service_booking", - "context_id": "req-104ecd70-1699cf5a", - "subject": "Service Booking #req-104ecd70-1699cf5a", - "created_at": "2025-08-29T18:07:57.619394054Z", - "updated_at": "2025-08-29T18:10:23.553617810Z", - "last_message_at": "2025-08-29T18:10:23.553611422Z", - "user_a_unread_count": 0, - "user_b_unread_count": 0 - } - ], - "messages": [ - { - "message_id": "f206552a-5a1c-427b-a69f-85d4aba66cf0", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "Hi!", - "message_type": "text", - "timestamp": "2025-08-28T13:50:16.958377689Z", - "read_at": null - }, - { - "message_id": "1a7ff5f9-77c2-47ae-aa64-993151422647", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "hi there is an issue", - "message_type": "text", - "timestamp": "2025-08-28T13:57:48.724637712Z", - "read_at": null - }, - { - "message_id": "cb5f6082-cd6f-4e76-a6ab-f58e93426967", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "can you help", - "message_type": "text", - "timestamp": "2025-08-28T13:57:51.624551399Z", - "read_at": null - }, - { - "message_id": "77d097a1-78cc-498c-b868-e96d6faf2480", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "thank you", - "message_type": "text", - "timestamp": "2025-08-28T13:57:52.976961902Z", - "read_at": null - }, - { - "message_id": "3ebcb701-4a75-4cb4-85db-6bf7aeb02699", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "oh I see let me have a look", - "message_type": "text", - "timestamp": "2025-08-28T14:04:13.306623365Z", - "read_at": null - }, - { - "message_id": "5b296663-e8ee-49dd-bd2a-ac1600f81285", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-28T14:04:21.999930132Z", - "read_at": null - }, - { - "message_id": "1484fe6e-8fea-4df1-83c8-80e249a2651c", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-29T04:38:53.028223499Z", - "read_at": null - }, - { - "message_id": "0cdb0a6a-6832-4161-8546-32cab86ccd22", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "hi", - "message_type": "text", - "timestamp": "2025-08-29T04:52:11.129663681Z", - "read_at": null - }, - { - "message_id": "7e415a97-1592-4357-b66d-74c0a5bfec47", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "allo", - "message_type": "text", - "timestamp": "2025-08-29T04:54:20.434939954Z", - "read_at": null - }, - { - "message_id": "afac82b6-7dab-4197-9eae-78e9ffaf8b34", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "allo", - "message_type": "text", - "timestamp": "2025-08-29T04:54:33.022227049Z", - "read_at": null - }, - { - "message_id": "a489e84f-7891-4dc9-bfba-031957d33be2", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "allo", - "message_type": "text", - "timestamp": "2025-08-29T04:54:35.039607100Z", - "read_at": null - }, - { - "message_id": "cfe717d3-f809-4089-b56d-5f305d6947b7", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "salut", - "message_type": "text", - "timestamp": "2025-08-29T04:56:46.628354893Z", - "read_at": null - }, - { - "message_id": "40ac0bc9-c801-49fe-98c8-38ea58cc158d", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "ppppppppp", - "message_type": "text", - "timestamp": "2025-08-29T05:00:21.265091688Z", - "read_at": null - }, - { - "message_id": "dcf01f67-7ab6-4345-9831-720de3a512ec", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "ok", - "message_type": "text", - "timestamp": "2025-08-29T05:00:40.536842187Z", - "read_at": null - }, - { - "message_id": "1f63b331-88e4-423c-b82d-0d138b79b707", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-29T05:00:45.265747266Z", - "read_at": null - }, - { - "message_id": "08bd763b-d1ef-45a4-9296-3c5670518ea0", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "helo", - "message_type": "text", - "timestamp": "2025-08-29T05:00:48.362369878Z", - "read_at": null - }, - { - "message_id": "980288ac-ae86-4105-9cc3-451482d41b48", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "fgsda", - "message_type": "text", - "timestamp": "2025-08-29T05:01:04.187258342Z", - "read_at": null - }, - { - "message_id": "6da3f476-c516-4a01-837e-ed469f805354", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "fdsafas", - "message_type": "text", - "timestamp": "2025-08-29T05:01:06.311267610Z", - "read_at": null - }, - { - "message_id": "73ffaa87-40f2-452a-a238-281ae614b2cf", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "fdsafsa", - "message_type": "text", - "timestamp": "2025-08-29T05:01:07.806135678Z", - "read_at": null - }, - { - "message_id": "482a30ad-0f2c-40f7-bfc2-5edfc09ee13a", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "fdsasfsa", - "message_type": "text", - "timestamp": "2025-08-29T05:06:08.233635046Z", - "read_at": null - }, - { - "message_id": "d29d5cc7-182b-405e-8582-f1c4a2eae8b2", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "gsadga", - "message_type": "text", - "timestamp": "2025-08-29T05:07:25.514161344Z", - "read_at": null - }, - { - "message_id": "848e1ce9-669e-4eeb-90c2-5416a7fea934", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "fdsaf", - "message_type": "text", - "timestamp": "2025-08-29T05:09:29.252120Z", - "read_at": null - }, - { - "message_id": "9bd09a24-ec14-4957-83c6-2ec6255a888f", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "fsdafas", - "message_type": "text", - "timestamp": "2025-08-29T05:09:30.036429892Z", - "read_at": null - }, - { - "message_id": "d2ea89c6-98a9-45fd-bfea-c4b003a3d7cc", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "fdsaf", - "message_type": "text", - "timestamp": "2025-08-29T05:12:30.772793945Z", - "read_at": null - }, - { - "message_id": "8a2230e9-9e17-4927-b9b6-07d0205dae03", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "test", - "message_type": "text", - "timestamp": "2025-08-29T05:29:27.656334651Z", - "read_at": null - }, - { - "message_id": "8f3f9dd0-3197-4ed5-bb1d-039b6ba0aab5", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "hi", - "message_type": "text", - "timestamp": "2025-08-29T05:29:47.161792171Z", - "read_at": null - }, - { - "message_id": "081b148a-a01b-43fd-83db-cfe9deb83c21", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-29T05:30:09.863451177Z", - "read_at": null - }, - { - "message_id": "a1ed9558-05d7-4c76-9e90-ce0411ce4de1", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "hi", - "message_type": "text", - "timestamp": "2025-08-29T05:30:28.721571109Z", - "read_at": null - }, - { - "message_id": "3270fb1b-17ec-4ccf-af13-9959195a1d94", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-29T05:37:45.771146864Z", - "read_at": null - }, - { - "message_id": "95242583-52d7-4c8f-b3f5-2e70c7ecd75b", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-29T05:38:01.271887984Z", - "read_at": null - }, - { - "message_id": "e55bd2e4-d585-4643-af6f-cf264494f782", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "hi", - "message_type": "text", - "timestamp": "2025-08-29T05:46:53.415516762Z", - "read_at": null - }, - { - "message_id": "7d651db4-1813-4955-b2da-46de882a6bb2", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "hey", - "message_type": "text", - "timestamp": "2025-08-29T05:47:18.178384804Z", - "read_at": null - }, - { - "message_id": "86a65e45-1e81-4ca7-8433-1c425f12376d", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "jkl", - "message_type": "text", - "timestamp": "2025-08-29T05:47:37.310011508Z", - "read_at": null - }, - { - "message_id": "7f791ed6-9a7d-4dbf-9b54-6af5ae219876", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-29T05:58:53.067774162Z", - "read_at": null - }, - { - "message_id": "4c5b5624-4fae-4995-a4e0-385042bee486", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-29T05:58:57.848136343Z", - "read_at": null - }, - { - "message_id": "5108a5b0-d7ac-4bd1-b2e9-7940d8071268", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "jello", - "message_type": "text", - "timestamp": "2025-08-29T05:59:40.292048246Z", - "read_at": null - }, - { - "message_id": "ce0d7cb7-878b-4829-b083-fea7c1b76723", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "fdsafs", - "message_type": "text", - "timestamp": "2025-08-29T06:03:02.628138445Z", - "read_at": null - }, - { - "message_id": "ad149ca5-50da-4ef2-895b-ac9265ab14d5", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "this is new", - "message_type": "text", - "timestamp": "2025-08-29T06:04:24.723399533Z", - "read_at": null - }, - { - "message_id": "a9e1db7c-2f75-4c00-a58f-4474dbe57af7", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "this this this", - "message_type": "text", - "timestamp": "2025-08-29T06:08:13.073396835Z", - "read_at": null - }, - { - "message_id": "41be0e65-a9ae-4eee-83c6-23d3b2980a1b", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "fdsa", - "message_type": "text", - "timestamp": "2025-08-29T06:16:57.800754241Z", - "read_at": null - }, - { - "message_id": "bc1990ac-14a5-4a48-af96-3025f0870cda", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "fdsafasfdsa", - "message_type": "text", - "timestamp": "2025-08-29T06:20:45.359247064Z", - "read_at": null - }, - { - "message_id": "b584031b-e9f1-4b3f-a12c-0f2da1ff2660", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "jkjkh", - "message_type": "text", - "timestamp": "2025-08-29T06:23:53.789931419Z", - "read_at": null - }, - { - "message_id": "b54699b4-0d9d-4697-89a3-bcc772a6140e", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-29T06:27:35.991234338Z", - "read_at": null - }, - { - "message_id": "54cb76bb-4657-43aa-9acb-124b5bc74dfe", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "thanks", - "message_type": "text", - "timestamp": "2025-08-29T06:27:58.216565074Z", - "read_at": null - }, - { - "message_id": "010b99dc-5d16-4579-8e0f-3e9da8e939ff", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "fgsda", - "message_type": "text", - "timestamp": "2025-08-29T06:28:23.449404101Z", - "read_at": null - }, - { - "message_id": "af528903-f81e-460a-89e8-a03e4ffe30ce", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "jkh", - "message_type": "text", - "timestamp": "2025-08-29T06:31:26.207907295Z", - "read_at": null - }, - { - "message_id": "0137b7f3-4cd4-4945-9032-626d528d6e26", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "kh", - "message_type": "text", - "timestamp": "2025-08-29T06:31:47.041200559Z", - "read_at": null - }, - { - "message_id": "8c99cefe-48f4-496b-ac06-96d8ca385924", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "jkhk", - "message_type": "text", - "timestamp": "2025-08-29T06:32:57.008314776Z", - "read_at": null - }, - { - "message_id": "dd716cf8-de7c-4bcf-a5d8-fbe947d9768c", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "kljl", - "message_type": "text", - "timestamp": "2025-08-29T06:33:14.908000174Z", - "read_at": null - }, - { - "message_id": "17149abc-576e-4d47-8a86-d214c8a1e39a", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "fdsafsad", - "message_type": "text", - "timestamp": "2025-08-29T06:35:48.472929345Z", - "read_at": null - }, - { - "message_id": "8eff5230-6904-4ad2-b889-13490f633a4b", - "thread_id": "12e1971d-8c98-4c38-8bd9-d235575952a6", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "fdsafasdfas", - "message_type": "text", - "timestamp": "2025-08-29T06:36:21.015083156Z", - "read_at": null - }, - { - "message_id": "65ed47a6-d012-4b5c-9586-dfef22de8251", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "88888888", - "message_type": "text", - "timestamp": "2025-08-29T06:39:25.576788681Z", - "read_at": null - }, - { - "message_id": "eb3b9e22-417e-4203-9894-c06aedc73a3d", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "jhj", - "message_type": "text", - "timestamp": "2025-08-29T06:41:38.577915281Z", - "read_at": null - }, - { - "message_id": "e36d4feb-7906-4117-9738-ce5ec4800ab2", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "n", - "message_type": "text", - "timestamp": "2025-08-29T06:41:43.622965819Z", - "read_at": null - }, - { - "message_id": "bc16c9a4-0da5-4f58-b0f1-4f6f4fd7bf4f", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-29T17:04:51.908146255Z", - "read_at": null - }, - { - "message_id": "91df6be0-8953-4a92-8e4a-840786865b64", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "hi how are you?", - "message_type": "text", - "timestamp": "2025-08-29T17:04:57.817946421Z", - "read_at": null - }, - { - "message_id": "cbbc128d-58a9-4ce5-b515-867a35d0ab4d", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "good and you", - "message_type": "text", - "timestamp": "2025-08-29T17:05:13.656733278Z", - "read_at": null - }, - { - "message_id": "140f5ee1-d165-42b5-8100-4f17a60ecb07", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "great", - "message_type": "text", - "timestamp": "2025-08-29T17:06:37.722499934Z", - "read_at": null - }, - { - "message_id": "2d595235-4e60-4ee1-b9eb-6e63e8f4b866", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "ok thanks", - "message_type": "text", - "timestamp": "2025-08-29T17:08:27.424658637Z", - "read_at": null - }, - { - "message_id": "6f4df378-cee7-4879-8fc7-2e3c7ddcfe08", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "ok", - "message_type": "text", - "timestamp": "2025-08-29T17:20:36.512198989Z", - "read_at": null - }, - { - "message_id": "f993768c-a291-4d8c-8fd2-3bb8f68419fc", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "okok", - "message_type": "text", - "timestamp": "2025-08-29T17:24:10.754416878Z", - "read_at": null - }, - { - "message_id": "a82929af-eab7-4957-a07f-90dd439d424e", - "thread_id": "a1da1188-183d-4de2-b74e-12dab70ef27c", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "hi", - "message_type": "text", - "timestamp": "2025-08-29T18:10:23.527706770Z", - "read_at": null - } - ] -} \ No newline at end of file diff --git a/user_data/user111_at_example_com.json b/user_data/user111_at_example_com.json deleted file mode 100644 index 2ea3310..0000000 --- a/user_data/user111_at_example_com.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "user_email": "user111@example.com", - "wallet_balance_usd": 0.0, - "transactions": [], - "staked_amount_usd": 0.0, - "pool_positions": {}, - "name": "user111", - "country": null, - "timezone": null, - "password_hash": "$2b$12$0I0taABmXC9qgK/oe1ynjO/eVIG4sdguLm6DLQffvbjU33jkSe6Ti", - "services": [], - "service_requests": [], - "service_bookings": [], - "availability": null, - "slas": [], - "apps": [], - "application_deployments": [], - "deleted": null, - "deleted_at": null, - "deletion_reason": null, - "nodes": [], - "resource_provider_earnings": [], - "resource_provider_settings": null, - "slice_products": [], - "user_activities": [], - "user_preferences": null, - "usage_statistics": null, - "orders": [], - "active_product_rentals": [], - "resource_provider_rental_earnings": [], - "node_rentals": [], - "node_groups": [], - "slice_rentals": [], - "slice_assignments": [], - "display_currency": "MC", - "quick_topup_amounts": [ - 10.0, - 25.0, - 50.0, - 100.0 - ], - "auto_topup_settings": null, - "products": [], - "owned_products": [], - "owned_product_ids": [], - "ssh_keys": [], - "message_threads": null, - "messages": null -} \ No newline at end of file diff --git a/user_data/user123_at_example_com.json b/user_data/user123_at_example_com.json deleted file mode 100644 index 1a0d1cc..0000000 --- a/user_data/user123_at_example_com.json +++ /dev/null @@ -1,541 +0,0 @@ -{ - "user_email": "user123@example.com", - "wallet_balance_usd": 12.0, - "transactions": [ - { - "id": "5590075e-2ec3-4ece-b64e-2ab2bd8a4a92", - "user_id": "user123@example.com", - "transaction_type": { - "Purchase": { - "product_id": "credits" - } - }, - "amount": 12.0, - "currency": "USD", - "exchange_rate_usd": 1.0, - "amount_usd": 12.0, - "description": "Credits purchase via credit_card", - "reference_id": "5590075e-2ec3-4ece-b64e-2ab2bd8a4a92", - "metadata": null, - "timestamp": "2025-09-08T17:16:29.777650952Z", - "status": "Completed" - } - ], - "staked_amount_usd": 0.0, - "pool_positions": {}, - "name": "user123", - "country": null, - "timezone": null, - "password_hash": "$2b$12$g8daTd2i0nUXUOJEBFMGKuRhJTNye6hae1hDETWLTKBTPs.3WasQu", - "services": [], - "service_requests": [], - "service_bookings": [], - "availability": null, - "slas": [], - "apps": [], - "application_deployments": [], - "deleted": null, - "deleted_at": null, - "deletion_reason": null, - "nodes": [ - { - "id": "grid_node_1", - "location": "Unknown, Belgium", - "status": "Online", - "capacity": { - "cpu_cores": 56, - "memory_gb": 188, - "storage_gb": 135975, - "bandwidth_mbps": 1000, - "ssd_storage_gb": 1863, - "hdd_storage_gb": 134112, - "ram_gb": 188 - }, - "used_capacity": { - "cpu_cores": 25, - "memory_gb": 92, - "storage_gb": 1021, - "bandwidth_mbps": 0, - "ssd_storage_gb": 1021, - "hdd_storage_gb": 0, - "ram_gb": 92 - }, - "uptime_percentage": 99.0, - "farming_start_date": "2025-08-10T03:03:44.241167749Z", - "last_updated": "2025-09-09T03:03:44.241194575Z", - "utilization_7_day_avg": 65.0, - "slice_formats_supported": [ - "1x1", - "2x2", - "4x4" - ], - "rental_options": null, - "total_base_slices": 0, - "allocated_base_slices": 0, - "earnings_today_usd": 0.0, - "grid_node_id": "1", - "available_combinations": [], - "slice_allocations": [], - "slice_last_calculated": null, - "marketplace_sla": { - "id": "sla-repair-90a36bcd-b6e2-45e7-872a-baeaa485f220", - "name": "Repaired Node SLA", - "uptime_guarantee": 99.8, - "response_time_hours": 24, - "resolution_time_hours": 48, - "penalty_rate": 0.01, - "uptime_guarantee_percentage": 99.8, - "base_slice_price": 0.5, - "bandwidth_guarantee_mbps": 100.0, - "last_updated": "2025-09-09T03:04:23.227212978Z" - }, - "slice_pricing": { - "base_price_per_hour": 1.0, - "currency": "USD", - "pricing_multiplier": 1.0 - }, - "grid_data": { - "capacity": { - "bandwidth_mbps": 1000, - "cpu_cores": 56, - "hdd_storage_gb": 134112, - "memory_gb": 188, - "ram_gb": 188, - "ssd_storage_gb": 1863, - "storage_gb": 135975 - }, - "certification_type": "Diy", - "city": "Unknown", - "country": "Belgium", - "farm_id": 1, - "farm_name": "Freefarm", - "farming_policy_id": 1, - "grid_node_id": 1, - "last_updated": "2025-09-09T03:03:44.240833231Z", - "location": "Unknown, Belgium", - "node_id": 1, - "public_ips": [ - "192.168.1.100" - ], - "status": "Online", - "total_resources": { - "bandwidth_mbps": 1000, - "cpu_cores": 56, - "hdd_storage_gb": 134112, - "memory_gb": 188, - "ram_gb": 188, - "ssd_storage_gb": 1863, - "storage_gb": 135975 - }, - "uptime": 99.5, - "used_resources": { - "bandwidth_mbps": 0, - "cpu_cores": 25, - "hdd_storage_gb": 0, - "memory_gb": 92, - "ram_gb": 92, - "ssd_storage_gb": 1021, - "storage_gb": 1021 - } - }, - "slice_formats": null, - "name": "Grid Node 1", - "region": "Belgium", - "node_type": "MyceliumNode", - "staking_options": null, - "availability_status": "Available", - "node_group_id": null, - "group_assignment_date": null, - "group_slice_format": null, - "group_slice_price": null, - "last_seen": "2025-09-09T03:03:44.241206636Z", - "health_score": 100.0 - }, - { - "id": "grid_node_10", - "location": "Unknown, Belgium", - "status": "Online", - "capacity": { - "cpu_cores": 8, - "memory_gb": 15, - "storage_gb": 402559, - "bandwidth_mbps": 1000, - "ssd_storage_gb": 223, - "hdd_storage_gb": 402336, - "ram_gb": 15 - }, - "used_capacity": { - "cpu_cores": 4, - "memory_gb": 10, - "storage_gb": 137, - "bandwidth_mbps": 0, - "ssd_storage_gb": 137, - "hdd_storage_gb": 0, - "ram_gb": 10 - }, - "uptime_percentage": 99.0, - "farming_start_date": "2025-08-10T03:10:19.936729614Z", - "last_updated": "2025-09-09T03:10:19.936733378Z", - "utilization_7_day_avg": 65.0, - "slice_formats_supported": [ - "1x1", - "2x2", - "4x4" - ], - "rental_options": null, - "total_base_slices": 0, - "allocated_base_slices": 0, - "earnings_today_usd": 0.0, - "grid_node_id": "10", - "available_combinations": [], - "slice_allocations": [], - "slice_last_calculated": null, - "marketplace_sla": { - "id": "sla-repair-e3b05c2c-5eb6-4304-93c0-7a9c7348636a", - "name": "Repaired Node SLA", - "uptime_guarantee": 99.8, - "response_time_hours": 24, - "resolution_time_hours": 48, - "penalty_rate": 0.01, - "uptime_guarantee_percentage": 99.8, - "base_slice_price": 0.5, - "bandwidth_guarantee_mbps": 100.0, - "last_updated": "2025-09-09T03:13:53.570999450Z" - }, - "slice_pricing": { - "base_price_per_hour": 1.0, - "currency": "USD", - "pricing_multiplier": 1.0 - }, - "grid_data": { - "capacity": { - "bandwidth_mbps": 1000, - "cpu_cores": 8, - "hdd_storage_gb": 402336, - "memory_gb": 15, - "ram_gb": 15, - "ssd_storage_gb": 223, - "storage_gb": 402559 - }, - "certification_type": "Diy", - "city": "Unknown", - "country": "Belgium", - "farm_id": 1, - "farm_name": "Freefarm", - "farming_policy_id": 1, - "grid_node_id": 10, - "last_updated": "2025-09-09T03:10:19.936676347Z", - "location": "Unknown, Belgium", - "node_id": 10, - "public_ips": [ - "192.168.1.100" - ], - "status": "Online", - "total_resources": { - "bandwidth_mbps": 1000, - "cpu_cores": 8, - "hdd_storage_gb": 402336, - "memory_gb": 15, - "ram_gb": 15, - "ssd_storage_gb": 223, - "storage_gb": 402559 - }, - "uptime": 99.5, - "used_resources": { - "bandwidth_mbps": 0, - "cpu_cores": 4, - "hdd_storage_gb": 0, - "memory_gb": 10, - "ram_gb": 10, - "ssd_storage_gb": 137, - "storage_gb": 137 - } - }, - "slice_formats": null, - "name": "Grid Node 10", - "region": "Belgium", - "node_type": "MyceliumNode", - "staking_options": null, - "availability_status": "Available", - "node_group_id": null, - "group_assignment_date": null, - "group_slice_format": null, - "group_slice_price": null, - "last_seen": "2025-09-09T03:10:19.936736220Z", - "health_score": 100.0 - }, - { - "id": "grid_node_12", - "location": "Unknown, Belgium", - "status": "Online", - "capacity": { - "cpu_cores": 8, - "memory_gb": 15, - "storage_gb": 402559, - "bandwidth_mbps": 1000, - "ssd_storage_gb": 223, - "hdd_storage_gb": 402336, - "ram_gb": 15 - }, - "used_capacity": { - "cpu_cores": 5, - "memory_gb": 12, - "storage_gb": 165, - "bandwidth_mbps": 0, - "ssd_storage_gb": 165, - "hdd_storage_gb": 0, - "ram_gb": 12 - }, - "uptime_percentage": 99.0, - "farming_start_date": "2025-08-10T03:30:24.732131670Z", - "last_updated": "2025-09-09T03:30:24.732143334Z", - "utilization_7_day_avg": 65.0, - "slice_formats_supported": [ - "1x1", - "2x2", - "4x4" - ], - "rental_options": null, - "total_base_slices": 0, - "allocated_base_slices": 0, - "earnings_today_usd": 0.0, - "grid_node_id": "12", - "available_combinations": [], - "slice_allocations": [], - "slice_last_calculated": null, - "marketplace_sla": { - "id": "sla-repair-25c05a40-790f-4a80-8ef8-fa12a726c0ff", - "name": "Repaired Node SLA", - "uptime_guarantee": 99.8, - "response_time_hours": 24, - "resolution_time_hours": 48, - "penalty_rate": 0.01, - "uptime_guarantee_percentage": 99.8, - "base_slice_price": 0.5, - "bandwidth_guarantee_mbps": 100.0, - "last_updated": "2025-09-09T03:30:27.416132016Z" - }, - "slice_pricing": { - "base_price_per_hour": 1.0, - "currency": "USD", - "pricing_multiplier": 1.0 - }, - "grid_data": { - "capacity": { - "bandwidth_mbps": 1000, - "cpu_cores": 8, - "hdd_storage_gb": 402336, - "memory_gb": 15, - "ram_gb": 15, - "ssd_storage_gb": 223, - "storage_gb": 402559 - }, - "certification_type": "Diy", - "city": "Unknown", - "country": "Belgium", - "farm_id": 1, - "farm_name": "Freefarm", - "farming_policy_id": 1, - "grid_node_id": 12, - "last_updated": "2025-09-09T03:30:24.731928799Z", - "location": "Unknown, Belgium", - "node_id": 12, - "public_ips": [ - "192.168.1.100" - ], - "status": "Online", - "total_resources": { - "bandwidth_mbps": 1000, - "cpu_cores": 8, - "hdd_storage_gb": 402336, - "memory_gb": 15, - "ram_gb": 15, - "ssd_storage_gb": 223, - "storage_gb": 402559 - }, - "uptime": 99.5, - "used_resources": { - "bandwidth_mbps": 0, - "cpu_cores": 5, - "hdd_storage_gb": 0, - "memory_gb": 12, - "ram_gb": 12, - "ssd_storage_gb": 165, - "storage_gb": 165 - } - }, - "slice_formats": null, - "name": "Grid Node 12", - "region": "Belgium", - "node_type": "MyceliumNode", - "staking_options": null, - "availability_status": "Available", - "node_group_id": null, - "group_assignment_date": null, - "group_slice_format": null, - "group_slice_price": null, - "last_seen": "2025-09-09T03:30:24.732150580Z", - "health_score": 100.0 - } - ], - "resource_provider_earnings": [], - "resource_provider_settings": null, - "slice_products": [], - "user_activities": [ - { - "id": "1db56139-8a5f-4e32-a235-c0f1bb4ab357", - "user_email": "user123@example.com", - "activity_type": "WalletTransaction", - "description": "Purchased $12 credits via credit_card", - "metadata": null, - "timestamp": "2025-09-08T17:16:29.777958164Z", - "ip_address": null, - "user_agent": null, - "session_id": null, - "importance": "Medium", - "category": "Wallet" - } - ], - "user_preferences": { - "theme": "light", - "language": "en", - "currency_display": "symbol", - "email_notifications": true, - "push_notifications": true, - "marketing_emails": false, - "data_sharing": false, - "preferred_currency": "USD", - "preferred_language": "en", - "timezone": "UTC", - "notification_settings": { - "email_enabled": true, - "push_enabled": true, - "sms_enabled": false, - "slack_webhook": null, - "discord_webhook": null, - "enabled": true, - "push": true, - "node_offline_alerts": true, - "maintenance_reminders": true, - "earnings_reports": true - }, - "privacy_settings": { - "profile_public": false, - "email_public": false, - "activity_public": false, - "stats_public": false, - "profile_visibility": "private", - "marketing_emails": false, - "data_sharing": false, - "activity_tracking": true - }, - "dashboard_layout": "default", - "last_payment_method": "credit_card" - }, - "usage_statistics": null, - "orders": [], - "active_product_rentals": [], - "resource_provider_rental_earnings": [], - "node_rentals": [], - "node_groups": [ - { - "id": "compute", - "name": "Compute", - "description": "General compute workloads", - "node_ids": [], - "group_type": { - "Default": "compute" - }, - "updated_at": "2025-09-08T18:44:31.238377407Z", - "created_at": "2025-09-08T18:44:31.238375624Z", - "group_config": { - "group_name": "Compute Nodes", - "max_nodes": 100, - "allocation_strategy": "balanced", - "auto_scaling": true, - "preferred_slice_formats": [ - "1x1", - "2x2" - ], - "default_pricing": 50.0, - "resource_optimization": { - "cpu_optimization": 0.5, - "memory_optimization": 0.5, - "storage_optimization": 0.5, - "network_optimization": 0.5 - } - } - }, - { - "id": "storage", - "name": "Storage", - "description": "Storage and data workloads", - "node_ids": [], - "group_type": { - "Default": "storage" - }, - "updated_at": "2025-09-08T18:44:31.238384425Z", - "created_at": "2025-09-08T18:44:31.238383997Z", - "group_config": { - "group_name": "Storage Nodes", - "max_nodes": 50, - "allocation_strategy": "storage_optimized", - "auto_scaling": false, - "preferred_slice_formats": [ - "1x1" - ], - "default_pricing": 30.0, - "resource_optimization": { - "cpu_optimization": 0.3, - "memory_optimization": 0.3, - "storage_optimization": 0.8, - "network_optimization": 0.6 - } - } - }, - { - "id": "ai-gpu", - "name": "AI/GPU", - "description": "AI and GPU-intensive workloads", - "node_ids": [], - "group_type": { - "Default": "ai-gpu" - }, - "updated_at": "2025-09-08T18:44:31.238388576Z", - "created_at": "2025-09-08T18:44:31.238388156Z", - "group_config": { - "group_name": "AI/GPU Nodes", - "max_nodes": 20, - "allocation_strategy": "gpu_optimized", - "auto_scaling": true, - "preferred_slice_formats": [ - "4x4", - "8x8" - ], - "default_pricing": 200.0, - "resource_optimization": { - "cpu_optimization": 0.8, - "memory_optimization": 0.7, - "storage_optimization": 0.4, - "network_optimization": 0.5 - } - } - } - ], - "slice_rentals": [], - "slice_assignments": [], - "display_currency": "AED", - "quick_topup_amounts": [ - 10.0, - 25.0, - 50.0, - 100.0 - ], - "auto_topup_settings": null, - "products": [], - "owned_products": [], - "owned_product_ids": [], - "ssh_keys": [], - "message_threads": null, - "messages": null -} \ No newline at end of file diff --git a/user_data/user123_at_example_com_cart.json b/user_data/user123_at_example_com_cart.json deleted file mode 100644 index 3b53144..0000000 --- a/user_data/user123_at_example_com_cart.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "user_id": "user123@example.com", - "items": [ - { - "product_id": "user_user0_example_com_fa373486", - "quantity": 1, - "selected_specifications": {}, - "added_at": "2025-09-09T03:32:30.573242755Z", - "updated_at": "2025-09-09T03:32:30.573242755Z" - } - ], - "session_id": null, - "created_at": "2025-09-09T03:32:30.573133861Z", - "updated_at": "2025-09-09T03:32:30.573271484Z" -} \ No newline at end of file diff --git a/user_data/user1_at_example_com.json b/user_data/user1_at_example_com.json index c751184..056fd36 100644 --- a/user_data/user1_at_example_com.json +++ b/user_data/user1_at_example_com.json @@ -1,739 +1,356 @@ { "user_email": "user1@example.com", - "wallet_balance_usd": 14.0, - "transactions": [ - { - "id": "5a7ac9fc-e03e-445a-8ce3-8d02d9990e75", - "user_id": "user1@example.com", - "transaction_type": { - "Purchase": { - "product_id": "credits" - } - }, - "amount": 111.0, - "currency": "USD", - "exchange_rate_usd": 1.0, - "amount_usd": 111.0, - "description": "Credits purchase via credit_card", - "reference_id": "5a7ac9fc-e03e-445a-8ce3-8d02d9990e75", - "metadata": null, - "timestamp": "2025-08-28T03:07:49.959336504Z", - "status": "Completed" - }, - { - "id": "40e47d98-8b78-418c-ae65-34cd9a885d56", - "user_id": "user1@example.com", - "transaction_type": { - "CreditsTransfer": { - "to_user": "user0@example.com", - "note": null - } - }, - "amount": 1.0, - "currency": "USD", - "exchange_rate_usd": 1.0, - "amount_usd": 1.0, - "description": "Credits transfer to user0@example.com: No note", - "reference_id": "transfer-cb531b47-b18c-4f09-ae3e-30e837fe01c1", - "metadata": null, - "timestamp": "2025-08-28T03:08:00.072097204Z", - "status": "Completed" - }, - { - "id": "a547ade0-d4c3-4e39-b061-cf2c211b38df", - "user_id": "user1@example.com", - "transaction_type": { - "InstantPurchase": { - "product_id": "user_user0_example_com_fa373486", - "quantity": 1 - } - }, - "amount": 12.0, - "currency": "USD", - "exchange_rate_usd": 1.0, - "amount_usd": 12.0, - "description": "Instant purchase of product user_user0_example_com_fa373486", - "reference_id": "instant-89c5e8b0-99aa-41c9-9d05-7b30f28130a3", - "metadata": null, - "timestamp": "2025-08-28T03:08:04.974041839Z", - "status": "Completed" - }, - { - "id": "0e9648b9-066b-43fc-8c26-d9ce9a9ab61f", - "user_id": "user1@example.com", - "transaction_type": { - "Purchase": { - "product_id": "user_user0_example_com_fa373486" - } - }, - "amount": 12.0, - "currency": "USD", - "exchange_rate_usd": 1.0, - "amount_usd": 12.0, - "description": "Order b31f28bf-a3b2-4baf-b1d7-0b1c1161474a payment", - "reference_id": "b31f28bf-a3b2-4baf-b1d7-0b1c1161474a", - "metadata": null, - "timestamp": "2025-08-28T03:10:53.043165285Z", - "status": "Completed" - }, - { - "id": "70c77b6e-576f-4150-94b5-621aa619dc0f", - "user_id": "user1@example.com", - "transaction_type": { - "Purchase": { - "product_id": "user_user0_example_com_fa373486" - } - }, - "amount": 12.0, - "currency": "USD", - "exchange_rate_usd": 1.0, - "amount_usd": 12.0, - "description": "Order adf8d9d7-e29d-4eca-9ff3-4e3d2a2ec073 payment", - "reference_id": "adf8d9d7-e29d-4eca-9ff3-4e3d2a2ec073", - "metadata": null, - "timestamp": "2025-08-28T03:24:08.620579072Z", - "status": "Completed" - }, - { - "id": "04182eaf-14b2-4da6-ba6d-0232176f7a3c", - "user_id": "user1@example.com", - "transaction_type": { - "InstantPurchase": { - "product_id": "user_user0_example_com_fa373486", - "quantity": 1 - } - }, - "amount": 12.0, - "currency": "USD", - "exchange_rate_usd": 1.0, - "amount_usd": 12.0, - "description": "Instant purchase of product user_user0_example_com_fa373486", - "reference_id": "instant-4d79d108-2a9f-49a8-a168-1a793071ab24", - "metadata": null, - "timestamp": "2025-08-28T03:24:52.228144609Z", - "status": "Completed" - }, - { - "id": "350c2cb4-914c-4b0e-8f69-1b49a014f98d", - "user_id": "user1@example.com", - "transaction_type": { - "Purchase": { - "product_id": "user_user0_example_com_8232cf32" - } - }, - "amount": 12.0, - "currency": "USD", - "exchange_rate_usd": 1.0, - "amount_usd": 12.0, - "description": "Order 720ef602-c040-4287-abb3-d912d2dd197a payment", - "reference_id": "720ef602-c040-4287-abb3-d912d2dd197a", - "metadata": null, - "timestamp": "2025-08-28T03:37:36.981306389Z", - "status": "Completed" - }, - { - "id": "d1316306-f0f2-44b2-9a27-8de789653c06", - "user_id": "user1@example.com", - "transaction_type": { - "Purchase": { - "product_id": "user_user0_example_com_0137df0f" - } - }, - "amount": 12.0, - "currency": "USD", - "exchange_rate_usd": 1.0, - "amount_usd": 12.0, - "description": "Order a6761a9e-dd7a-46b6-8bf0-5f23c93b3cf6 payment", - "reference_id": "a6761a9e-dd7a-46b6-8bf0-5f23c93b3cf6", - "metadata": null, - "timestamp": "2025-08-28T03:54:03.247871332Z", - "status": "Completed" - }, - { - "id": "d222f9d0-3dcb-40b0-bdea-70fe2da706a6", - "user_id": "user1@example.com", - "transaction_type": { - "Purchase": { - "product_id": "user_user0_example_com_8232cf32" - } - }, - "amount": 12.0, - "currency": "USD", - "exchange_rate_usd": 1.0, - "amount_usd": 12.0, - "description": "Order 104ecd70-a33f-4ef3-80c5-97b6151a082e payment", - "reference_id": "104ecd70-a33f-4ef3-80c5-97b6151a082e", - "metadata": null, - "timestamp": "2025-08-29T04:46:03.403426406Z", - "status": "Completed" - }, - { - "id": "e3d778f7-482b-43d8-9eb6-a59a0ae76cf9", - "user_id": "user1@example.com", - "transaction_type": { - "InstantPurchase": { - "product_id": "user_user0_example_com_0137df0f", - "quantity": 1 - } - }, - "amount": 12.0, - "currency": "USD", - "exchange_rate_usd": 1.0, - "amount_usd": 12.0, - "description": "Instant purchase of product user_user0_example_com_0137df0f", - "reference_id": "instant-43fb003e-b76c-41f9-8db3-deb5215cbf4b", - "metadata": null, - "timestamp": "2025-08-29T17:28:40.878762385Z", - "status": "Completed" - } - ], + "wallet_balance_usd": 0.0, + "transactions": [], "staked_amount_usd": 0.0, "pool_positions": {}, - "name": "JohnOne", - "country": "", - "timezone": "", - "password_hash": "$2b$12$yCHZ1Mp2f1IWSEJYdUsw2.xNvvvXACvT2IvZbCc20XtvJBfnkZhiO", + "name": "user1", + "country": null, + "timezone": null, + "password_hash": "$2b$12$7mt0jXw8irm5BzisY78xhudx4iFgq7eilm0vWdgD3aL3.bQlZ2OjO", "services": [], "service_requests": [], - "service_bookings": [ - { - "id": "req-b31f28bf-1b012ba2", - "provider_email": "user0@example.com", - "service_id": "svc_b31f28bf-1b012ba2", - "description": "Service booking from marketplace order b31f28bf-a3b2-4baf-b1d7-0b1c1161474a", - "status": "Pending", - "estimated_hours": 0, - "hourly_rate_usd": null, - "total_cost_usd": null, - "progress_percentage": null, - "created_date": "2025-08-28", - "completed_date": null, - "customer_email": "user1@example.com", - "service_name": "Service A", - "budget": 12.0, - "requested_date": "2025-08-28", - "priority": "Medium", - "progress": null, - "client_phone": null, - "booking_date": null - }, - { - "id": "req-adf8d9d7-cca7fea4", - "provider_email": "user0@example.com", - "service_id": "svc_adf8d9d7-cca7fea4", - "description": "Service booking from marketplace order adf8d9d7-e29d-4eca-9ff3-4e3d2a2ec073", - "status": "Pending", - "estimated_hours": 0, - "hourly_rate_usd": null, - "total_cost_usd": null, - "progress_percentage": null, - "created_date": "2025-08-28", - "completed_date": null, - "customer_email": "user1@example.com", - "service_name": "Service A", - "budget": 12.0, - "requested_date": "2025-08-28", - "priority": "Medium", - "progress": null, - "client_phone": null, - "booking_date": null - }, - { - "id": "req-720ef602-e4f4f304", - "provider_email": "user0@example.com", - "service_id": "svc_720ef602-e4f4f304", - "description": "Service booking from marketplace order 720ef602-c040-4287-abb3-d912d2dd197a", - "status": "Completed", - "estimated_hours": 0, - "hourly_rate_usd": null, - "total_cost_usd": null, - "progress_percentage": null, - "created_date": "2025-08-28", - "completed_date": "2025-08-28", - "customer_email": "user1@example.com", - "service_name": "Service 0", - "budget": 12.0, - "requested_date": "2025-08-28", - "priority": "Medium", - "progress": 100.0, - "client_phone": null, - "booking_date": null - }, - { - "id": "req-a6761a9e-1db8a97c", - "provider_email": "user0@example.com", - "service_id": "svc_a6761a9e-1db8a97c", - "description": "Service booking from marketplace order a6761a9e-dd7a-46b6-8bf0-5f23c93b3cf6", - "status": "Pending", - "estimated_hours": 0, - "hourly_rate_usd": null, - "total_cost_usd": null, - "progress_percentage": null, - "created_date": "2025-08-28", - "completed_date": null, - "customer_email": "user1@example.com", - "service_name": "Service 00", - "budget": 12.0, - "requested_date": "2025-08-28", - "priority": "Medium", - "progress": null, - "client_phone": null, - "booking_date": null - }, - { - "id": "req-104ecd70-1699cf5a", - "provider_email": "user0@example.com", - "service_id": "svc_104ecd70-1699cf5a", - "description": "Service booking from marketplace order 104ecd70-a33f-4ef3-80c5-97b6151a082e", - "status": "Pending", - "estimated_hours": 0, - "hourly_rate_usd": null, - "total_cost_usd": null, - "progress_percentage": null, - "created_date": "2025-08-29", - "completed_date": null, - "customer_email": "user1@example.com", - "service_name": "Service 0", - "budget": 12.0, - "requested_date": "2025-08-29", - "priority": "Medium", - "progress": null, - "client_phone": null, - "booking_date": null - } - ], + "service_bookings": [], "availability": null, "slas": [], "apps": [], - "app_deployments": [], + "application_deployments": [], "deleted": null, "deleted_at": null, "deletion_reason": null, - "nodes": [], - "farmer_earnings": [], - "farmer_settings": null, + "nodes": [ + { + "id": "grid_node_1", + "location": "Belgium", + "status": "Online", + "capacity": { + "cpu_cores": 56, + "memory_gb": 188, + "storage_gb": 135975, + "bandwidth_mbps": 1000, + "ssd_storage_gb": 1863, + "hdd_storage_gb": 134112, + "ram_gb": 188 + }, + "used_capacity": { + "cpu_cores": 25, + "memory_gb": 92, + "storage_gb": 1021, + "bandwidth_mbps": 0, + "ssd_storage_gb": 1021, + "hdd_storage_gb": 0, + "ram_gb": 92 + }, + "uptime_percentage": 99.8, + "farming_start_date": "2025-08-10T04:18:52.960231323Z", + "last_updated": "2025-09-09T04:18:52.959873683Z", + "utilization_7_day_avg": 65.0, + "slice_formats_supported": [ + "1x1", + "2x2", + "4x4" + ], + "rental_options": null, + "total_base_slices": 47, + "allocated_base_slices": 0, + "earnings_today_usd": 0.0, + "grid_node_id": "1", + "available_combinations": [ + { + "base_slices_required": 1, + "cpu_cores": 1, + "id": "47x1", + "memory_gb": 4, + "multiplier": 1, + "node_bandwidth_mbps": 1000, + "node_certification_type": "Diy", + "node_id": "grid_node_1", + "node_location": "Belgium", + "node_uptime_percentage": 99.8000030517578, + "price_per_hour": 1.0, + "quantity_available": 47, + "resource_provider_email": "user1@example.com", + "storage_gb": 200 + }, + { + "base_slices_required": 2, + "cpu_cores": 2, + "id": "23x2", + "memory_gb": 8, + "multiplier": 2, + "node_bandwidth_mbps": 1000, + "node_certification_type": "Diy", + "node_id": "grid_node_1", + "node_location": "Belgium", + "node_uptime_percentage": 99.8000030517578, + "price_per_hour": 2.0, + "quantity_available": 23, + "resource_provider_email": "user1@example.com", + "storage_gb": 400 + }, + { + "base_slices_required": 3, + "cpu_cores": 3, + "id": "15x3", + "memory_gb": 12, + "multiplier": 3, + "node_bandwidth_mbps": 1000, + "node_certification_type": "Diy", + "node_id": "grid_node_1", + "node_location": "Belgium", + "node_uptime_percentage": 99.8000030517578, + "price_per_hour": 3.0, + "quantity_available": 15, + "resource_provider_email": "user1@example.com", + "storage_gb": 600 + }, + { + "base_slices_required": 4, + "cpu_cores": 4, + "id": "11x4", + "memory_gb": 16, + "multiplier": 4, + "node_bandwidth_mbps": 1000, + "node_certification_type": "Diy", + "node_id": "grid_node_1", + "node_location": "Belgium", + "node_uptime_percentage": 99.8000030517578, + "price_per_hour": 4.0, + "quantity_available": 11, + "resource_provider_email": "user1@example.com", + "storage_gb": 800 + }, + { + "base_slices_required": 5, + "cpu_cores": 5, + "id": "9x5", + "memory_gb": 20, + "multiplier": 5, + "node_bandwidth_mbps": 1000, + "node_certification_type": "Diy", + "node_id": "grid_node_1", + "node_location": "Belgium", + "node_uptime_percentage": 99.8000030517578, + "price_per_hour": 5.0, + "quantity_available": 9, + "resource_provider_email": "user1@example.com", + "storage_gb": 1000 + }, + { + "base_slices_required": 6, + "cpu_cores": 6, + "id": "7x6", + "memory_gb": 24, + "multiplier": 6, + "node_bandwidth_mbps": 1000, + "node_certification_type": "Diy", + "node_id": "grid_node_1", + "node_location": "Belgium", + "node_uptime_percentage": 99.8000030517578, + "price_per_hour": 6.0, + "quantity_available": 7, + "resource_provider_email": "user1@example.com", + "storage_gb": 1200 + }, + { + "base_slices_required": 8, + "cpu_cores": 8, + "id": "5x8", + "memory_gb": 32, + "multiplier": 8, + "node_bandwidth_mbps": 1000, + "node_certification_type": "Diy", + "node_id": "grid_node_1", + "node_location": "Belgium", + "node_uptime_percentage": 99.8000030517578, + "price_per_hour": 8.0, + "quantity_available": 5, + "resource_provider_email": "user1@example.com", + "storage_gb": 1600 + }, + { + "base_slices_required": 10, + "cpu_cores": 10, + "id": "4x10", + "memory_gb": 40, + "multiplier": 10, + "node_bandwidth_mbps": 1000, + "node_certification_type": "Diy", + "node_id": "grid_node_1", + "node_location": "Belgium", + "node_uptime_percentage": 99.8000030517578, + "price_per_hour": 10.0, + "quantity_available": 4, + "resource_provider_email": "user1@example.com", + "storage_gb": 2000 + }, + { + "base_slices_required": 12, + "cpu_cores": 12, + "id": "3x12", + "memory_gb": 48, + "multiplier": 12, + "node_bandwidth_mbps": 1000, + "node_certification_type": "Diy", + "node_id": "grid_node_1", + "node_location": "Belgium", + "node_uptime_percentage": 99.8000030517578, + "price_per_hour": 12.0, + "quantity_available": 3, + "resource_provider_email": "user1@example.com", + "storage_gb": 2400 + }, + { + "base_slices_required": 16, + "cpu_cores": 16, + "id": "2x16", + "memory_gb": 64, + "multiplier": 16, + "node_bandwidth_mbps": 1000, + "node_certification_type": "Diy", + "node_id": "grid_node_1", + "node_location": "Belgium", + "node_uptime_percentage": 99.8000030517578, + "price_per_hour": 16.0, + "quantity_available": 2, + "resource_provider_email": "user1@example.com", + "storage_gb": 3200 + }, + { + "base_slices_required": 20, + "cpu_cores": 20, + "id": "2x20", + "memory_gb": 80, + "multiplier": 20, + "node_bandwidth_mbps": 1000, + "node_certification_type": "Diy", + "node_id": "grid_node_1", + "node_location": "Belgium", + "node_uptime_percentage": 99.8000030517578, + "price_per_hour": 20.0, + "quantity_available": 2, + "resource_provider_email": "user1@example.com", + "storage_gb": 4000 + }, + { + "base_slices_required": 24, + "cpu_cores": 24, + "id": "1x24", + "memory_gb": 96, + "multiplier": 24, + "node_bandwidth_mbps": 1000, + "node_certification_type": "Diy", + "node_id": "grid_node_1", + "node_location": "Belgium", + "node_uptime_percentage": 99.8000030517578, + "price_per_hour": 24.0, + "quantity_available": 1, + "resource_provider_email": "user1@example.com", + "storage_gb": 4800 + }, + { + "base_slices_required": 32, + "cpu_cores": 32, + "id": "1x32", + "memory_gb": 128, + "multiplier": 32, + "node_bandwidth_mbps": 1000, + "node_certification_type": "Diy", + "node_id": "grid_node_1", + "node_location": "Belgium", + "node_uptime_percentage": 99.8000030517578, + "price_per_hour": 32.0, + "quantity_available": 1, + "resource_provider_email": "user1@example.com", + "storage_gb": 6400 + } + ], + "slice_allocations": [], + "slice_last_calculated": "2025-09-09T04:18:52.960426072Z", + "marketplace_sla": { + "id": "sla-grid_node_1", + "name": "Standard Marketplace SLA", + "uptime_guarantee": 99.8, + "response_time_hours": 24, + "resolution_time_hours": 48, + "penalty_rate": 0.01, + "uptime_guarantee_percentage": 99.8, + "base_slice_price": 1.0, + "bandwidth_guarantee_mbps": 1000.0, + "last_updated": "2025-09-09T04:18:52.960416544Z" + }, + "slice_pricing": { + "base_price_per_hour": 1.0, + "currency": "USD", + "pricing_multiplier": 1.0 + }, + "grid_data": { + "capacity": { + "bandwidth_mbps": 1000, + "cpu_cores": 56, + "hdd_storage_gb": 134112, + "memory_gb": 188, + "ram_gb": 188, + "ssd_storage_gb": 1863, + "storage_gb": 135975 + }, + "certification_type": "Diy", + "city": "Unknown", + "country": "Belgium", + "farm_id": 1, + "farm_name": "Freefarm", + "farming_policy_id": 1, + "grid_node_id": 1, + "last_updated": "2025-09-09T04:18:52.959873683Z", + "location": "Unknown, Belgium", + "node_id": 1, + "public_ips": [ + "192.168.1.100" + ], + "status": "Online", + "total_resources": { + "bandwidth_mbps": 1000, + "cpu_cores": 56, + "hdd_storage_gb": 134112, + "memory_gb": 188, + "ram_gb": 188, + "ssd_storage_gb": 1863, + "storage_gb": 135975 + }, + "uptime": 99.5, + "used_resources": { + "bandwidth_mbps": 0, + "cpu_cores": 25, + "hdd_storage_gb": 0, + "memory_gb": 92, + "ram_gb": 92, + "ssd_storage_gb": 1021, + "storage_gb": 1021 + } + }, + "slice_formats": null, + "name": "Freefarm", + "region": "Belgium", + "node_type": "MyceliumNode", + "staking_options": null, + "availability_status": "Available", + "node_group_id": null, + "group_assignment_date": null, + "group_slice_format": null, + "group_slice_price": null, + "last_seen": "2025-09-09T04:18:52.960236901Z", + "health_score": 98.5 + } + ], + "resource_provider_earnings": [], + "resource_provider_settings": null, "slice_products": [], - "user_activities": [ - { - "id": "42ab1613-5a96-4d9a-999a-6c51b143a846", - "user_email": "user1@example.com", - "activity_type": "WalletTransaction", - "description": "Transferred $1 credits to user0@example.com", - "metadata": null, - "timestamp": "2025-08-28T03:08:00.072150232Z", - "ip_address": null, - "user_agent": null, - "session_id": null, - "importance": "Medium", - "category": "Wallet" - }, - { - "id": "6dd17fef-cae4-4ebd-b52b-f16c73948311", - "user_email": "user1@example.com", - "activity_type": "WalletTransaction", - "description": "Purchased $111 credits via credit_card", - "metadata": null, - "timestamp": "2025-08-28T03:07:49.959810132Z", - "ip_address": null, - "user_agent": null, - "session_id": null, - "importance": "Medium", - "category": "Wallet" - } - ], - "user_preferences": { - "theme": "light", - "language": "en", - "currency_display": "symbol", - "email_notifications": true, - "push_notifications": true, - "marketing_emails": false, - "data_sharing": false, - "preferred_currency": "USD", - "preferred_language": "en", - "timezone": "UTC", - "notification_settings": { - "email_enabled": true, - "push_enabled": true, - "sms_enabled": false, - "slack_webhook": null, - "discord_webhook": null, - "enabled": true, - "push": true, - "node_offline_alerts": true, - "maintenance_reminders": true, - "earnings_reports": true - }, - "privacy_settings": { - "profile_public": false, - "email_public": false, - "activity_public": false, - "stats_public": false, - "profile_visibility": "private", - "marketing_emails": false, - "data_sharing": false, - "activity_tracking": true - }, - "dashboard_layout": "default", - "last_payment_method": "credit_card" - }, + "user_activities": [], + "user_preferences": null, "usage_statistics": null, - "orders": [ - { - "id": "b87cc710-8dda-4c99-8a82-c4b275fc1f01", - "user_id": "user1@example.com", - "items": [ - { - "product_id": "user_user0_example_com_fa373486", - "product_name": "Service A", - "product_category": "general", - "quantity": 1, - "unit_price_base": 12.0, - "total_price_base": 12.0, - "specifications": {}, - "provider_id": "marketplace", - "provider_name": "Project Mycelium" - } - ], - "subtotal_base": 12.0, - "total_base": 12.0, - "base_currency": "USD", - "currency_used": "USD", - "currency_total": 12.0, - "conversion_rate": 1.0, - "status": "Completed", - "payment_method": "", - "payment_details": { - "payment_id": "a547ade0-d4c3-4e39-b061-cf2c211b38df", - "payment_method": { - "Token": { - "token_type": "USD", - "wallet_address": "internal_wallet" - } - }, - "transaction_id": null, - "payment_status": "Pending", - "payment_timestamp": null, - "failure_reason": null - }, - "billing_address": null, - "shipping_address": null, - "notes": null, - "purchase_type": "Instant", - "created_at": "2025-08-28T03:08:04.974052158Z", - "updated_at": "2025-08-28T03:08:04.974061865Z" - }, - { - "id": "b31f28bf-a3b2-4baf-b1d7-0b1c1161474a", - "user_id": "user1@example.com", - "items": [ - { - "product_id": "user_user0_example_com_fa373486", - "product_name": "Service A", - "product_category": "service", - "quantity": 1, - "unit_price_base": 12.0, - "total_price_base": 12.0, - "specifications": {}, - "provider_id": "user0@example.com", - "provider_name": "user09" - } - ], - "subtotal_base": 12.0, - "total_base": 12.0, - "base_currency": "USD", - "currency_used": "USD", - "currency_total": 12.0, - "conversion_rate": 1.0, - "status": "Completed", - "payment_method": "", - "payment_details": { - "payment_id": "0e9648b9-066b-43fc-8c26-d9ce9a9ab61f", - "payment_method": { - "Token": { - "token_type": "USD", - "wallet_address": "internal_wallet" - } - }, - "transaction_id": "0e9648b9-066b-43fc-8c26-d9ce9a9ab61f", - "payment_status": "Completed", - "payment_timestamp": "2025-08-28T03:10:53.043169316Z", - "failure_reason": null - }, - "billing_address": null, - "shipping_address": null, - "notes": null, - "purchase_type": "Cart", - "created_at": "2025-08-28T03:10:53.041589952Z", - "updated_at": "2025-08-28T03:10:53.043178151Z" - }, - { - "id": "adf8d9d7-e29d-4eca-9ff3-4e3d2a2ec073", - "user_id": "user1@example.com", - "items": [ - { - "product_id": "user_user0_example_com_fa373486", - "product_name": "Service A", - "product_category": "service", - "quantity": 1, - "unit_price_base": 12.0, - "total_price_base": 12.0, - "specifications": {}, - "provider_id": "user0@example.com", - "provider_name": "user09" - } - ], - "subtotal_base": 12.0, - "total_base": 12.0, - "base_currency": "USD", - "currency_used": "USD", - "currency_total": 12.0, - "conversion_rate": 1.0, - "status": "Completed", - "payment_method": "", - "payment_details": { - "payment_id": "70c77b6e-576f-4150-94b5-621aa619dc0f", - "payment_method": { - "Token": { - "token_type": "USD", - "wallet_address": "internal_wallet" - } - }, - "transaction_id": "70c77b6e-576f-4150-94b5-621aa619dc0f", - "payment_status": "Completed", - "payment_timestamp": "2025-08-28T03:24:08.620594501Z", - "failure_reason": null - }, - "billing_address": null, - "shipping_address": null, - "notes": null, - "purchase_type": "Cart", - "created_at": "2025-08-28T03:24:08.616628185Z", - "updated_at": "2025-08-28T03:24:08.620615128Z" - }, - { - "id": "84ab03eb-1b63-4c4d-a32f-ccaa406e72a4", - "user_id": "user1@example.com", - "items": [ - { - "product_id": "user_user0_example_com_fa373486", - "product_name": "Service A", - "product_category": "general", - "quantity": 1, - "unit_price_base": 12.0, - "total_price_base": 12.0, - "specifications": {}, - "provider_id": "marketplace", - "provider_name": "Project Mycelium" - } - ], - "subtotal_base": 12.0, - "total_base": 12.0, - "base_currency": "USD", - "currency_used": "USD", - "currency_total": 12.0, - "conversion_rate": 1.0, - "status": "Completed", - "payment_method": "", - "payment_details": { - "payment_id": "04182eaf-14b2-4da6-ba6d-0232176f7a3c", - "payment_method": { - "Token": { - "token_type": "USD", - "wallet_address": "internal_wallet" - } - }, - "transaction_id": null, - "payment_status": "Pending", - "payment_timestamp": null, - "failure_reason": null - }, - "billing_address": null, - "shipping_address": null, - "notes": null, - "purchase_type": "Instant", - "created_at": "2025-08-28T03:24:52.228152921Z", - "updated_at": "2025-08-28T03:24:52.228161439Z" - }, - { - "id": "720ef602-c040-4287-abb3-d912d2dd197a", - "user_id": "user1@example.com", - "items": [ - { - "product_id": "user_user0_example_com_8232cf32", - "product_name": "Service 0", - "product_category": "service", - "quantity": 1, - "unit_price_base": 12.0, - "total_price_base": 12.0, - "specifications": {}, - "provider_id": "user0@example.com", - "provider_name": "user09" - } - ], - "subtotal_base": 12.0, - "total_base": 12.0, - "base_currency": "USD", - "currency_used": "USD", - "currency_total": 12.0, - "conversion_rate": 1.0, - "status": "Completed", - "payment_method": "", - "payment_details": { - "payment_id": "350c2cb4-914c-4b0e-8f69-1b49a014f98d", - "payment_method": { - "Token": { - "token_type": "USD", - "wallet_address": "internal_wallet" - } - }, - "transaction_id": "350c2cb4-914c-4b0e-8f69-1b49a014f98d", - "payment_status": "Completed", - "payment_timestamp": "2025-08-28T03:37:36.981308837Z", - "failure_reason": null - }, - "billing_address": null, - "shipping_address": null, - "notes": null, - "purchase_type": "Cart", - "created_at": "2025-08-28T03:37:36.979751492Z", - "updated_at": "2025-08-28T03:37:36.981314345Z" - }, - { - "id": "a6761a9e-dd7a-46b6-8bf0-5f23c93b3cf6", - "user_id": "user1@example.com", - "items": [ - { - "product_id": "user_user0_example_com_0137df0f", - "product_name": "Service 00", - "product_category": "service", - "quantity": 1, - "unit_price_base": 12.0, - "total_price_base": 12.0, - "specifications": {}, - "provider_id": "user0@example.com", - "provider_name": "user09" - } - ], - "subtotal_base": 12.0, - "total_base": 12.0, - "base_currency": "USD", - "currency_used": "USD", - "currency_total": 12.0, - "conversion_rate": 1.0, - "status": "Completed", - "payment_method": "", - "payment_details": { - "payment_id": "d1316306-f0f2-44b2-9a27-8de789653c06", - "payment_method": { - "Token": { - "token_type": "USD", - "wallet_address": "internal_wallet" - } - }, - "transaction_id": "d1316306-f0f2-44b2-9a27-8de789653c06", - "payment_status": "Completed", - "payment_timestamp": "2025-08-28T03:54:03.247877666Z", - "failure_reason": null - }, - "billing_address": null, - "shipping_address": null, - "notes": null, - "purchase_type": "Cart", - "created_at": "2025-08-28T03:54:03.244207760Z", - "updated_at": "2025-08-28T03:54:03.247891853Z" - }, - { - "id": "104ecd70-a33f-4ef3-80c5-97b6151a082e", - "user_id": "user1@example.com", - "items": [ - { - "product_id": "user_user0_example_com_8232cf32", - "product_name": "Service 0", - "product_category": "service", - "quantity": 1, - "unit_price_base": 12.0, - "total_price_base": 12.0, - "specifications": {}, - "provider_id": "user0@example.com", - "provider_name": "user09" - } - ], - "subtotal_base": 12.0, - "total_base": 12.0, - "base_currency": "USD", - "currency_used": "USD", - "currency_total": 12.0, - "conversion_rate": 1.0, - "status": "Completed", - "payment_method": "", - "payment_details": { - "payment_id": "d222f9d0-3dcb-40b0-bdea-70fe2da706a6", - "payment_method": { - "Token": { - "token_type": "USD", - "wallet_address": "internal_wallet" - } - }, - "transaction_id": "d222f9d0-3dcb-40b0-bdea-70fe2da706a6", - "payment_status": "Completed", - "payment_timestamp": "2025-08-29T04:46:03.403430920Z", - "failure_reason": null - }, - "billing_address": null, - "shipping_address": null, - "notes": null, - "purchase_type": "Cart", - "created_at": "2025-08-29T04:46:03.400397349Z", - "updated_at": "2025-08-29T04:46:03.403437484Z" - }, - { - "id": "dd7e5ebd-b70b-41a6-b46b-bc57c51794a1", - "user_id": "user1@example.com", - "items": [ - { - "product_id": "user_user0_example_com_0137df0f", - "product_name": "Service 00", - "product_category": "general", - "quantity": 1, - "unit_price_base": 12.0, - "total_price_base": 12.0, - "specifications": {}, - "provider_id": "marketplace", - "provider_name": "Project Mycelium" - } - ], - "subtotal_base": 12.0, - "total_base": 12.0, - "base_currency": "USD", - "currency_used": "USD", - "currency_total": 12.0, - "conversion_rate": 1.0, - "status": "Completed", - "payment_method": "", - "payment_details": { - "payment_id": "e3d778f7-482b-43d8-9eb6-a59a0ae76cf9", - "payment_method": { - "Token": { - "token_type": "USD", - "wallet_address": "internal_wallet" - } - }, - "transaction_id": null, - "payment_status": "Pending", - "payment_timestamp": null, - "failure_reason": null - }, - "billing_address": null, - "shipping_address": null, - "notes": null, - "purchase_type": "Instant", - "created_at": "2025-08-29T17:28:40.878779175Z", - "updated_at": "2025-08-29T17:28:40.878793006Z" - } - ], + "orders": [], "active_product_rentals": [], - "farmer_rental_earnings": [], + "resource_provider_rental_earnings": [], "node_rentals": [], "node_groups": [ { @@ -744,8 +361,8 @@ "group_type": { "Default": "compute" }, - "updated_at": "2025-08-28T03:23:43.820530436Z", - "created_at": "2025-08-28T03:23:43.820527741Z", + "updated_at": "2025-09-09T04:18:42.851794149Z", + "created_at": "2025-09-09T04:18:42.851790194Z", "group_config": { "group_name": "Compute Nodes", "max_nodes": 100, @@ -772,8 +389,8 @@ "group_type": { "Default": "storage" }, - "updated_at": "2025-08-28T03:23:43.820538620Z", - "created_at": "2025-08-28T03:23:43.820538172Z", + "updated_at": "2025-09-09T04:18:42.851803098Z", + "created_at": "2025-09-09T04:18:42.851802768Z", "group_config": { "group_name": "Storage Nodes", "max_nodes": 50, @@ -799,8 +416,8 @@ "group_type": { "Default": "ai-gpu" }, - "updated_at": "2025-08-28T03:23:43.820547178Z", - "created_at": "2025-08-28T03:23:43.820546892Z", + "updated_at": "2025-09-09T04:18:42.851808068Z", + "created_at": "2025-09-09T04:18:42.851807755Z", "group_config": { "group_name": "AI/GPU Nodes", "max_nodes": 20, @@ -822,7 +439,7 @@ ], "slice_rentals": [], "slice_assignments": [], - "display_currency": "USD", + "display_currency": "MC", "quick_topup_amounts": [ 10.0, 25.0, @@ -834,693 +451,6 @@ "owned_products": [], "owned_product_ids": [], "ssh_keys": [], - "message_threads": [ - { - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "user_a_email": "user1@example.com", - "user_b_email": "user0@example.com", - "context_type": "service_booking", - "context_id": "req-a6761a9e-1db8a97c", - "subject": "Service Booking #req-a6761a9e-1db8a97c", - "created_at": "2025-08-28T04:55:41.747608734Z", - "updated_at": "2025-08-29T06:39:25.605344324Z", - "last_message_at": "2025-08-29T06:39:25.605342371Z", - "user_a_unread_count": 0, - "user_b_unread_count": 0 - }, - { - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "user_a_email": "user1@example.com", - "user_b_email": "user0@example.com", - "context_type": "service_booking", - "context_id": "req-b31f28bf-1b012ba2", - "subject": "Service Booking #req-b31f28bf-1b012ba2", - "created_at": "2025-08-28T13:57:44.966825957Z", - "updated_at": "2025-08-29T05:01:07.839623316Z", - "last_message_at": "2025-08-29T05:01:07.839621434Z", - "user_a_unread_count": 0, - "user_b_unread_count": 0 - }, - { - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "user_a_email": "user1@example.com", - "user_b_email": "user0@example.com", - "context_type": "service_booking", - "context_id": "req-adf8d9d7-cca7fea4", - "subject": "Service Booking #req-adf8d9d7-cca7fea4", - "created_at": "2025-08-28T14:05:04.325533402Z", - "updated_at": "2025-08-29T17:08:27.454640313Z", - "last_message_at": "2025-08-29T17:08:27.454636352Z", - "user_a_unread_count": 0, - "user_b_unread_count": 0 - }, - { - "thread_id": "12e1971d-8c98-4c38-8bd9-d235575952a6", - "user_a_email": "user1@example.com", - "user_b_email": "user0@example.com", - "context_type": "service_booking", - "context_id": "req-720ef602-e4f4f304", - "subject": "Service Booking #req-720ef602-e4f4f304", - "created_at": "2025-08-29T05:27:06.739756827Z", - "updated_at": "2025-08-29T05:27:06.739756827Z", - "last_message_at": null, - "user_a_unread_count": 0, - "user_b_unread_count": 0 - }, - { - "thread_id": "a1da1188-183d-4de2-b74e-12dab70ef27c", - "user_a_email": "user1@example.com", - "user_b_email": "user0@example.com", - "context_type": "service_booking", - "context_id": "req-104ecd70-1699cf5a", - "subject": "Service Booking #req-104ecd70-1699cf5a", - "created_at": "2025-08-29T18:07:57.619394054Z", - "updated_at": "2025-08-29T18:07:57.619394054Z", - "last_message_at": null, - "user_a_unread_count": 0, - "user_b_unread_count": 0 - } - ], - "messages": [ - { - "message_id": "f206552a-5a1c-427b-a69f-85d4aba66cf0", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "Hi!", - "message_type": "text", - "timestamp": "2025-08-28T13:50:16.958377689Z", - "read_at": null - }, - { - "message_id": "1a7ff5f9-77c2-47ae-aa64-993151422647", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "hi there is an issue", - "message_type": "text", - "timestamp": "2025-08-28T13:57:48.724637712Z", - "read_at": null - }, - { - "message_id": "cb5f6082-cd6f-4e76-a6ab-f58e93426967", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "can you help", - "message_type": "text", - "timestamp": "2025-08-28T13:57:51.624551399Z", - "read_at": null - }, - { - "message_id": "77d097a1-78cc-498c-b868-e96d6faf2480", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "thank you", - "message_type": "text", - "timestamp": "2025-08-28T13:57:52.976961902Z", - "read_at": null - }, - { - "message_id": "3ebcb701-4a75-4cb4-85db-6bf7aeb02699", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "oh I see let me have a look", - "message_type": "text", - "timestamp": "2025-08-28T14:04:13.306623365Z", - "read_at": null - }, - { - "message_id": "5b296663-e8ee-49dd-bd2a-ac1600f81285", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-28T14:04:21.999930132Z", - "read_at": null - }, - { - "message_id": "1484fe6e-8fea-4df1-83c8-80e249a2651c", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-29T04:38:53.028223499Z", - "read_at": null - }, - { - "message_id": "0cdb0a6a-6832-4161-8546-32cab86ccd22", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "hi", - "message_type": "text", - "timestamp": "2025-08-29T04:52:11.129663681Z", - "read_at": null - }, - { - "message_id": "7e415a97-1592-4357-b66d-74c0a5bfec47", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "allo", - "message_type": "text", - "timestamp": "2025-08-29T04:54:20.434939954Z", - "read_at": null - }, - { - "message_id": "afac82b6-7dab-4197-9eae-78e9ffaf8b34", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "allo", - "message_type": "text", - "timestamp": "2025-08-29T04:54:33.022227049Z", - "read_at": null - }, - { - "message_id": "a489e84f-7891-4dc9-bfba-031957d33be2", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "allo", - "message_type": "text", - "timestamp": "2025-08-29T04:54:35.039607100Z", - "read_at": null - }, - { - "message_id": "cfe717d3-f809-4089-b56d-5f305d6947b7", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "salut", - "message_type": "text", - "timestamp": "2025-08-29T04:56:46.628354893Z", - "read_at": null - }, - { - "message_id": "40ac0bc9-c801-49fe-98c8-38ea58cc158d", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "ppppppppp", - "message_type": "text", - "timestamp": "2025-08-29T05:00:21.265091688Z", - "read_at": null - }, - { - "message_id": "dcf01f67-7ab6-4345-9831-720de3a512ec", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "ok", - "message_type": "text", - "timestamp": "2025-08-29T05:00:40.536842187Z", - "read_at": null - }, - { - "message_id": "1f63b331-88e4-423c-b82d-0d138b79b707", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-29T05:00:45.265747266Z", - "read_at": null - }, - { - "message_id": "08bd763b-d1ef-45a4-9296-3c5670518ea0", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "helo", - "message_type": "text", - "timestamp": "2025-08-29T05:00:48.362369878Z", - "read_at": null - }, - { - "message_id": "980288ac-ae86-4105-9cc3-451482d41b48", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "fgsda", - "message_type": "text", - "timestamp": "2025-08-29T05:01:04.187258342Z", - "read_at": null - }, - { - "message_id": "6da3f476-c516-4a01-837e-ed469f805354", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "fdsafas", - "message_type": "text", - "timestamp": "2025-08-29T05:01:06.311267610Z", - "read_at": null - }, - { - "message_id": "73ffaa87-40f2-452a-a238-281ae614b2cf", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "fdsafsa", - "message_type": "text", - "timestamp": "2025-08-29T05:01:07.806135678Z", - "read_at": null - }, - { - "message_id": "482a30ad-0f2c-40f7-bfc2-5edfc09ee13a", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "fdsasfsa", - "message_type": "text", - "timestamp": "2025-08-29T05:06:08.233635046Z", - "read_at": null - }, - { - "message_id": "d29d5cc7-182b-405e-8582-f1c4a2eae8b2", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "gsadga", - "message_type": "text", - "timestamp": "2025-08-29T05:07:25.514161344Z", - "read_at": null - }, - { - "message_id": "848e1ce9-669e-4eeb-90c2-5416a7fea934", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "fdsaf", - "message_type": "text", - "timestamp": "2025-08-29T05:09:29.252120Z", - "read_at": null - }, - { - "message_id": "9bd09a24-ec14-4957-83c6-2ec6255a888f", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "fsdafas", - "message_type": "text", - "timestamp": "2025-08-29T05:09:30.036429892Z", - "read_at": null - }, - { - "message_id": "d2ea89c6-98a9-45fd-bfea-c4b003a3d7cc", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "fdsaf", - "message_type": "text", - "timestamp": "2025-08-29T05:12:30.772793945Z", - "read_at": null - }, - { - "message_id": "8a2230e9-9e17-4927-b9b6-07d0205dae03", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "test", - "message_type": "text", - "timestamp": "2025-08-29T05:29:27.656334651Z", - "read_at": null - }, - { - "message_id": "8f3f9dd0-3197-4ed5-bb1d-039b6ba0aab5", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "hi", - "message_type": "text", - "timestamp": "2025-08-29T05:29:47.161792171Z", - "read_at": null - }, - { - "message_id": "081b148a-a01b-43fd-83db-cfe9deb83c21", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-29T05:30:09.863451177Z", - "read_at": null - }, - { - "message_id": "a1ed9558-05d7-4c76-9e90-ce0411ce4de1", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "hi", - "message_type": "text", - "timestamp": "2025-08-29T05:30:28.721571109Z", - "read_at": null - }, - { - "message_id": "3270fb1b-17ec-4ccf-af13-9959195a1d94", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-29T05:37:45.771146864Z", - "read_at": null - }, - { - "message_id": "95242583-52d7-4c8f-b3f5-2e70c7ecd75b", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-29T05:38:01.271887984Z", - "read_at": null - }, - { - "message_id": "e55bd2e4-d585-4643-af6f-cf264494f782", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "hi", - "message_type": "text", - "timestamp": "2025-08-29T05:46:53.415516762Z", - "read_at": null - }, - { - "message_id": "7d651db4-1813-4955-b2da-46de882a6bb2", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "hey", - "message_type": "text", - "timestamp": "2025-08-29T05:47:18.178384804Z", - "read_at": null - }, - { - "message_id": "86a65e45-1e81-4ca7-8433-1c425f12376d", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "jkl", - "message_type": "text", - "timestamp": "2025-08-29T05:47:37.310011508Z", - "read_at": null - }, - { - "message_id": "7f791ed6-9a7d-4dbf-9b54-6af5ae219876", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-29T05:58:53.067774162Z", - "read_at": null - }, - { - "message_id": "4c5b5624-4fae-4995-a4e0-385042bee486", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-29T05:58:57.848136343Z", - "read_at": null - }, - { - "message_id": "5108a5b0-d7ac-4bd1-b2e9-7940d8071268", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "jello", - "message_type": "text", - "timestamp": "2025-08-29T05:59:40.292048246Z", - "read_at": null - }, - { - "message_id": "ce0d7cb7-878b-4829-b083-fea7c1b76723", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "fdsafs", - "message_type": "text", - "timestamp": "2025-08-29T06:03:02.628138445Z", - "read_at": null - }, - { - "message_id": "ad149ca5-50da-4ef2-895b-ac9265ab14d5", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "this is new", - "message_type": "text", - "timestamp": "2025-08-29T06:04:24.723399533Z", - "read_at": null - }, - { - "message_id": "a9e1db7c-2f75-4c00-a58f-4474dbe57af7", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "this this this", - "message_type": "text", - "timestamp": "2025-08-29T06:08:13.073396835Z", - "read_at": null - }, - { - "message_id": "41be0e65-a9ae-4eee-83c6-23d3b2980a1b", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "fdsa", - "message_type": "text", - "timestamp": "2025-08-29T06:16:57.800754241Z", - "read_at": null - }, - { - "message_id": "bc1990ac-14a5-4a48-af96-3025f0870cda", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "fdsafasfdsa", - "message_type": "text", - "timestamp": "2025-08-29T06:20:45.359247064Z", - "read_at": null - }, - { - "message_id": "b584031b-e9f1-4b3f-a12c-0f2da1ff2660", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "jkjkh", - "message_type": "text", - "timestamp": "2025-08-29T06:23:53.789931419Z", - "read_at": null - }, - { - "message_id": "b54699b4-0d9d-4697-89a3-bcc772a6140e", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-29T06:27:35.991234338Z", - "read_at": null - }, - { - "message_id": "54cb76bb-4657-43aa-9acb-124b5bc74dfe", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "thanks", - "message_type": "text", - "timestamp": "2025-08-29T06:27:58.216565074Z", - "read_at": null - }, - { - "message_id": "010b99dc-5d16-4579-8e0f-3e9da8e939ff", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "fgsda", - "message_type": "text", - "timestamp": "2025-08-29T06:28:23.449404101Z", - "read_at": null - }, - { - "message_id": "af528903-f81e-460a-89e8-a03e4ffe30ce", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "jkh", - "message_type": "text", - "timestamp": "2025-08-29T06:31:26.207907295Z", - "read_at": null - }, - { - "message_id": "0137b7f3-4cd4-4945-9032-626d528d6e26", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "kh", - "message_type": "text", - "timestamp": "2025-08-29T06:31:47.041200559Z", - "read_at": null - }, - { - "message_id": "8c99cefe-48f4-496b-ac06-96d8ca385924", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "jkhk", - "message_type": "text", - "timestamp": "2025-08-29T06:32:57.008314776Z", - "read_at": null - }, - { - "message_id": "dd716cf8-de7c-4bcf-a5d8-fbe947d9768c", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "kljl", - "message_type": "text", - "timestamp": "2025-08-29T06:33:14.908000174Z", - "read_at": null - }, - { - "message_id": "17149abc-576e-4d47-8a86-d214c8a1e39a", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "fdsafsad", - "message_type": "text", - "timestamp": "2025-08-29T06:35:48.472929345Z", - "read_at": null - }, - { - "message_id": "8eff5230-6904-4ad2-b889-13490f633a4b", - "thread_id": "12e1971d-8c98-4c38-8bd9-d235575952a6", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "fdsafasdfas", - "message_type": "text", - "timestamp": "2025-08-29T06:36:21.015083156Z", - "read_at": null - }, - { - "message_id": "65ed47a6-d012-4b5c-9586-dfef22de8251", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "88888888", - "message_type": "text", - "timestamp": "2025-08-29T06:39:25.576788681Z", - "read_at": null - }, - { - "message_id": "eb3b9e22-417e-4203-9894-c06aedc73a3d", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "jhj", - "message_type": "text", - "timestamp": "2025-08-29T06:41:38.577915281Z", - "read_at": null - }, - { - "message_id": "e36d4feb-7906-4117-9738-ce5ec4800ab2", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "n", - "message_type": "text", - "timestamp": "2025-08-29T06:41:43.622965819Z", - "read_at": null - }, - { - "message_id": "bc16c9a4-0da5-4f58-b0f1-4f6f4fd7bf4f", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "hello", - "message_type": "text", - "timestamp": "2025-08-29T17:04:51.908146255Z", - "read_at": null - }, - { - "message_id": "91df6be0-8953-4a92-8e4a-840786865b64", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "hi how are you?", - "message_type": "text", - "timestamp": "2025-08-29T17:04:57.817946421Z", - "read_at": null - }, - { - "message_id": "cbbc128d-58a9-4ce5-b515-867a35d0ab4d", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "good and you", - "message_type": "text", - "timestamp": "2025-08-29T17:05:13.656733278Z", - "read_at": null - }, - { - "message_id": "140f5ee1-d165-42b5-8100-4f17a60ecb07", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "great", - "message_type": "text", - "timestamp": "2025-08-29T17:06:37.722499934Z", - "read_at": null - }, - { - "message_id": "2d595235-4e60-4ee1-b9eb-6e63e8f4b866", - "thread_id": "bffed30e-6b09-4b04-97ab-81faf60cbef1", - "sender_email": "user0@example.com", - "recipient_email": "user1@example.com", - "content": "ok thanks", - "message_type": "text", - "timestamp": "2025-08-29T17:08:27.424658637Z", - "read_at": null - }, - { - "message_id": "6f4df378-cee7-4879-8fc7-2e3c7ddcfe08", - "thread_id": "fe20a2ad-f5df-4d05-b92f-e1153efa9535", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "ok", - "message_type": "text", - "timestamp": "2025-08-29T17:20:36.512198989Z", - "read_at": null - }, - { - "message_id": "f993768c-a291-4d8c-8fd2-3bb8f68419fc", - "thread_id": "9e760a9e-ddec-4233-924a-1e1d910281c2", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "okok", - "message_type": "text", - "timestamp": "2025-08-29T17:24:10.754416878Z", - "read_at": null - }, - { - "message_id": "a82929af-eab7-4957-a07f-90dd439d424e", - "thread_id": "a1da1188-183d-4de2-b74e-12dab70ef27c", - "sender_email": "user1@example.com", - "recipient_email": "user0@example.com", - "content": "hi", - "message_type": "text", - "timestamp": "2025-08-29T18:10:23.527706770Z", - "read_at": null - } - ] + "message_threads": null, + "messages": null } \ No newline at end of file diff --git a/user_data/user1_at_example_com_cart.json b/user_data/user1_at_example_com_cart.json deleted file mode 100644 index 26c08a2..0000000 --- a/user_data/user1_at_example_com_cart.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "user_id": "user1@example.com", - "items": [], - "session_id": null, - "created_at": "2025-08-28T03:10:49.436820705Z", - "updated_at": "2025-08-29T04:46:03.458815283Z" -} \ No newline at end of file diff --git a/user_data/user321_at_example_com.json b/user_data/user321_at_example_com.json deleted file mode 100644 index 947b0b2..0000000 --- a/user_data/user321_at_example_com.json +++ /dev/null @@ -1,247 +0,0 @@ -{ - "user_email": "user321@example.com", - "wallet_balance_usd": 0.0, - "transactions": [], - "staked_amount_usd": 0.0, - "pool_positions": {}, - "name": "user321", - "country": null, - "timezone": null, - "password_hash": "$2b$12$3I5q1NB/ukv2isB6p5RN1ecn6Wkb92gmD2O5gzQ8YF3veOLUa1JXu", - "services": [], - "service_requests": [], - "service_bookings": [], - "availability": null, - "slas": [], - "apps": [], - "application_deployments": [], - "deleted": null, - "deleted_at": null, - "deletion_reason": null, - "nodes": [ - { - "id": "grid_node_2007", - "location": "Unknown, Belgium", - "status": "Online", - "capacity": { - "cpu_cores": 24, - "memory_gb": 188, - "storage_gb": 8859, - "bandwidth_mbps": 1000, - "ssd_storage_gb": 476, - "hdd_storage_gb": 8383, - "ram_gb": 188 - }, - "used_capacity": { - "cpu_cores": 9, - "memory_gb": 55, - "storage_gb": 343, - "bandwidth_mbps": 0, - "ssd_storage_gb": 343, - "hdd_storage_gb": 0, - "ram_gb": 55 - }, - "uptime_percentage": 99.0, - "farming_start_date": "2025-08-10T03:27:08.942256607Z", - "last_updated": "2025-09-09T03:27:08.942268123Z", - "utilization_7_day_avg": 65.0, - "slice_formats_supported": [ - "1x1", - "2x2", - "4x4" - ], - "rental_options": null, - "total_base_slices": 0, - "allocated_base_slices": 0, - "earnings_today_usd": 0.0, - "grid_node_id": "2007", - "available_combinations": [], - "slice_allocations": [], - "slice_last_calculated": null, - "marketplace_sla": { - "id": "sla-repair-8fa25e61-493a-46cc-b942-ce8cef923ae6", - "name": "Repaired Node SLA", - "uptime_guarantee": 99.8, - "response_time_hours": 24, - "resolution_time_hours": 48, - "penalty_rate": 0.01, - "uptime_guarantee_percentage": 99.8, - "base_slice_price": 0.5, - "bandwidth_guarantee_mbps": 100.0, - "last_updated": "2025-09-09T03:27:12.489433171Z" - }, - "slice_pricing": { - "base_price_per_hour": 1.0, - "currency": "USD", - "pricing_multiplier": 1.0 - }, - "grid_data": { - "capacity": { - "bandwidth_mbps": 1000, - "cpu_cores": 24, - "hdd_storage_gb": 8383, - "memory_gb": 188, - "ram_gb": 188, - "ssd_storage_gb": 476, - "storage_gb": 8859 - }, - "certification_type": "Diy", - "city": "Unknown", - "country": "Belgium", - "farm_id": 1, - "farm_name": "Freefarm", - "farming_policy_id": 1, - "grid_node_id": 2007, - "last_updated": "2025-09-09T03:27:08.942100965Z", - "location": "Unknown, Belgium", - "node_id": 2007, - "public_ips": [ - "192.168.1.100" - ], - "status": "Online", - "total_resources": { - "bandwidth_mbps": 1000, - "cpu_cores": 24, - "hdd_storage_gb": 8383, - "memory_gb": 188, - "ram_gb": 188, - "ssd_storage_gb": 476, - "storage_gb": 8859 - }, - "uptime": 99.5, - "used_resources": { - "bandwidth_mbps": 0, - "cpu_cores": 9, - "hdd_storage_gb": 0, - "memory_gb": 55, - "ram_gb": 55, - "ssd_storage_gb": 343, - "storage_gb": 343 - } - }, - "slice_formats": null, - "name": "Grid Node 2007", - "region": "Belgium", - "node_type": "MyceliumNode", - "staking_options": null, - "availability_status": "Available", - "node_group_id": null, - "group_assignment_date": null, - "group_slice_format": null, - "group_slice_price": null, - "last_seen": "2025-09-09T03:27:08.942273898Z", - "health_score": 100.0 - } - ], - "resource_provider_earnings": [], - "resource_provider_settings": null, - "slice_products": [], - "user_activities": [], - "user_preferences": null, - "usage_statistics": null, - "orders": [], - "active_product_rentals": [], - "resource_provider_rental_earnings": [], - "node_rentals": [], - "node_groups": [ - { - "id": "compute", - "name": "Compute", - "description": "General compute workloads", - "node_ids": [], - "group_type": { - "Default": "compute" - }, - "updated_at": "2025-09-09T03:26:57.639840151Z", - "created_at": "2025-09-09T03:26:57.639836172Z", - "group_config": { - "group_name": "Compute Nodes", - "max_nodes": 100, - "allocation_strategy": "balanced", - "auto_scaling": true, - "preferred_slice_formats": [ - "1x1", - "2x2" - ], - "default_pricing": 50.0, - "resource_optimization": { - "cpu_optimization": 0.5, - "memory_optimization": 0.5, - "storage_optimization": 0.5, - "network_optimization": 0.5 - } - } - }, - { - "id": "storage", - "name": "Storage", - "description": "Storage and data workloads", - "node_ids": [], - "group_type": { - "Default": "storage" - }, - "updated_at": "2025-09-09T03:26:57.639846621Z", - "created_at": "2025-09-09T03:26:57.639846284Z", - "group_config": { - "group_name": "Storage Nodes", - "max_nodes": 50, - "allocation_strategy": "storage_optimized", - "auto_scaling": false, - "preferred_slice_formats": [ - "1x1" - ], - "default_pricing": 30.0, - "resource_optimization": { - "cpu_optimization": 0.3, - "memory_optimization": 0.3, - "storage_optimization": 0.8, - "network_optimization": 0.6 - } - } - }, - { - "id": "ai-gpu", - "name": "AI/GPU", - "description": "AI and GPU-intensive workloads", - "node_ids": [], - "group_type": { - "Default": "ai-gpu" - }, - "updated_at": "2025-09-09T03:26:57.639850994Z", - "created_at": "2025-09-09T03:26:57.639850646Z", - "group_config": { - "group_name": "AI/GPU Nodes", - "max_nodes": 20, - "allocation_strategy": "gpu_optimized", - "auto_scaling": true, - "preferred_slice_formats": [ - "4x4", - "8x8" - ], - "default_pricing": 200.0, - "resource_optimization": { - "cpu_optimization": 0.8, - "memory_optimization": 0.7, - "storage_optimization": 0.4, - "network_optimization": 0.5 - } - } - } - ], - "slice_rentals": [], - "slice_assignments": [], - "display_currency": "MC", - "quick_topup_amounts": [ - 10.0, - 25.0, - 50.0, - 100.0 - ], - "auto_topup_settings": null, - "products": [], - "owned_products": [], - "owned_product_ids": [], - "ssh_keys": [], - "message_threads": null, - "messages": null -} \ No newline at end of file diff --git a/user_data/version.json b/user_data/version.json deleted file mode 100644 index 65b3b6d..0000000 --- a/user_data/version.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "2025-08-09", - "schema": 1, - "notes": "Initial fixture scaffold with demo users user1..user10" -}