# User Stories & API Endpoints ## Overview This document outlines user stories for the Field Service Management Platform, organized by user role. Each story includes acceptance criteria and required FastAPI backend endpoints. **Architecture:** FastAPI backend handles all database interactions. Frontend queries the backend via REST API. **User Roles:** - Platform Admin - Client Admin (Telecom Operator) - Contractor Admin - Project Manager - Dispatcher - Field Agent - Sales Agent - Sales Manager --- ## 1. PLATFORM ADMIN ### 1.1 Organization Management **US-PA-001: Create Client Organization** - **As a** Platform Admin - **I want to** create new client organizations (telecom operators) - **So that** they can use the platform for their field operations **Acceptance Criteria:** - Can create client with name, industry, contact details - System validates unique client name and email - Client is created with default SLA settings - Client admin user is automatically invited **API Endpoints:** ``` POST /api/v1/clients GET /api/v1/clients GET /api/v1/clients/{client_id} PUT /api/v1/clients/{client_id} DELETE /api/v1/clients/{client_id} ``` **US-PA-002: Create Contractor Organization** - **As a** Platform Admin - **I want to** create contractor organizations - **So that** they can be assigned to client projects **Acceptance Criteria:** - Can create contractor with name, competencies, contact details - System validates unique contractor name - Contractor admin user is automatically invited - Can specify contractor specializations (FTTH, Fixed Wireless, etc.) **API Endpoints:** ``` POST /api/v1/contractors GET /api/v1/contractors GET /api/v1/contractors/{contractor_id} PUT /api/v1/contractors/{contractor_id} DELETE /api/v1/contractors/{contractor_id} ``` ### 1.2 Platform Billing Management **US-PA-003: Manage Billing Plans** - **As a** Platform Admin - **I want to** create and manage billing plans - **So that** organizations can subscribe to different service tiers **Acceptance Criteria:** - Can create plans with pricing, features, and limits - Can set user limits, project limits, and storage quotas - Can mark plans as public or private - Can activate/deactivate plans **API Endpoints:** ``` POST /api/v1/billing/plans GET /api/v1/billing/plans GET /api/v1/billing/plans/{plan_id} PUT /api/v1/billing/plans/{plan_id} DELETE /api/v1/billing/plans/{plan_id} ``` **US-PA-004: Monitor Platform Usage** - **As a** Platform Admin - **I want to** view usage metrics across all organizations - **So that** I can monitor platform health and billing **Acceptance Criteria:** - Can view active users, projects, tickets per organization - Can see storage usage and API call counts - Can filter by date range and organization type - Can export usage reports **API Endpoints:** ``` GET /api/v1/usage-metrics GET /api/v1/usage-metrics/summary GET /api/v1/usage-metrics/by-organization POST /api/v1/usage-metrics/export ``` --- ## 2. CLIENT ADMIN (Telecom Operator) ### 2.1 Project Setup **US-CA-001: Initiate Project Creation** - **As a** Client Admin - **I want to** initiate a project and invite a contractor - **So that** we can collaborate on field work **Acceptance Criteria:** - Can create project with title, description, service type - Can invite contractor from available contractors - Contractor receives invitation to join project - Project is created in 'pending' state until contractor accepts - Can set project dates and budget - Can define activation requirements (ONT serial, MAC address, etc.) - Can specify photo requirements for installations **API Endpoints:** ``` POST /api/v1/projects/initiate # Client initiates POST /api/v1/projects/invitations # Send contractor invitation GET /api/v1/projects GET /api/v1/projects/{project_id} PUT /api/v1/projects/{project_id} DELETE /api/v1/projects/{project_id} POST /api/v1/projects/{project_id}/close ``` **US-CA-002: Define Project Regions** - **As a** Client Admin - **I want to** create regional hubs within a project - **So that** inventory and teams can be organized geographically **Acceptance Criteria:** - Can create regions with name, location, and manager - Can assign regional manager from project team - Regions are used for inventory distribution - Can view all regions on a map **API Endpoints:** ``` POST /api/v1/projects/{project_id}/regions GET /api/v1/projects/{project_id}/regions GET /api/v1/regions/{region_id} PUT /api/v1/regions/{region_id} DELETE /api/v1/regions/{region_id} ``` ### 2.2 User Management **US-CA-003: Invite Users** - **As a** Client Admin - **I want to** invite users to my organization - **So that** they can access the platform **Acceptance Criteria:** - Can invite users with email and role - System sends invitation email - Can set user role (sales_manager, project_manager, dispatcher, sales_agent) - User receives onboarding instructions **API Endpoints:** ``` POST /api/v1/users/invite GET /api/v1/users GET /api/v1/users/{user_id} PUT /api/v1/users/{user_id} DELETE /api/v1/users/{user_id} POST /api/v1/users/{user_id}/suspend POST /api/v1/users/{user_id}/activate ``` --- ## 3. CONTRACTOR ADMIN ### 3.1 Project Collaboration **US-CO-001: Accept or Initiate Project** - **As a** Contractor Admin - **I want to** accept project invitations from clients or initiate projects - **So that** I can collaborate with clients on field work **Acceptance Criteria:** - Can view pending project invitations from clients - Can accept or decline project invitations - Can also initiate projects and invite clients - Project becomes 'active' when both parties agree - Can negotiate project terms before acceptance **API Endpoints:** ``` GET /api/v1/projects/invitations/pending POST /api/v1/projects/invitations/{invitation_id}/accept POST /api/v1/projects/invitations/{invitation_id}/decline POST /api/v1/projects/initiate # Contractor initiates POST /api/v1/projects/invitations # Invite client ``` ### 3.2 Team Management **US-CO-002: Manage Field Agents** - **As a** Contractor Admin - **I want to** add and manage field agents - **So that** they can be assigned to projects **Acceptance Criteria:** - Can add field agents with contact details - Can record health & safety information - Can record PPE sizes for equipment allocation - Can assign financial accounts for payouts - Can track agent location in real-time **API Endpoints:** ``` POST /api/v1/field-agents GET /api/v1/field-agents GET /api/v1/field-agents/{agent_id} PUT /api/v1/field-agents/{agent_id} GET /api/v1/field-agents/{agent_id}/location POST /api/v1/field-agents/{agent_id}/financial-accounts ``` **US-CO-003: Invite Team Members to Project** - **As a** Contractor Admin - **I want to** invite my team members to join a project - **So that** they can be assigned work **Acceptance Criteria:** - Can invite field agents to specific projects - Can set project role and compensation structure - Can assign agents to specific regions - Team members receive invitation notification - Can track agent availability across projects **API Endpoints:** ``` POST /api/v1/projects/{project_id}/team/invite GET /api/v1/projects/{project_id}/team/invitations POST /api/v1/projects/{project_id}/team/invitations/{id}/resend DELETE /api/v1/projects/{project_id}/team/invitations/{id}/cancel GET /api/v1/projects/{project_id}/team DELETE /api/v1/projects/{project_id}/team/{member_id} GET /api/v1/field-agents/{agent_id}/projects ``` --- ## 4. PROJECT MANAGER ### 4.1 Sales Order Management **US-PM-001: Create Sales Order (Single)** - **As a** Project Manager - **I want to** create individual sales orders - **So that** I can add orders one at a time **Acceptance Criteria:** - Can enter customer details (name, phone, address) - System deduplicates customers by phone number - Can specify package, price, and installation details - Can set preferred installation date/time - Can add installation address with GPS coordinates - Order is created with 'pending' status **API Endpoints:** ``` POST /api/v1/sales-orders GET /api/v1/sales-orders GET /api/v1/sales-orders/{order_id} PUT /api/v1/sales-orders/{order_id} DELETE /api/v1/sales-orders/{order_id} POST /api/v1/customers/check-duplicate ``` **US-PM-002: Upload Sales Orders (CSV Bulk Import)** - **As a** Project Manager - **I want to** upload sales orders via CSV - **So that** installation tickets can be generated in bulk **Acceptance Criteria:** - Can upload CSV with customer details and installation addresses - System validates and deduplicates customers by phone - System creates SalesOrder records in batch - Can preview orders before confirming - Can see validation errors for invalid rows - Can download error report for failed rows - Successfully imported orders are marked as 'pending' **API Endpoints:** ``` POST /api/v1/sales-orders/upload-csv POST /api/v1/sales-orders/validate-csv POST /api/v1/sales-orders/confirm-csv-import GET /api/v1/sales-orders/import-history GET /api/v1/sales-orders/import/{import_id}/errors ``` **US-PM-002: Generate Tickets from Sales Orders** - **As a** Project Manager - **I want to** convert unprocessed sales orders into tickets - **So that** field agents can execute installations **Acceptance Criteria:** - Can select multiple sales orders to process - System creates installation tickets with cached location data - Tickets are created with 'open' status - Sales orders are marked as 'processed' - Can bulk generate tickets **API Endpoints:** ``` POST /api/v1/sales-orders/{order_id}/create-ticket POST /api/v1/sales-orders/bulk-create-tickets GET /api/v1/sales-orders/unprocessed ``` ### 4.2 Inventory Management **US-PM-003: Receive Inventory from Client** - **As a** Project Manager - **I want to** record inventory received from the client - **So that** equipment can be tracked and distributed **Acceptance Criteria:** - Can record equipment type, quantity, and serial numbers - Can specify if items are tools (returnable) or equipment (installable) - Can record delivery note reference - Can track inventory value **API Endpoints:** ``` POST /api/v1/projects/{project_id}/inventory GET /api/v1/projects/{project_id}/inventory GET /api/v1/inventory/{inventory_id} PUT /api/v1/inventory/{inventory_id} GET /api/v1/inventory/{inventory_id}/serial-numbers ``` **US-PM-004: Distribute Inventory to Regional Hubs** - **As a** Project Manager - **I want to** distribute inventory from main office to regional hubs - **So that** field agents can collect equipment locally **Acceptance Criteria:** - Can allocate quantities to specific regions - Can track serial numbers per region - System updates available quantities - Can view inventory levels per region **API Endpoints:** ``` POST /api/v1/inventory/{inventory_id}/distribute GET /api/v1/regions/{region_id}/inventory GET /api/v1/inventory-distribution/{distribution_id} PUT /api/v1/inventory-distribution/{distribution_id} ``` ### 4.3 Task Management (Infrastructure Projects) **US-PM-005: Create Infrastructure Tasks** - **As a** Project Manager - **I want to** create tasks for infrastructure rollout - **So that** contractors can execute infrastructure work **Acceptance Criteria:** - Can create tasks with title, description, location - Can set task type (installation, maintenance, survey, testing) - Can assign priority and schedule date - Can generate tickets from tasks **API Endpoints:** ``` POST /api/v1/projects/{project_id}/tasks GET /api/v1/projects/{project_id}/tasks GET /api/v1/tasks/{task_id} PUT /api/v1/tasks/{task_id} DELETE /api/v1/tasks/{task_id} POST /api/v1/tasks/{task_id}/create-ticket ``` ### 4.4 Financial Management **US-PM-006: Track Project Finances** - **As a** Project Manager - **I want to** record project income and expenses - **So that** I can monitor project cash flow **Acceptance Criteria:** - Can record inflows (funding from finance department) - Can record outflows (payroll, equipment, transport) - Can link transactions to specific entities (tickets, payroll, invoices) - Can view financial summary and balance **API Endpoints:** ``` POST /api/v1/projects/{project_id}/finance GET /api/v1/projects/{project_id}/finance GET /api/v1/projects/{project_id}/finance/summary GET /api/v1/finance/{transaction_id} PUT /api/v1/finance/{transaction_id} POST /api/v1/finance/{transaction_id}/approve POST /api/v1/finance/{transaction_id}/reject ``` **US-PM-007: Generate Contractor Invoices** - **As a** Project Manager - **I want to** generate invoices for contractor work - **So that** contractors can be paid for completed tickets **Acceptance Criteria:** - Can select completed tickets for invoicing - System calculates total based on compensation structure - Can add line items and adjustments - Can mark invoice as paid **API Endpoints:** ``` POST /api/v1/projects/{project_id}/invoices GET /api/v1/projects/{project_id}/invoices GET /api/v1/invoices/{invoice_id} PUT /api/v1/invoices/{invoice_id} POST /api/v1/invoices/{invoice_id}/mark-paid GET /api/v1/invoices/{invoice_id}/tickets ``` --- ## 5. DISPATCHER ### 5.1 Ticket Assignment **US-DI-001: View Available Tickets** - **As a** Dispatcher - **I want to** view all open tickets - **So that** I can assign them to field agents **Acceptance Criteria:** - Can view tickets filtered by status, priority, region - Can see ticket details including location and requirements - Can view tickets on a map - Can see agent availability and current workload **API Endpoints:** ``` GET /api/v1/tickets GET /api/v1/tickets/open GET /api/v1/tickets/by-region/{region_id} GET /api/v1/tickets/map-view GET /api/v1/field-agents/availability ``` **US-DI-002: Assign Tickets to Field Agents** - **As a** Dispatcher - **I want to** assign tickets to field agents - **So that** work can be executed **Acceptance Criteria:** - Can assign single or multiple tickets to an agent - Can set scheduled date and time slot - System creates ticket assignment record - Agent receives notification - Ticket status changes to 'assigned' **API Endpoints:** ``` POST /api/v1/tickets/{ticket_id}/assign POST /api/v1/tickets/bulk-assign GET /api/v1/tickets/{ticket_id}/assignments POST /api/v1/tickets/{ticket_id}/reassign POST /api/v1/tickets/{ticket_id}/unassign ``` ### 5.2 Inventory Issuance **US-DI-003: Issue Equipment to Field Agents** - **As a** Dispatcher - **I want to** issue equipment to field agents from regional hub - **So that** they have materials for installations **Acceptance Criteria:** - Can scan or enter serial numbers/box numbers - Can issue multiple items at once - System tracks who issued and who received - Can link equipment to specific tickets - System updates inventory quantities **API Endpoints:** ``` POST /api/v1/regions/{region_id}/issue-equipment GET /api/v1/field-agents/{agent_id}/equipment GET /api/v1/equipment-assignments POST /api/v1/equipment-assignments/{assignment_id}/return GET /api/v1/equipment-assignments/unreturned ``` ### 5.3 Expense Approval **US-DI-004: Review and Approve Expenses** - **As a** Dispatcher - **I want to** review expense claims from field agents - **So that** valid expenses can be reimbursed **Acceptance Criteria:** - Can view pending expense claims - Can see expense details, receipts, and location verification - Can approve or reject with reason - Can filter by agent, date, or ticket - System validates location before approval **API Endpoints:** ``` GET /api/v1/expenses/pending GET /api/v1/expenses/{expense_id} POST /api/v1/expenses/{expense_id}/approve POST /api/v1/expenses/{expense_id}/reject GET /api/v1/tickets/{ticket_id}/expenses GET /api/v1/field-agents/{agent_id}/expenses ``` --- ## 6. FIELD AGENT ### 6.1 Ticket Management **US-FA-001: View My Assigned Tickets** - **As a** Field Agent - **I want to** view tickets assigned to me - **So that** I know what work I need to do **Acceptance Criteria:** - Can view assigned tickets in list or map view - Can see ticket details, customer info, and location - Can filter by status and priority - Can see route to customer location - Can set execution order for my tickets **API Endpoints:** ``` GET /api/v1/field-agents/me/tickets GET /api/v1/field-agents/me/tickets/today GET /api/v1/tickets/{ticket_id} PUT /api/v1/tickets/{ticket_id}/execution-order GET /api/v1/tickets/{ticket_id}/route ``` **US-FA-002: Accept or Reject Ticket Assignment** - **As a** Field Agent - **I want to** accept or reject assigned tickets - **So that** I can manage my workload **Acceptance Criteria:** - Can accept ticket (status changes to 'in_progress') - Can reject ticket with reason - Can request reassignment - System records response timestamp - Dispatcher is notified of rejection **API Endpoints:** ``` POST /api/v1/tickets/{ticket_id}/accept POST /api/v1/tickets/{ticket_id}/reject POST /api/v1/tickets/{ticket_id}/request-reassignment ``` **US-FA-003: Start Journey to Customer Site** - **As a** Field Agent - **I want to** start journey tracking when I leave for a ticket - **So that** my travel can be monitored **Acceptance Criteria:** - Can start journey with one tap - System records journey start location and time - GPS tracking begins (breadcrumb trail) - Can see estimated arrival time - Can pause/resume journey **API Endpoints:** ``` POST /api/v1/tickets/{ticket_id}/start-journey POST /api/v1/tickets/{ticket_id}/pause-journey POST /api/v1/tickets/{ticket_id}/resume-journey POST /api/v1/tickets/{ticket_id}/location-update GET /api/v1/tickets/{ticket_id}/journey-status ``` **US-FA-004: Mark Arrival at Customer Site** - **As a** Field Agent - **I want to** mark when I arrive at customer location - **So that** my arrival time is recorded **Acceptance Criteria:** - Can mark arrival with GPS verification - System validates location matches customer address - Journey tracking stops - Arrival time is recorded - Can proceed to work execution **API Endpoints:** ``` POST /api/v1/tickets/{ticket_id}/mark-arrival GET /api/v1/tickets/{ticket_id}/verify-location ``` ### 6.2 Customer Communication **US-FA-005: Contact Customer** - **As a** Field Agent - **I want to** record customer communication attempts - **So that** contact history is tracked **Acceptance Criteria:** - Can record call, SMS, WhatsApp, or in-person contact - Can record outcome (successful, no answer, busy, etc.) - Can schedule follow-up - Can see previous communication history - Can initiate call from app **API Endpoints:** ``` POST /api/v1/tickets/{ticket_id}/communications GET /api/v1/tickets/{ticket_id}/communications GET /api/v1/customers/{customer_id}/communications POST /api/v1/communications/{comm_id}/follow-up ``` ### 6.3 Work Execution **US-FA-006: Complete Installation** - **As a** Field Agent - **I want to** record installation details and activate service - **So that** customer can start using the service **Acceptance Criteria:** - Can enter equipment details (ONT serial, MAC address, etc.) - Can capture before/after photos - Can record activation details - Can create subscription record - Ticket status changes to 'completed' - System validates all required fields **API Endpoints:** ``` POST /api/v1/tickets/{ticket_id}/complete POST /api/v1/tickets/{ticket_id}/photos POST /api/v1/tickets/{ticket_id}/equipment-details POST /api/v1/subscriptions GET /api/v1/projects/{project_id}/activation-requirements ``` **US-FA-007: Log Expenses** - **As a** Field Agent - **I want to** record expenses incurred during ticket execution - **So that** I can be reimbursed **Acceptance Criteria:** - Can log transport, materials, meals, etc. - Can attach receipt photos - Can specify quantity and unit cost - System validates location (must be at customer site) - Can see expense approval status **API Endpoints:** ``` POST /api/v1/tickets/{ticket_id}/expenses GET /api/v1/field-agents/me/expenses GET /api/v1/expenses/{expense_id} PUT /api/v1/expenses/{expense_id} DELETE /api/v1/expenses/{expense_id} ``` ### 6.4 Inventory Management **US-FA-008: View My Equipment** - **As a** Field Agent - **I want to** view equipment issued to me - **So that** I know what I have and what needs to be returned **Acceptance Criteria:** - Can see all equipment currently in my possession - Can see tools that need to be returned - Can see equipment installed at customer sites - Can scan equipment for quick lookup **API Endpoints:** ``` GET /api/v1/field-agents/me/equipment GET /api/v1/field-agents/me/equipment/unreturned GET /api/v1/equipment/{serial_number} ``` **US-FA-009: Return Equipment** - **As a** Field Agent - **I want to** return tools to the regional hub - **So that** they can be reissued to other agents **Acceptance Criteria:** - Can scan equipment to return - Can specify condition (good, damaged, worn) - Can add return notes - System updates inventory quantities - Dispatcher confirms receipt **API Endpoints:** ``` POST /api/v1/equipment-assignments/{assignment_id}/return POST /api/v1/equipment-assignments/bulk-return ``` ### 6.5 Attendance & Timesheets **US-FA-010: Clock In/Out** - **As a** Field Agent - **I want to** record my daily attendance - **So that** my work hours are tracked **Acceptance Criteria:** - Can clock in at start of day - Can clock out at end of day - System records timestamps and location - Can view my timesheet history - Can request leave **API Endpoints:** ``` POST /api/v1/field-agents/me/clock-in POST /api/v1/field-agents/me/clock-out GET /api/v1/field-agents/me/timesheets POST /api/v1/field-agents/me/request-leave ``` --- ## 7. SALES AGENT ### 7.1 Sales Order Management **US-SA-001: Create Sales Order** - **As a** Sales Agent - **I want to** create sales orders for new customers - **So that** installations can be scheduled **Acceptance Criteria:** - Can enter customer details (name, phone, address) - System deduplicates customers by phone number - Can specify package and price - Can set preferred installation date/time - Can add installation address with GPS coordinates **API Endpoints:** ``` POST /api/v1/sales-orders GET /api/v1/sales-agents/me/orders GET /api/v1/sales-orders/{order_id} PUT /api/v1/sales-orders/{order_id} POST /api/v1/customers/check-duplicate ``` **US-SA-002: Track My Sales** - **As a** Sales Agent - **I want to** view my sales performance - **So that** I can track my commissions **Acceptance Criteria:** - Can view total orders, completed installations, pending - Can see commission earned and pending - Can filter by date range - Can see conversion funnel (orders → tickets → installations) **API Endpoints:** ``` GET /api/v1/sales-agents/me/stats GET /api/v1/sales-agents/me/commissions GET /api/v1/sales-agents/me/conversion-funnel ``` --- ## 8. SALES MANAGER ### 8.1 Team Performance **US-SM-001: View Team Sales Performance** - **As a** Sales Manager - **I want to** view sales performance across my team - **So that** I can identify top performers and areas for improvement **Acceptance Criteria:** - Can view sales by agent, region, package type - Can see conversion rates and average deal size - Can filter by date range - Can export reports **API Endpoints:** ``` GET /api/v1/sales/team-performance GET /api/v1/sales/by-agent GET /api/v1/sales/by-region GET /api/v1/sales/by-package POST /api/v1/sales/export-report ``` --- ## 9. SUPPORT TICKETS (All Roles) ### 9.1 Incident Management **US-SUP-001: Create Support Incident** - **As a** Support Staff - **I want to** create incidents for customer complaints - **So that** support tickets can be generated **Acceptance Criteria:** - Can search for customer by phone or subscription - Can record incident type and description - Can set priority - System creates support ticket automatically - Customer is notified **API Endpoints:** ``` POST /api/v1/incidents GET /api/v1/incidents GET /api/v1/incidents/{incident_id} PUT /api/v1/incidents/{incident_id} POST /api/v1/incidents/{incident_id}/create-ticket POST /api/v1/incidents/{incident_id}/resolve ``` --- ## 10. COMMON ENDPOINTS ### 10.1 Authentication & Authorization **API Endpoints:** ``` POST /api/v1/auth/login POST /api/v1/auth/logout POST /api/v1/auth/refresh-token GET /api/v1/auth/me PUT /api/v1/auth/me/profile POST /api/v1/auth/change-password POST /api/v1/auth/forgot-password POST /api/v1/auth/reset-password ``` ### 10.2 Dashboard & Analytics **API Endpoints:** ``` GET /api/v1/dashboard/overview GET /api/v1/dashboard/tickets-pipeline GET /api/v1/dashboard/sla-compliance GET /api/v1/dashboard/team-performance GET /api/v1/dashboard/financial-summary GET /api/v1/dashboard/inventory-status GET /api/v1/dashboard/map-view ``` ### 10.3 Notifications **API Endpoints:** ``` GET /api/v1/notifications GET /api/v1/notifications/unread POST /api/v1/notifications/{notification_id}/mark-read POST /api/v1/notifications/mark-all-read DELETE /api/v1/notifications/{notification_id} ``` ### 10.4 Documents & Files **API Endpoints:** ``` POST /api/v1/documents/upload GET /api/v1/documents/{document_id} GET /api/v1/documents/{document_id}/download DELETE /api/v1/documents/{document_id} GET /api/v1/tickets/{ticket_id}/documents GET /api/v1/users/{user_id}/documents ``` ### 10.5 Search & Filters **API Endpoints:** ``` GET /api/v1/search/customers GET /api/v1/search/tickets GET /api/v1/search/users GET /api/v1/search/global ``` --- ## 11. WORKFLOW ENDPOINTS ### 11.1 Sales Order → Installation Workflow **Complete Flow:** ``` 1. POST /api/v1/sales-orders # Create order 2. POST /api/v1/sales-orders/{id}/create-ticket # Generate ticket 3. POST /api/v1/tickets/{id}/assign # Assign to agent 4. POST /api/v1/tickets/{id}/accept # Agent accepts 5. POST /api/v1/tickets/{id}/start-journey # Start travel 6. POST /api/v1/tickets/{id}/mark-arrival # Arrive at site 7. POST /api/v1/tickets/{id}/complete # Complete work 8. POST /api/v1/subscriptions # Activate service ``` ### 11.2 Support Incident → Resolution Workflow **Complete Flow:** ``` 1. POST /api/v1/incidents # Create incident 2. POST /api/v1/incidents/{id}/create-ticket # Generate ticket 3. POST /api/v1/tickets/{id}/assign # Assign to agent 4. POST /api/v1/tickets/{id}/accept # Agent accepts 5. POST /api/v1/tickets/{id}/start-journey # Start travel 6. POST /api/v1/tickets/{id}/mark-arrival # Arrive at site 7. POST /api/v1/tickets/{id}/complete # Complete repair 8. POST /api/v1/incidents/{id}/resolve # Mark resolved ``` ### 11.3 Infrastructure Task → Completion Workflow **Complete Flow:** ``` 1. POST /api/v1/projects/{id}/tasks # Create task 2. POST /api/v1/tasks/{id}/create-ticket # Generate ticket 3. POST /api/v1/tickets/{id}/assign # Assign to contractor 4. POST /api/v1/tickets/{id}/accept # Contractor accepts 5. POST /api/v1/tickets/{id}/start-journey # Start travel 6. POST /api/v1/tickets/{id}/mark-arrival # Arrive at site 7. POST /api/v1/tickets/{id}/complete # Complete work ``` --- ## 12. API DESIGN PRINCIPLES ### 12.1 RESTful Conventions - **GET** - Retrieve resources - **POST** - Create new resources - **PUT** - Update entire resource - **PATCH** - Partial update - **DELETE** - Remove resource ### 12.2 Response Format **Success Response:** ```json { "success": true, "data": { ... }, "message": "Operation completed successfully", "timestamp": "2024-01-15T10:30:00Z" } ``` **Error Response:** ```json { "success": false, "error": { "code": "VALIDATION_ERROR", "message": "Invalid input data", "details": { ... } }, "timestamp": "2024-01-15T10:30:00Z" } ``` ### 12.3 Pagination **Query Parameters:** ``` ?page=1&limit=25&sort_by=created_at&sort_order=desc ``` **Response:** ```json { "success": true, "data": [...], "pagination": { "page": 1, "limit": 25, "total": 150, "total_pages": 6 } } ``` ### 12.4 Filtering & Search **Query Parameters:** ``` ?status=open&priority=high®ion_id=uuid&search=customer_name ``` ### 12.5 Authentication **Header:** ``` Authorization: Bearer ``` ### 12.6 Rate Limiting **Headers:** ``` X-RateLimit-Limit: 1000 X-RateLimit-Remaining: 999 X-RateLimit-Reset: 1640000000 ``` --- ## 13. PRIORITY IMPLEMENTATION ORDER ### Phase 1: Core Foundation (MVP) 1. Authentication & User Management 2. Organization Management (Clients, Contractors) 3. Project Setup 4. User Invitations ### Phase 2: Sales & Ticketing 1. Sales Order Management 2. Customer Management 3. Ticket Generation 4. Ticket Assignment ### Phase 3: Field Operations 1. Field Agent Ticket Management 2. Journey Tracking 3. Work Completion 4. Subscription Activation ### Phase 4: Inventory & Expenses 1. Inventory Management 2. Equipment Issuance 3. Expense Logging 4. Expense Approval ### Phase 5: Financial & Reporting 1. Project Finance Tracking 2. Contractor Invoicing 3. Payroll Management 4. Dashboard Analytics ### Phase 6: Advanced Features 1. Support Incidents 2. Infrastructure Tasks 3. Document Management 4. Advanced Analytics --- ## 14. TECHNICAL NOTES ### 14.1 Database Access - All database operations go through FastAPI backend - Frontend NEVER queries Supabase directly - Backend handles all business logic and validation ### 14.2 Real-time Updates - Use WebSockets for real-time location tracking - Use Server-Sent Events (SSE) for notifications - Polling for dashboard updates (every 30 seconds) ### 14.3 File Uploads - Images uploaded to Supabase Storage - Backend generates signed URLs - Maximum file size: 10MB per file - Supported formats: JPG, PNG, PDF ### 14.4 GPS & Location - Location accuracy threshold: 50 meters - Location updates every 30 seconds during journey - Offline support: Queue location updates, sync when online ### 14.5 Security - JWT tokens with 24-hour expiry - Refresh tokens with 30-day expiry - Role-based access control (RBAC) - Row-level security (RLS) in database - API rate limiting: 1000 requests/hour per user --- **Document Version:** 1.0 **Last Updated:** 2024-01-15 **Status:** Draft - Ready for Backend Implementation