# llms-api.txt # Vyoma SaaS License Manager API # Version: 1.0 # Product: Vyoma SaaS License Management (SLM) ================================================================== OVERVIEW ================================================================== The Vyoma SaaS License Manager API enables software applications to validate and enforce software licenses. Supported licensing models: - Named User Licensing - Concurrent (Floating) Licensing The API is stateless and communicates using JSON over HTTPS. ================================================================== BASE URL ================================================================== Development https://localhost:5002/api/LicenseValidation Production Replace localhost with your deployed License Validation API endpoint. ================================================================== AUTHENTICATION FLOW ================================================================== Every client application must first obtain authorization codes. STEP 1 GET /getcodes Returns - ClientId - C2VCode These values must be stored and supplied with every subsequent API call. ================================================================== ENDPOINT SUMMARY ================================================================== GET /getcodes Returns bootstrap authorization codes. POST /validate-named Validates a Named User license. POST /validate-concurrent Validates a Concurrent/Floating license. POST /logout-named Ends a Named User session. POST /logout-concurrent Releases a Concurrent license seat. ================================================================== BOOTSTRAP ================================================================== GET /getcodes Response { "clientId": "CLIENT-ABC", "c2vCode": "ENCRYPTED-C2V-CODE" } ================================================================== VALIDATE NAMED LICENSE ================================================================== POST /validate-named Required JSON { "clientId": "", "c2vCode": "", "productName": "", "sessionId": "", "userId": 0, "userEmail": "", "domainName": "" } Required Fields clientId c2vCode productName sessionId userId userEmail Optional domainName Success HTTP 200 { "status":200, "message":"Access granted." } Possible Errors 400 Invalid license 401 License expired 401 User not assigned 401 Seat limit exceeded 403 System time validation failed ================================================================== VALIDATE CONCURRENT LICENSE ================================================================== POST /validate-concurrent Required JSON { "clientId": "", "c2vCode": "", "productName": "", "sessionId": "", "userId": 0, "domainName": "" } Required Fields clientId c2vCode productName sessionId userId Optional domainName Success HTTP 200 { "status":200, "message":"Access granted." } Possible Errors 400 Invalid license 401 Concurrent seat limit reached 401 License expired 403 System time validation failed ================================================================== LOGOUT NAMED SESSION ================================================================== POST /logout-named Request { "clientId":"", "c2vCode":"", "sessionId":"" } Response { "message":"Session released." } ================================================================== LOGOUT CONCURRENT SESSION ================================================================== POST /logout-concurrent Request { "clientId":"", "c2vCode":"", "sessionId":"" } Response { "message":"Session released." } ================================================================== INTEGRATION WORKFLOW ================================================================== Application Install ↓ GET /getcodes ↓ Store ClientId ↓ Store C2VCode ↓ Application Starts ↓ Generate unique SessionId ↓ POST /validate-named OR POST /validate-concurrent ↓ HTTP 200 ↓ Allow Application Access ↓ Application Exit ↓ POST /logout-named OR POST /logout-concurrent ================================================================== HTTP STATUS CODES ================================================================== 200 Access granted 400 Invalid license 401 License expired 401 User not assigned 401 Seat limit exceeded 401 Concurrent seat unavailable 403 System time validation failed ================================================================== BEST PRACTICES ================================================================== - Call GET /getcodes only once during bootstrap. - Cache ClientId and C2VCode securely. - Generate a unique SessionId for every application session. - Always call the appropriate logout endpoint when the application exits. - Handle all non-200 responses gracefully. - Synchronize client system time to avoid validation failures. - Use HTTPS for all production deployments. ================================================================== SUPPORTED LICENSING ================================================================== ✓ Named User Licensing ✓ Concurrent Licensing ✓ Seat Enforcement ✓ Domain Restriction ✓ License Expiration ✓ System Time Validation ================================================================== END OF DOCUMENT ==================================================================