# API Endpoints for a secure Wire Transfer For this exercise, I am assuming: - The user already signed up with enrolled and validated factors for authentication - This API is based on RESTful principles - Responds with JSON messages - Provides search, pagination, sorting, and filtering ## API Endpoints ### Multi Factor Authentication :::info **Enroll authenticators** SMS or voice One-time password (OTP) Push Email Devices ::: #### List enrolled factors GET /api/users/:id/devices #### Verify a factor POST /api/users/:id/verifications/:verification_id> #### Delete a factor DELETE /api/users/:user_id/devices/:device_id #### Generate a MFA token *(for acount recovery purposes)* POST /api/users/:user_id/mfa_token ### Transfers POST /api/transfers GET /api/transfers/:transfer_id POST /api/transfers/:transfer_id GET /api/transfers #### Attributes id *(String)* amount *integer* (in cents) **REQUIRED** currency *currency* (ISO currency code) **REQUIRED** destination *(String)* **REQUIRED** description *(String)* optional metadata *hash* optional ### CREATE A TRANSFER POST /api/transfers ### LIST TRANSFERS GET /api/transfers/ ### GET A TRANSFER GET /api/transfers/:transfer_id ### UPDATE A TRANSFER *Only non-mandatory fields might be updated* PUT /api/transfers/:transfer_id