<?php

namespace App\PackagesApi\Docs\v4;

class AuthApiDoc extends AbstractV4Doc
{

    public static function endPoints()
    {
    return [
            'title' => 'Auth',
            'endpoints' => [

                [
                    'title' => 'Send verification code via SMS to verify it in register/login reguest',
                    'desc' => 'Request to send verifications code to phone number',

                    'route' => route('auth.send-phone-code'),
                    'method' => 'POST',
                    'headers' => self::authHeaders(),
                    'body' => [
                        'phone_code' => "371",
                        'phone_number' => "22332233",
                    ],

                    'response' => [
                        200 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => true,
                                'exists' => true,
                                'has_nickname' => true,
                                'token' => "someverybigtokenhere"
                            ],
                        ],

                        422 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => false,
                                'message' => "Code is wrong"
                            ],
                        ],

                        401 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => false,
                                'message' => "Bad request"
                            ],
                        ]
                    ],
                ],

                [
                    'title' => 'Login user via Phone number',
                    'desc' => 'Verify phone code and login user',

                    'route' => route('auth.login-phone'),
                    'method' => 'POST',
                    'headers' => self::authHeaders(),
                    'body' => [
                        'code' => "0000",
                    ],

                    'response' => [
                        200 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => true,
                                'token' => "someverybigtokenhere",
                                'onboarding_done' => true,
                                'is_new' => false,
                                'has_nickname' => false
                            ],
                        ],

                        422 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => false,
                                'message' => "Code is wrong"
                            ],
                        ],

                        401 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => false,
                                'message' => "Bad request"
                            ],
                        ]
                    ],
                ],

                [
                    'title' => '1. Init email register',
                    'desc' => 'First step for email registration & save returned hash to phone memory',

                    'route' => route('auth.register-email'),
                    'method' => 'POST',
                    'headers' => self::authHeaders(),
                    'body' => [
                        'email' => 'example@google.com'
                    ],

                    'response' => [
                        200 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => true,
                                'message' => 'ok'
                            ]
                        ],

                        409 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => false,
                                'message' => 'Email already exist'
                            ]
                        ]
                    ]
                ],

                [
                    'title' => '2. Validate email deeplink',
                    'desc' => 'Optional request. Check if token exist in BE',

                    'route' => route('auth.validate-register-email'),
                    'method' => 'POST',
                    'headers' => self::authHeaders(),
                    'body' => [
                        'token' => 'someBigToken (received from deeplink param token)'
                    ],

                    'response' => [
                        200 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => true,
                                'message' => 'ok'
                            ]
                        ],

                        422 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => false,
                                'message' => 'This email verify not exist'
                            ]
                        ]
                    ]
                ],

                [
                    'title' => '3. Complete email registration',
                    'desc' => 'Final step where user enter password for email login. Link sample: https://timecaps.com/verify?token=be816c18193df6e18991d931d5b2b428b9bbb32c',

                    'route' => route('auth.complete-register-email'),
                    'method' => 'POST',
                    'headers' => self::authHeaders(),
                    'body' => [
                        'token' => 'someBigToken (received from deeplink param token)',
                        'nickname' => 'someNickname',
                        'password' => 'ExamplePassword'
                    ],

                    'response' => [
                        200 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => true,
                                'token' => "someverybigtokenhere",
                                'onboarding_done' => true,
                                'has_nickname' => false,
                                'has_email' => true
                            ]
                        ],

                        422 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => false,
                                'message' => 'This hash or token not exist'
                            ]
                        ]
                    ]
                ],

                [
                    'title' => 'Login user via Email & Password',
                    'desc' => 'login user',

                    'route' => route('auth.login-email'),
                    'method' => 'POST',
                    'headers' => self::authHeaders(),
                    'body' => [
                        'email' => "example@google.com",
                        'password' => 'somePassword'
                    ],

                    'response' => [
                        200 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => true,
                                'token' => "someverybigtokenhere",
                                'onboarding_done' => true,
                                'has_nickname' => false,
                                'has_email' => true
                            ],
                        ],

                        422 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => false,
                                'message' => "Email not registered"
                            ],
                        ],

                        401 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => false,
                                'message' => "Password not valid"
                            ],
                        ]
                    ],
                ],

                [
                    'title' => 'Login user via Facebook',
                    'desc' => 'By Facebook access_token',

                    'route' => route('auth.login-facebook'),
                    'method' => 'POST',
                    'headers' => self::authHeaders(),
                    'body' => [
                        'token' => "SomeBigAccessToken",
                    ],

                    'response' => [
                        200 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => true,
                                'token' => "someverybigtokenhere",
                                'onboarding_done' => true,
                                'is_new' => true,
                                'has_nickname' => true,
                                'has_email' => true
                            ],
                        ],

                        422 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => false,
                                'message' => "Failed to get information."
                            ],
                        ],

                        401 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => false,
                                'message' => "Bad request"
                            ],
                        ]
                    ],
                ],

                [
                    'title' => 'Login user via Google',
                    'desc' => 'By Google access_token',

                    'route' => route('auth.login-google'),
                    'method' => 'POST',
                    'headers' => self::authHeaders(),
                    'body' => [
                        'token' => "SomeBigAccessToken",
                    ],

                    'response' => [
                        200 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => true,
                                'token' => "someverybigtokenhere",
                                'onboarding_done' => true,
                                'is_new' => true,
                                'has_nickname' => true,
                                'has_email' => true
                            ],
                        ],

                        422 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => false,
                                'message' => "Failed to get information."
                            ],
                        ],

                        401 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => false,
                                'message' => "Bad request"
                            ],
                        ]
                    ],
                ],

                // Update nickname
                [
                    'title' => 'Update nickname and finish registration',
                    'desc' => '',

                    'route' => route('settings.update-nickname'),
                    'method' => 'POST',
                    'headers' => self::middlewareHeaders(),
                    'body' => [
                        'nickname' => "nickname",
                    ],

                    'response' => [

                        200 => [
                            'headers' => self::responseHeaders(),
                            'body' => [
                                'success' => true,
                                'settings' => [
                                    'phone_code' => '371',
                                    'phone_number' => '22332233',
                                    'phone_hash' => '91674332ff3a178a4f83e1d9c4d619c8',
                                    'nickname' => 'Nickname',
                                    'isAppNotificationsEnabled' => true,
                                    'isPushNotificationsEnabled' => true,
                                    'last_notification_seen' => '1552559817',
                                    'onboarding_done' => true,

                                    'image_url' => 'Avatar URL thumb, if set',
                                    'original_image_url' => 'Avatar URL original, if set',
                                ]
                            ],
                        ]
                    ],
                ],
            ]
        ];
    }

}
