{
    "swagger": "2.0",
    "info": {
        "title": "Lasertag app",
        "description": "This is a API for Lasertag app",
        "termsOfService": "/",
        "version": "1.0"
    },
    "basePath": "//api/v1",
    "paths": {
        "/games/{id}": {
            "get": {
                "tags": [
                    "Games"
                ],
                "summary": "Get Game",
                "description": "Get Game by given ID",
                "operationId": "getGame",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "Authorization",
                        "in": "header",
                        "description": "User token",
                        "required": true,
                        "type": "string",
                        "default": "Bearer "
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Game id that needs to be fetched.",
                        "required": true,
                        "type": "integer"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation"
                    },
                    "404": {
                        "description": "User not found\n     * {\n     *     'errors': 'Game doesn't exist'\n     * }\n     * "
                    },
                    "422": {
                        "description": "Validation failed:\n     * 'errors': {\n     *      'id': [\n     *      {\n     *          'code': 'required_rule_error',\n     *          'errors': 'The id field is required.'\n     *      }\n     *      ]\n     *  },\n     *  'code': 422"
                    }
                }
            }
        },
        "/games": {
            "get": {
                "tags": [
                    "Games"
                ],
                "summary": "My Games",
                "description": "Get all user games",
                "operationId": "getGames",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "Authorization",
                        "in": "header",
                        "description": "User token",
                        "required": true,
                        "type": "string",
                        "default": "Bearer "
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation"
                    }
                }
            }
        },
        "/rankings": {
            "get": {
                "tags": [
                    "Ranking"
                ],
                "summary": "Ranking List",
                "description": "Get ranking list",
                "operationId": "getRankingList",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "Authorization",
                        "in": "header",
                        "description": "User token",
                        "required": true,
                        "type": "string",
                        "default": "Bearer "
                    },
                    {
                        "name": "period",
                        "in": "query",
                        "description": "period value can be:<br> 0 - Oduvek<br> 1 - Zadnjih 7 dana<br> 2 - Ovog meseca<br> 3 - Proslog meseca <br> 4 - Ove godine",
                        "type": "integer"
                    },
                    {
                        "name": "gender",
                        "in": "query",
                        "description": "Gender value can be:<br> m - male<br> f - female<br>If not set all records  will be returned. ",
                        "type": "string"
                    },
                    {
                        "name": "criteria",
                        "in": "query",
                        "description": "Criteria value can be:<br> score<br> accuracy<br> mvp<br> wins",
                        "type": "string"
                    },
                    {
                        "name": "arena",
                        "in": "query",
                        "description": "Arena id",
                        "type": "string"
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "pagination",
                        "type": "integer"
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "pagination: items per page. Default value is 50",
                        "type": "integer"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation"
                    }
                }
            }
        },
        "/oauth/access_token": {
            "post": {
                "tags": [
                    "Token"
                ],
                "summary": "Get access token",
                "description": "Get access token",
                "operationId": "accessToken",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "parameter": "token",
                        "name": "token",
                        "in": "body",
                        "description": "grant_type value can be: (1)client_credentials(scope:client) (2)password(scope:user,client, username and password are required)",
                        "required": true,
                        "schema": {
                            "properties": {
                                "grant_type": {
                                    "type": "string"
                                },
                                "client_id": {
                                    "type": "string"
                                },
                                "client_secret": {
                                    "type": "string"
                                },
                                "scope": {
                                    "type": "string"
                                },
                                "username": {
                                    "type": "string"
                                },
                                "password": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation"
                    },
                    "400": {
                        "description": "Bad request"
                    }
                }
            }
        },
        "/version": {
            "get": {
                "tags": [
                    "Globals"
                ],
                "summary": "Get Version",
                "description": "Get App Version",
                "operationId": "getAppSkills",
                "produces": [
                    "application/json"
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation"
                    }
                }
            }
        },
        "/skills": {
            "get": {
                "tags": [
                    "Globals"
                ],
                "summary": "Get Skills",
                "description": "Get All Skills",
                "operationId": "getAllSkills",
                "produces": [
                    "application/json"
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation"
                    }
                }
            }
        },
        "/countries": {
            "get": {
                "tags": [
                    "Globals"
                ],
                "summary": "Get Countries",
                "description": "Get All Countries",
                "operationId": "getAllCountries",
                "produces": [
                    "application/json"
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation"
                    }
                }
            }
        },
        "/users/show": {
            "get": {
                "tags": [
                    "User"
                ],
                "summary": "User Profile",
                "description": "Get User profile",
                "operationId": "getUserProfile",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "Authorization",
                        "in": "header",
                        "description": "User token",
                        "required": true,
                        "type": "string",
                        "default": "Bearer "
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation"
                    }
                }
            }
        },
        "/users": {
            "post": {
                "tags": [
                    "User"
                ],
                "summary": "Register user",
                "description": "Registration new user for mobile application",
                "operationId": "createUser",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "Authorization",
                        "in": "header",
                        "description": "Client token",
                        "required": true,
                        "type": "string",
                        "default": "Bearer "
                    },
                    {
                        "name": "username",
                        "in": "query",
                        "required": true,
                        "type": "string"
                    },
                    {
                        "name": "password",
                        "in": "query",
                        "description": "User password",
                        "required": true,
                        "type": "string"
                    },
                    {
                        "name": "password_confirmation",
                        "in": "query",
                        "description": "Confirm Password",
                        "required": true,
                        "type": "string"
                    },
                    {
                        "name": "name",
                        "in": "query",
                        "required": true,
                        "type": "string"
                    },
                    {
                        "name": "email",
                        "in": "query",
                        "description": "Must be valid e-mail",
                        "required": true,
                        "type": "string"
                    }
                ],
                "responses": {
                    "201": {
                        "description": "User successfully created"
                    },
                    "422": {
                        "description": "Validation failed:\n     * 'errors': {\n     *     'username': [\n     *      {\n     *          'code': 'required_rule_error',\n     *          'errors': 'The username field is required.'\n     *      }\n     *      ],\n     *     'password': [\n     *     {\n     *          'code': 'required_rule_error',\n     *          'errors': 'The password field is required.'\n     *      }\n     *      ],\n     *     'name': [\n     *     {\n     *          'code': 'required_rule_error',\n     *          'errors': 'The name field is required.'\n     *      }\n     *      ],\n     *     'email': [\n     *     {\n     *          'code': 'required_rule_error',\n     *          'errors': 'The email field is required.'\n     *      }\n     *     ],\n     *      'username': [\n     *     {\n     *          'code': 'unique_rule_error',\n     *          'errors': 'The username has already been taken.'\n     *      }\n     *     ]\n     * },\n     * 'code': 422"
                    }
                }
            }
        },
        "/users/update": {
            "post": {
                "tags": [
                    "User"
                ],
                "summary": "Update user",
                "description": "Update logged user ",
                "operationId": "updateUser",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "Authorization",
                        "in": "header",
                        "description": "User token",
                        "required": true,
                        "type": "string",
                        "default": "Bearer "
                    },
                    {
                        "name": "name",
                        "in": "query",
                        "required": true,
                        "type": "string"
                    },
                    {
                        "name": "laser_tag",
                        "in": "query",
                        "description": "Must be valid lasertag name",
                        "type": "string"
                    },
                    {
                        "name": "years",
                        "in": "query",
                        "type": "string"
                    },
                    {
                        "name": "height",
                        "in": "query",
                        "type": "string"
                    },
                    {
                        "name": "weight",
                        "in": "query",
                        "type": "string"
                    },
                    {
                        "name": "gender",
                        "in": "query",
                        "description": "Gender value can be:<br> m - male<br> f - female<br>",
                        "type": "string"
                    },
                    {
                        "name": "country",
                        "in": "query",
                        "description": "Country name",
                        "type": "string"
                    },
                    {
                        "name": "skills[0]",
                        "in": "query",
                        "type": "string"
                    },
                    {
                        "name": "skills[1]",
                        "in": "query",
                        "type": "string"
                    },
                    {
                        "name": "skills[2]",
                        "in": "query",
                        "type": "string"
                    },
                    {
                        "name": "image",
                        "in": "formData",
                        "description": "Image file",
                        "type": "file"
                    }
                ],
                "responses": {
                    "201": {
                        "description": "User successfully updated"
                    },
                    "422": {
                        "description": "Validation failed:\n     * 'errors': {\n     *     'name': [\n     *      {\n     *          'code': 'required_rule_error',\n     *          'errors': 'The name field is required.'\n     *      }\n     *      ]\n     * },\n     * 'code': 422"
                    }
                }
            }
        },
        "/users/password": {
            "post": {
                "tags": [
                    "User"
                ],
                "summary": "Forgot Password",
                "description": "Get new Password",
                "operationId": "forgotPassword",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "Authorization",
                        "in": "header",
                        "description": "Client token",
                        "required": true,
                        "type": "string",
                        "default": "Bearer "
                    },
                    {
                        "name": "email",
                        "in": "query",
                        "required": true,
                        "type": "string"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "New password set"
                    },
                    "422": {
                        "description": "Validation failed:\n     * 'errors': {\n     *     'email': [\n     *      {\n     *          'code': 'required_rule_error',\n     *          'errors': 'The email field is required.'\n     *      }\n     *      ]\n     * },\n     * 'code': 422"
                    }
                }
            }
        },
        "/users/password/set": {
            "post": {
                "tags": [
                    "User"
                ],
                "summary": "Set password",
                "description": "Set new password",
                "operationId": "setPassword",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "Authorization",
                        "in": "header",
                        "description": "User token",
                        "required": true,
                        "type": "string",
                        "default": "Bearer "
                    },
                    {
                        "name": "username",
                        "in": "query",
                        "required": true,
                        "type": "string"
                    },
                    {
                        "name": "password",
                        "in": "query",
                        "description": "Minimum 6 characters",
                        "required": true,
                        "type": "string",
                        "minLength": 6
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Password successfully set"
                    },
                    "404": {
                        "description": "User not found"
                    },
                    "422": {
                        "description": "Validation failed"
                    }
                }
            }
        },
        "/suggestion": {
            "post": {
                "tags": [
                    "Suggestion"
                ],
                "summary": "Create Suggestion",
                "description": "Create new Suggestion",
                "operationId": "createSuggestion",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "Authorization",
                        "in": "header",
                        "description": "User token",
                        "required": true,
                        "type": "string",
                        "default": "Bearer "
                    },
                    {
                        "name": "text",
                        "in": "query",
                        "required": true,
                        "type": "string"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "New password set"
                    },
                    "422": {
                        "description": "Validation failed:\n     * 'errors': {\n     *     'text': [\n     *      {\n     *          'code': 'required_rule_error',\n     *          'errors': 'The text field is required.'\n     *      }\n     *      ]\n     * },\n     * 'code': 422"
                    }
                }
            }
        },
        "/users/key/{id}": {
            "post": {
                "tags": [
                    "User"
                ],
                "summary": "Set User Notification key",
                "description": "Set User Notification key",
                "operationId": "notificationKey",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "Authorization",
                        "in": "header",
                        "description": "Client token",
                        "required": true,
                        "type": "string",
                        "default": "Bearer "
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "description": "User id that needs to be fetched.",
                        "required": true,
                        "type": "integer"
                    },
                    {
                        "name": "notification_key",
                        "in": "query",
                        "required": true,
                        "type": "string"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation"
                    },
                    "404": {
                        "description": "User not found\n     * {\n     *     'errors': 'User doesn't exist'\n     * }\n     * "
                    },
                    "422": {
                        "description": "Validation failed:\n     * 'errors': {\n     *      'notification_key': [\n     *      {\n     *          'code': 'required_rule_error',\n     *          'errors': 'The notification key field is required.'\n     *      }\n     *      ]\n     *  },\n     *  'code': 422"
                    }
                }
            }
        }
    },
    "definitions": {
        "Image": {
            "required": [
                "id"
            ],
            "properties": {
                "id": {
                    "description": "App\\Image",
                    "type": "integer",
                    "example": 11
                },
                "created_at": {
                    "description": "App\\Image",
                    "type": "string",
                    "example": "2016-05-31 06:35:41"
                }
            },
            "xml": {
                "name": "Image"
            }
        }
    }
}