# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Mailosaur Devices API version: 1.0.0 extends: openapi/mailosaur-devices-api-openapi.yml actions: - target: $.info update: x-apievangelist-phrasing: method: generated generated: '2026-10-01' generator: build-phrasing.py label: Generated by API Evangelist operations: 5 - target: $.paths['/api/devices'].get update: x-apievangelist-phrasing: intent: List virtual security devices effect: read questions: - Which virtual MFA devices have I set up for testing? - Can I see all my saved virtual security devices? instructions: - text: List all my virtual security devices. - text: Show the virtual authenticator devices saved on my account. method: generated generated: '2026-10-01' - target: $.paths['/api/devices'].post update: x-apievangelist-phrasing: intent: Create a virtual security device effect: write questions: - How do I save a virtual authenticator device to test two-factor logins? - Can I register a device using an existing base32 shared secret? instructions: - text: Create a virtual security device named {name}. slots: name: requestBody.name - text: Save a new device called {name} using shared secret {sharedSecret}. slots: name: requestBody.name sharedSecret: requestBody.sharedSecret method: generated generated: '2026-10-01' - target: $.paths['/api/devices/{deviceId}'].delete update: x-apievangelist-phrasing: intent: Delete a virtual security device effect: destructive questions: - How do I remove a virtual security device I no longer need? - Is deleting a saved virtual MFA device permanent? instructions: - text: Delete virtual security device {deviceId}. slots: deviceId: path.deviceId - text: Permanently remove the saved authenticator device {deviceId}. slots: deviceId: path.deviceId method: generated generated: '2026-10-01' - target: $.paths['/api/devices/{deviceId}/otp'].get update: x-apievangelist-phrasing: intent: Get the current code from a saved device effect: read questions: - What is the current one-time password for my saved virtual device? - Can my automated test read the 2FA code from a device I already saved? instructions: - text: Get the current OTP for saved device {deviceId}. slots: deviceId: path.deviceId - text: Fetch the latest two-factor code from virtual device {deviceId}. slots: deviceId: path.deviceId method: generated generated: '2026-10-01' - target: $.paths['/api/devices/otp'].post update: x-apievangelist-phrasing: intent: Get a one-time password from a shared secret effect: read questions: - Can I generate a TOTP code from a base32 secret without saving a device? - How do I get a 2FA code straight from the shared secret shown during MFA setup? instructions: - text: Generate the current one-time password for shared secret {sharedSecret}. slots: sharedSecret: requestBody.sharedSecret - text: Give me the 2FA code for secret {sharedSecret} without creating a device. slots: sharedSecret: requestBody.sharedSecret method: generated generated: '2026-10-01'