Skip to content

User - NAS

Base URL: https://your-domain.com

Admin endpoints for managing NAS (Network Access Server) devices. All endpoints require admin/staff authentication.


Fetch All NAS

Retrieve all NAS devices configured in the system.

PropertyValue
EndpointFetch All NAS
MethodGET
URL/api/v1/nas
AuthenticationBearer Token

Request Headers:

HeaderValueRequired
Acceptapplication/jsonYes
AuthorizationBearer your-auth-tokenYes

Query Parameters:

ParameterTypeRequiredDescription
isp_idintegerYesISP ID
branch_idintegerYesBranch ID
user_idintegerYesUser ID

Request Body: None

Success Response (200 OK):

json
{
    "success": true,
    "data": [
        {
            "id": 1,
            "name": "Main NAS",
            "ip": "192.168.1.1",
            "type": "mikrotik",
            "status": "online",
            "subscriber_count": 150,
            "created_at": "2024-01-01 00:00:00"
        }
    ]
}

Error Response (401 Unauthorized):

json
{
    "success": false,
    "message": "Unauthenticated"
}

Fetch NAS

Retrieve details of a specific NAS device.

PropertyValue
EndpointFetch NAS
MethodGET
URL/api/v1/nas/{id}
AuthenticationBearer Token

Path Parameters:

ParameterTypeRequiredDescription
idintegerYesNAS ID

Success Response (200 OK):

json
{
    "success": true,
    "data": {
        "id": 1,
        "name": "Main NAS",
        "ip": "192.168.1.1",
        "port": 3799,
        "secret": "***hidden***",
        "type": "mikrotik",
        "status": "online",
        "subscriber_count": 150
    }
}

Error Response (404 Not Found):

json
{
    "success": false,
    "message": "NAS not found"
}

Create NAS

Create a new NAS device.

PropertyValue
EndpointCreate NAS
MethodPOST
URL/api/v1/nas
AuthenticationBearer Token

Request Headers:

HeaderValueRequired
Content-Typeapplication/jsonYes
Acceptapplication/jsonYes
AuthorizationBearer your-auth-tokenYes

Request Body:

json
{
    "isp_id": 1,
    "branch_id": 1,
    "user_id": 1,
    "name": "Main NAS",
    "ip": "192.168.1.1",
    "port": 3799,
    "secret": "radius-secret",
    "type": "mikrotik"
}
ParameterTypeRequiredDescription
isp_idintegerYesISP ID
branch_idintegerYesBranch ID
user_idintegerYesUser ID
namestringYesNAS name
ipstringYesNAS IP address
portintegerNoRADIUS port (default: 3799)
secretstringYesRADIUS shared secret
typestringYesNAS type (mikrotik, cisco, etc.)

Success Response (201 Created):

json
{
    "success": true,
    "message": "NAS created successfully",
    "data": {
        "id": 1
    }
}

Error Response (422 Validation Error):

json
{
    "success": false,
    "message": "Validation failed",
    "errors": {
        "ip": ["The ip has already been taken."]
    }
}

Update NAS

Update an existing NAS device.

PropertyValue
EndpointUpdate NAS
MethodPUT
URL/api/v1/nas/{id}
AuthenticationBearer Token

Path Parameters:

ParameterTypeRequiredDescription
idintegerYesNAS ID

Request Body:

json
{
    "name": "Updated NAS",
    "secret": "new-radius-secret"
}

Success Response (200 OK):

json
{
    "success": true,
    "message": "NAS updated successfully"
}

Error Response (404 Not Found):

json
{
    "success": false,
    "message": "NAS not found"
}

Delete NAS

Delete a NAS device from the system.

PropertyValue
EndpointDelete NAS
MethodDELETE
URL/api/v1/nas/{id}
AuthenticationBearer Token

Query Parameters:

ParameterTypeRequiredDescription
isp_idintegerYesISP ID
branch_idintegerYesBranch ID
user_idintegerYesUser ID

Success Response (200 OK):

json
{
    "success": true,
    "message": "NAS deleted successfully"
}

Error Response (400 Bad Request):

json
{
    "success": false,
    "message": "Cannot delete NAS with active subscribers"
}

Test NAS Connection

Test connectivity to a NAS device.

PropertyValue
EndpointTest NAS Connection
MethodPOST
URL/api/v1/nas/{id}/test
AuthenticationBearer Token

Path Parameters:

ParameterTypeRequiredDescription
idintegerYesNAS ID

Request Body:

json
{
    "isp_id": 1,
    "branch_id": 1,
    "user_id": 1
}

Success Response (200 OK):

json
{
    "success": true,
    "message": "Connection successful",
    "data": {
        "latency_ms": 15,
        "status": "online"
    }
}

Error Response (500 Server Error):

json
{
    "success": false,
    "message": "Connection failed: Connection refused"
}

www.onezeroart.com