{
    "openapi": "3.0.0",
    "info": {
        "title": "Agri Care Mobile API",
        "description": "Employee and reseller mobile endpoints for the Agri Care application.",
        "version": "1.0.0"
    },
    "servers": [
        {
            "url": "/api",
            "description": "Primary API server"
        }
    ],
    "paths": {
        "/v1/employees/{employee}": {
            "get": {
                "operationId": "db22ffaefd0ed6323e24d3fa50696ff2",
                "parameters": [
                    {
                        "name": "employee",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Employee details",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Employee"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/v1/employees/login": {
            "post": {
                "operationId": "9f5a76e8917450192dc89861e46dd2d5",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Login success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Employee"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/employees/{employee}/attendance": {
            "post": {
                "operationId": "ef77d2608abc828ae3028ec91ccfa120",
                "parameters": [
                    {
                        "name": "employee",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/AttendanceStoreRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Attendance stored",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Attendance"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/v1/employees/{employee}/location": {
            "post": {
                "operationId": "bdee1ac344b0a226eb209344ea9b55cd",
                "parameters": [
                    {
                        "name": "employee",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LocationStoreRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Location stored"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/v1/employees/{employee}/activity": {
            "post": {
                "operationId": "e6505825e7df4099161a3052e9aea576",
                "parameters": [
                    {
                        "name": "employee",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ActivityStoreRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Activity stored",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AttendanceActivity"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/v1/resellers/login": {
            "post": {
                "operationId": "78f33a83d80c56b3a6ad5b0619bc6740",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Reseller login",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Reseller"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/resellers/{reseller}": {
            "get": {
                "operationId": "5d00e8154cdf2a7ee1548d0cb9bbc4f1",
                "parameters": [
                    {
                        "name": "reseller",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Reseller details",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Reseller"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        }
    },
    "components": {
        "schemas": {
            "Employee": {
                "properties": {
                    "id": {
                        "type": "integer",
                        "format": "int64",
                        "example": 1
                    },
                    "name": {
                        "type": "string",
                        "example": "Hari Prasad",
                        "nullable": true
                    },
                    "address": {
                        "type": "string",
                        "example": "Ward 5, Kathmandu",
                        "nullable": true
                    },
                    "documents": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "nullable": true
                    },
                    "employee_type": {
                        "type": "string",
                        "example": "field",
                        "nullable": true
                    },
                    "salary_type": {
                        "type": "string",
                        "example": "monthly",
                        "nullable": true
                    },
                    "salary_amount": {
                        "type": "number",
                        "format": "float",
                        "example": 35000,
                        "nullable": true
                    },
                    "user_id": {
                        "type": "string",
                        "example": "EMP100"
                    },
                    "last_login": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    },
                    "last_attendance": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    },
                    "last_location": {
                        "type": "object",
                        "nullable": true
                    },
                    "device_id": {
                        "type": "string",
                        "example": "device-1",
                        "nullable": true
                    },
                    "fcm_id": {
                        "type": "string",
                        "example": "fcm-token-1",
                        "nullable": true
                    },
                    "mobile_token": {
                        "type": "string",
                        "nullable": true
                    },
                    "route_ids": {
                        "type": "array",
                        "items": {
                            "type": "integer",
                            "format": "int64"
                        },
                        "nullable": true
                    },
                    "area_ids": {
                        "type": "array",
                        "items": {
                            "type": "integer",
                            "format": "int64"
                        },
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "Reseller": {
                "properties": {
                    "id": {
                        "type": "integer",
                        "format": "int64",
                        "example": 1
                    },
                    "reseller_type": {
                        "type": "string",
                        "example": "dealer",
                        "nullable": true
                    },
                    "location": {
                        "type": "object",
                        "nullable": true
                    },
                    "user_id": {
                        "type": "string",
                        "example": "RES100"
                    },
                    "name": {
                        "type": "string",
                        "example": "Sharma Traders",
                        "nullable": true
                    },
                    "address": {
                        "type": "string",
                        "example": "Industrial Area, Birgunj",
                        "nullable": true
                    },
                    "documents": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "nullable": true
                    },
                    "rating": {
                        "type": "number",
                        "format": "float",
                        "example": 4.5,
                        "nullable": true
                    },
                    "due_amount": {
                        "type": "number",
                        "format": "float",
                        "example": 2500,
                        "nullable": true
                    },
                    "max_due_amount": {
                        "type": "number",
                        "format": "float",
                        "example": 15000,
                        "nullable": true
                    },
                    "avatar": {
                        "type": "string",
                        "example": "https://example.com/avatar.jpg",
                        "nullable": true
                    },
                    "fcm_id": {
                        "type": "string",
                        "example": "reseller-fcm-token",
                        "nullable": true
                    },
                    "device_id": {
                        "type": "string",
                        "example": "reseller-device-1",
                        "nullable": true
                    },
                    "mobile_token": {
                        "type": "string",
                        "nullable": true
                    },
                    "route_ids": {
                        "type": "array",
                        "items": {
                            "type": "integer",
                            "format": "int64"
                        },
                        "nullable": true
                    },
                    "area_ids": {
                        "type": "array",
                        "items": {
                            "type": "integer",
                            "format": "int64"
                        },
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "EmployeeUpdateRequest": {
                "properties": {
                    "fcm_id": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 255
                    },
                    "device_id": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 255
                    },
                    "last_login": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    },
                    "last_attendance": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    },
                    "last_location": {
                        "properties": {
                            "lat": {
                                "type": "number",
                                "format": "float"
                            },
                            "long": {
                                "type": "number",
                                "format": "float"
                            }
                        },
                        "type": "object",
                        "nullable": true
                    },
                    "route_ids": {
                        "type": "array",
                        "items": {
                            "type": "integer",
                            "format": "int64"
                        },
                        "nullable": true
                    },
                    "area_ids": {
                        "type": "array",
                        "items": {
                            "type": "integer",
                            "format": "int64"
                        },
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "ResellerUpdateRequest": {
                "properties": {
                    "reseller_type": {
                        "type": "string",
                        "nullable": true,
                        "enum": [
                            "dealer",
                            "retailer"
                        ]
                    },
                    "location": {
                        "properties": {
                            "lat": {
                                "type": "number",
                                "format": "float"
                            },
                            "long": {
                                "type": "number",
                                "format": "float"
                            }
                        },
                        "type": "object",
                        "nullable": true
                    },
                    "fcm_id": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 255
                    },
                    "device_id": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 255
                    },
                    "name": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 255
                    },
                    "address": {
                        "type": "string",
                        "nullable": true
                    },
                    "documents": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "nullable": true
                    },
                    "rating": {
                        "type": "number",
                        "format": "float",
                        "nullable": true,
                        "maximum": 5,
                        "minimum": 0
                    },
                    "due_amount": {
                        "type": "number",
                        "format": "float",
                        "nullable": true,
                        "minimum": 0
                    },
                    "max_due_amount": {
                        "type": "number",
                        "format": "float",
                        "nullable": true,
                        "minimum": 0
                    },
                    "avatar": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 255
                    },
                    "route_ids": {
                        "type": "array",
                        "items": {
                            "type": "integer",
                            "format": "int64"
                        },
                        "nullable": true
                    },
                    "area_ids": {
                        "type": "array",
                        "items": {
                            "type": "integer",
                            "format": "int64"
                        },
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "AttendanceStoreRequest": {
                "required": [
                    "datetime",
                    "attendance_status"
                ],
                "properties": {
                    "datetime": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2026-05-27T09:10:00+00:00"
                    },
                    "attendance_status": {
                        "type": "string",
                        "enum": [
                            "Present",
                            "Half Day",
                            "Leave"
                        ]
                    }
                },
                "type": "object"
            },
            "ActivityStoreRequest": {
                "required": [
                    "datetime",
                    "activity_status"
                ],
                "properties": {
                    "datetime": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2026-05-27T09:10:00+00:00"
                    },
                    "activity_status": {
                        "type": "string",
                        "enum": [
                            "Check In",
                            "Break In",
                            "Break Out",
                            "Check Out",
                            "Leave"
                        ]
                    }
                },
                "type": "object"
            },
            "LocationPoint": {
                "properties": {
                    "time": {
                        "type": "string",
                        "format": "time",
                        "example": "10:10:00"
                    },
                    "location": {
                        "type": "array",
                        "items": {
                            "type": "number",
                            "format": "float"
                        },
                        "example": [
                            85.324,
                            27.6744
                        ],
                        "maxItems": 2,
                        "minItems": 2
                    },
                    "id": {
                        "type": "string",
                        "example": "gps-1",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "LocationStoreRequest": {
                "required": [
                    "date",
                    "location"
                ],
                "properties": {
                    "date": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-05-27"
                    },
                    "location": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/LocationPoint"
                        }
                    }
                },
                "type": "object"
            },
            "Attendance": {
                "properties": {
                    "id": {
                        "type": "integer",
                        "format": "int64",
                        "example": 1
                    },
                    "user_id": {
                        "type": "integer",
                        "format": "int64",
                        "example": 1
                    },
                    "datetime": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "attendance_status": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "AttendanceActivity": {
                "properties": {
                    "id": {
                        "type": "integer",
                        "format": "int64",
                        "example": 1
                    },
                    "user_id": {
                        "type": "integer",
                        "format": "int64",
                        "example": 1
                    },
                    "attendance_id": {
                        "type": "integer",
                        "format": "int64",
                        "example": 1
                    },
                    "datetime": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "activity_status": {
                        "type": "string"
                    }
                },
                "type": "object"
            }
        },
        "securitySchemes": {
            "bearerAuth": {
                "type": "http",
                "description": "Bearer token returned by the mobile login endpoints.",
                "bearerFormat": "token",
                "scheme": "bearer"
            }
        }
    }
}