{"openapi":"3.0.0","paths":{"/auth/login":{"post":{"description":"Accepts login credentials and redirects to the dashboard on success.","operationId":"AuthController_login","parameters":[],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/LoginDto"}},"application/json":{"schema":{"$ref":"#/components/schemas/LoginDto"}}}},"responses":{"200":{"description":"Redirect to dashboard after successful login."},"401":{"description":"Invalid credentials."},"429":{"description":"Too many login attempts."}},"summary":"Authenticate a developer account","tags":["Developer Auth"]}},"/auth/signup":{"post":{"description":"Registers a developer account and redirects to the dashboard on success.","operationId":"AuthController_signup","parameters":[],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/SignupDto"}},"application/json":{"schema":{"$ref":"#/components/schemas/SignupDto"}}}},"responses":{"201":{"description":"Redirect to dashboard after successful signup."},"400":{"description":"Validation failed or passwords do not match."},"429":{"description":"Too many signup attempts."}},"summary":"Create a developer account","tags":["Developer Auth"]}},"/auth/logout":{"post":{"operationId":"AuthController_logout","parameters":[],"responses":{"200":{"description":"Clears the session and redirects to the homepage."}},"summary":"Sign out of the developer dashboard","tags":["Developer Auth"]}},"/v1/security/sim-check":{"post":{"description":"Checks a subscriber phone number against mocked global telecom registry intelligence and returns whether recent SIM-swap activity is present. Carrier resolution uses national mobile prefixes worldwide (Nigeria MTN/Airtel/Glo/9mobile, Germany Telekom/Vodafone/O2, US AT&T/T-Mobile/Verizon, UK, India, UAE, and more). Mock rule: numbers ending in 9 report a swap within the last 2 hours.","operationId":"SimSwapController_checkSimSwap","parameters":[{"name":"X-API-Key","in":"header","description":"Developer API key. Alternative: Authorization: Bearer <KEY>.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckSimSwapDto"}}}},"responses":{"200":{"description":"SIM-swap intelligence response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimSwapResponseDto"}}}},"400":{"description":"Request body failed validation."},"401":{"description":"Missing, malformed, or unverified developer API key."}},"security":[{"Bearer":[]},{"X-API-Key":[]}],"summary":"Run a real-time SIM-swap risk check","tags":["SIM Swap Intelligence"]}}},"info":{"title":"Telvri Security API Gateway","description":"Developer-first Identity and Security Platform for real-time telco fraud mitigation, including SIM-swap intelligence for trusted application workflows.","version":"1.0","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"X-API-Key":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Developer live API key with the rt_live_ prefix."},"Bearer":{"scheme":"bearer","bearerFormat":"API Key","type":"http","description":"Alternative bearer credential using Authorization: Bearer <KEY>."}},"schemas":{"LoginDto":{"type":"object","properties":{"email":{"type":"string","description":"Developer account email address.","example":"dev@telvri.security"},"password":{"type":"string","description":"Account password.","example":"TelvriSecure123","minLength":8}},"required":["email","password"]},"SignupDto":{"type":"object","properties":{"fullName":{"type":"string","description":"Full name for the developer account.","example":"Ada Okonkwo"},"email":{"type":"string","description":"Work email used for dashboard access and API key delivery.","example":"ada@fintech.example"},"company":{"type":"string","description":"Company or team name.","example":"Northwind Fintech"},"password":{"type":"string","description":"Account password.","example":"TelvriSecure123","minLength":8},"confirmPassword":{"type":"string","description":"Password confirmation.","example":"TelvriSecure123","minLength":8}},"required":["fullName","email","password","confirmPassword"]},"CheckSimSwapDto":{"type":"object","properties":{"phoneNumber":{"type":"string","description":"Subscriber phone number in strict E.164 format. Supports global numbering plans (e.g. +1 US, +49 DE, +234 NG Airtel/MTN).","example":"+2348021234567","examples":["+2348021234567","+491701234567","+14155552671","+447700900123"],"pattern":"^\\+[1-9]\\d{1,14}$"},"maxAgeHours":{"type":"number","description":"Maximum acceptable age, in hours, for SIM-swap intelligence.","example":24,"default":24,"minimum":1,"maximum":168}},"required":["phoneNumber"]},"SimSwapResponseDto":{"type":"object","properties":{"phoneNumber":{"type":"string","description":"Subscriber phone number in E.164 format.","example":"+2348021234567"},"swapped":{"type":"boolean","description":"Whether the network registry indicates a recent SIM swap.","example":false},"lastSwappedAt":{"type":"string","description":"ISO-8601 timestamp of the most recent SIM-swap signal.","example":"2026-07-14T16:27:00.000Z","format":"date-time"},"provider":{"type":"string","description":"Resolved mobile network operator or telecom provider (global prefix catalog).","example":"Airtel Nigeria"},"operator":{"type":"string","description":"Resolved mobile network operator. Alias retained for telco domain consumers.","example":"Airtel Nigeria"}},"required":["phoneNumber","swapped","provider","operator"]}}}}