Introduction

This documentation aims to provide all the information you need to work with our CP Dashboard API.

As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile). You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_BEARER_TOKEN}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

Auth

Login

POST
https://api.powerly.app
/api/v3/auth/login

Login api endpoint to authorize the user by email and password.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://api.powerly.app/api/v3/auth/login" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"[email protected]\",
    \"password\": \"secret123\",
    \"device_imei\": \"123456789012345\",
    \"device_token\": \"abcdef1234567890\"
}"
Example response:

Verify email

POST
https://api.powerly.app
/api/v3/auth/email/verify
requires authentication

To verify the email, you will need the verification_token received in response to the registration request, and the verification_code sent to the user's email.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://api.powerly.app/api/v3/auth/email/verify" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"verification_token\": \"123e4567-e89b-12d3-a456-426614174000\",
    \"verification_code\": \"1234\"
}"
Example response:
{
    "data": {
        "id": 135231,
        "customer_type": "C",
        "first_name": "",
        "last_name": "",
        "full_name": "",
        "contact_number": "966977977974",
        "email": "[email protected]",
        "balance": "0.00",
        "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnYXNhYmxlLnRlc3QiLCJpYXQiOjE3MTYwMjc4ODQsImV4cCI6MTc0NzU2Mzg4NCwiZGF0YSI6eyJ1c2VyX2lkIjoxMzUyMzEsInVzZXJfdHlwZSI6MX19.NlcGZdzy4kKACb1fJSSxL-VVJIwvvTbTqtz0_Rvv3_E"
    },
    "success": 1,
    "message": "Done!"
}
{
    "data": {
        "require_verification": 1,
        "verification_token": "27ee3f39-8768-4bc3-a6ae-440d87660b02",
        "can_resend_in_seconds": 60,
        "available_attempts": 2
    },
    "success": 0,
    "message": "Incorrect verification code."
}

Resend verification code

POST
https://api.powerly.app
/api/v3/auth/email/resend-verification
requires authentication

You can resend the verification code to the user's email address.

Note that resending the code reduces the number of allowable code attempts, thereby increasing the time until the next code can be sent.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://api.powerly.app/api/v3/auth/email/resend-verification" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"verification_token\": \"123e4567-e89b-12d3-a456-426614174000\"
}"
Example response:
{
    "success": 1,
    "message": "Please enter the verification code to continue.",
    "data": {
        "require_verification": 1,
        "verification_token": "27ee3f39-8768-4bc3-a6ae-440d87660b02",
        "can_resend_in_seconds": 60,
        "available_attempts": 3
    }
}

Logout

POST
https://api.powerly.app
/api/v3/auth/logout
requires authentication

Use this api endpoint when you logout users to delete the access token. You need to provide device_imei to dissociate the device.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://api.powerly.app/api/v3/auth/logout" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"device_imei\": \"iste\"
}"
Example response:
[Empty response]

Password reset


Reset password

POST
https://api.powerly.app
/api/v3/auth/password/reset
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://api.powerly.app/api/v3/auth/password/reset" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"[email protected]\"
}"

Resend verification code

POST
https://api.powerly.app
/api/v3/auth/password/reset/resend
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://api.powerly.app/api/v3/auth/password/reset/resend" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"verification_token\": \"123e4567-e89b-12d3-a456-426614174000\"
}"

Verify reset password

POST
https://api.powerly.app
/api/v3/auth/password/reset/verify
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://api.powerly.app/api/v3/auth/password/reset/verify" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"verification_token\": \"123e4567-e89b-12d3-a456-426614174000\",
    \"verification_code\": \"1234\"
}"

Authenticated user data

User data

GET
https://api.powerly.app
/api/user
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/user" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
                                                            cache-control
                                                            : no-cache, private
                                                                                                                    content-type
                                                            : application/json
                                                                                                                    vary
                                                            : Origin
                                                         
{
    "success": 0,
    "msg": "Internal system error.",
    "msg_arabic": "خطأ في النظام",
    "trace": "Internal system error."
}

Balance

GET
https://api.powerly.app
/api/user/balance
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/user/balance" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
                                                            cache-control
                                                            : no-cache, private
                                                                                                                    content-type
                                                            : application/json
                                                                                                                    vary
                                                            : Origin
                                                         
{
    "success": 0,
    "msg": "Internal system error.",
    "msg_arabic": "خطأ في النظام",
    "trace": "Internal system error."
}

Payout methods

GET
https://api.powerly.app
/api/user/payout-methods
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/user/payout-methods" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
                                                            cache-control
                                                            : no-cache, private
                                                                                                                    content-type
                                                            : application/json
                                                                                                                    vary
                                                            : Origin
                                                         
{
    "success": 0,
    "msg": "Internal system error.",
    "msg_arabic": "خطأ في النظام",
    "trace": "Internal system error."
}

User insights

GET
https://api.powerly.app
/api/stats
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/stats" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
                                                            cache-control
                                                            : no-cache, private
                                                                                                                    content-type
                                                            : application/json
                                                                                                                    vary
                                                            : Origin
                                                         
{
    "success": 0,
    "msg": "Internal system error.",
    "msg_arabic": "خطأ في النظام",
    "trace": "Internal system error."
}

Permissions

GET
https://api.powerly.app
/api/user/permissions
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/user/permissions" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
                                                            cache-control
                                                            : no-cache, private
                                                                                                                    content-type
                                                            : application/json
                                                                                                                    vary
                                                            : Origin
                                                         
{
    "success": 0,
    "msg": "Internal system error.",
    "msg_arabic": "خطأ في النظام",
    "trace": "Internal system error."
}

Roles

GET
https://api.powerly.app
/api/user/roles
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/user/roles" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
                                                            cache-control
                                                            : no-cache, private
                                                                                                                    content-type
                                                            : application/json
                                                                                                                    vary
                                                            : Origin
                                                         
{
    "success": 0,
    "msg": "Internal system error.",
    "msg_arabic": "خطأ في النظام",
    "trace": "Internal system error."
}

Subscribe

GET
https://api.powerly.app
/api/user/subscribe
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/user/subscribe" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
                                                            cache-control
                                                            : no-cache, private
                                                                                                                    content-type
                                                            : application/json
                                                                                                                    vary
                                                            : Origin
                                                         
{
    "success": 0,
    "msg": "Internal system error.",
    "msg_arabic": "خطأ في النظام",
    "trace": "Internal system error."
}

Unsubscribe

GET
https://api.powerly.app
/api/user/unsubscribe
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/user/unsubscribe" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
                                                            cache-control
                                                            : no-cache, private
                                                                                                                    content-type
                                                            : application/json
                                                                                                                    vary
                                                            : Origin
                                                         
{
    "success": 0,
    "msg": "Internal system error.",
    "msg_arabic": "خطأ في النظام",
    "trace": "Internal system error."
}

Categories CRUD

Categories list (datatable)

GET
https://api.powerly.app
/api/categories/{type}/datatable
requires authentication

Get a list of categories.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

type
string
required

type of the category.

Example:
charging-site

Query Parameters

search
string

Optional search query to filter categories.

Example:
suscipit
itemsPerPage
integer

Number of items per page (-1 for all).

Example:
15
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/categories/charging-site/datatable?search=suscipit&itemsPerPage=15" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
      "success": 1,
      "msg": "Done!",
      "msg_arabic": "تمت العمليه بنجاح",
      "results": {
          "data": [
              {
                  "id": 58,
                  "type": "charging-site",
                  "name": "maximes",
                  "color": "#D2B48C"
              },
              {
                  "id": 57,
                  "type": "charging-site",
                  "name": "tests",
                  "color": "#A52A2A"
              },
              ...
          ],
          "meta": {
              "per_page": 15,
              "total": 55
          }
      }
 }
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Categories list

GET
https://api.powerly.app
/api/categories/{type}
requires authentication

Get all categories.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

type
string
required

type of the category.

Example:
charging-site
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/categories/charging-site" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
      "success": 1,
      "msg": "Done!",
      "msg_arabic": "تمت العمليه بنجاح",
      "results": [
          {
              "id": 58,
              "type": "charging-site",
              "name": "maximes",
              "color": "#D2B48C"
          },
          {
              "id": 57,
              "type": "charging-site",
              "name": "tests",
              "color": "#A52A2A"
          },
          ...
      ]
  }
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Create a new category.

POST
https://api.powerly.app
/api/categories
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://api.powerly.app/api/categories" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"charging-site\",
    \"name\": \"Electronics\"
}"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح",
    "results": {
        "id": 60,
        "type": "charging-site",
        "name": "Electronics",
        "color": "#A9A9A9"
    }
}
{
    "success": 0,
    "message": "Validation failed.",
    "errors": {
        "name": [
            "The name field is required."
        ],
        "type": [
            "The type field is required."
        ]
    }
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Get details of a specific category.

GET
https://api.powerly.app
/api/categories/{id}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the category.

Example:
1
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/categories/1" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح",
    "results": {
        "id": 60,
        "type": "charging-site",
        "name": "Electronics",
        "color": "#A9A9A9"
    }
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Update an existing category.

PUT
PATCH
https://api.powerly.app
/api/categories/{id}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the category.

Example:
1

Body Parameters

Example request:
curl --request PUT \
    "https://api.powerly.app/api/categories/1" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Electronics\"
}"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح",
    "results": {
        "id": 60,
        "type": "charging-site",
        "name": "Electronics",
        "color": "#A9A9A9"
    }
}
{"success": 0,"error": "You don't have permissions to access localhost on this server.}
{
    "success": 0,
    "message": "Validation failed.",
    "errors": {
        "name": [
            "The name field is required."
        ]
    }
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Delete a category.

DELETE
https://api.powerly.app
/api/categories/{id}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the category.

Example:
1
Example request:
curl --request DELETE \
    "https://api.powerly.app/api/categories/1" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح"
}
{"success": 0,"error": "You don't have permissions to access localhost on this server.}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Feedbacks

Get feedback

GET
https://api.powerly.app
/api/feedback
requires authentication

Retrieves a list of feedback associated with the charge points owned by the authenticated user.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

itemsPerPage
integer

Number of results per page. Use -1 to get all. Defaults to 15.

Example:
10
search
string

Filter feedback by message content.

Example:
slow charging
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/feedback?itemsPerPage=10&search=slow+charging" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
      "success": 1,
      "msg": "Done!",
      "msg_arabic": "تمت العمليه بنجاح",
      "results": {
          "data": [
              {
                  "id": 139,
                  "charge_point_order_id": 171,
                  "user_id": 1,
                  "order_id": null,
                  "feedback_msg": "The charging cable felt a bit stiff and could be a little longer for easier car positioning.",
                  "rating": "3.90",
                  "insert_date": "2024-07-17T10:17:20.000000Z",
                  "updated_at": "2024-07-22T07:17:30.000000Z",
                  "verified": 1,
                  "charge_point_order": {
                      "id": 171,
                      "charge_point_id": 12,
                      "charge_point_connector_id": 14,
                      "charging_session_time": "51.7700",
                      "charging_session_energy": "1.5600",
                      "unit": "minutes",
                      "requested_quantity": "10",
                      "feedback_exist": 0,
                      "status": 1,
                      "delivery_date": null,
                      "user_id": 1,
                      "fleet_id": null,
                      "quantity": "51.0000",
                      "price": "102.0000",
                      "fees": "1.00",
                      "earning": 15.3,
                      "unit_price": "2.00",
                      "created_at": "2025-01-08T07:33:27.000000Z",
                      "updated_at": "2025-03-04T13:27:56.000000Z",
                      "connector_number": 1
                  }
              },
              ...
          ],
          "meta": {
              "per_page": 15,
              "total": 141
          }
      }
  }

Export feedback to Excel

GET
https://api.powerly.app
/api/feedback/export
requires authentication

Exports all feedback related to the authenticated user's charge points to an .xlsx file.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/feedback/export" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
attachment feedback.xlsx

Get a specific feedback entry

GET
https://api.powerly.app
/api/feedback/{feedbackID}
requires authentication

Returns a single feedback entry by ID.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

feedbackID
integer
required

The ID of the feedback to retrieve.

Example:
139
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/feedback/139" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "id": 139,
    "charge_point_order_id": 171,
    "user_id": 1,
    "order_id": null,
    "feedback_msg": "The charging cable felt a bit stiff and could be a little longer for easier car positioning.",
    "rating": "3.90",
    "insert_date": "2024-07-17T10:17:20.000000Z",
    "updated_at": "2024-07-22T07:17:30.000000Z",
    "verified": 1,
    "charge_point_order": {
        "id": 171,
        "charge_point_id": 12,
        "charge_point_connector_id": 14,
        "charging_session_time": "51.7700",
        "charging_session_energy": "1.5600",
        "unit": "minutes",
        "requested_quantity": "10",
        "feedback_exist": 0,
        "status": 1,
        "delivery_date": null,
        "user_id": 1,
        "fleet_id": null,
        "quantity": "51.0000",
        "price": "102.0000",
        "fees": "1.00",
        "earning": 15.3,
        "unit_price": "2.00",
        "created_at": "2025-01-08T07:33:27.000000Z",
        "updated_at": "2025-03-04T13:27:56.000000Z",
        "connector_number": 1
    }
}
{
    "error": "Order not found"
}

Location

Get countries

GET
https://api.powerly.app
/api/v3/countries
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/v3/countries" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "data": [
        {
            "id": 1,
            "name": "Jordan",
            "iso": "JO",
            "time_zone": "Asia/Amman",
            "latitude": "31.95",
            "longitude": "35.93333",
            "phone_code": "962",
            "contact_number": "96265860087",
            "email": "[email protected]",
            "currency": "JD",
            "currency_iso": "JOD"
        },
        {
            "id": 2,
            "name": "Ukraine",
            "iso": "UA",
            "time_zone": "Asia/Amman",
            "latitude": "53.7098",
            "longitude": "27.9534",
            "phone_code": "380",
            "contact_number": "3802912345678",
            "email": "",
            "currency": "UAH",
            "currency_iso": null
        },
        {
            "id": 4,
            "name": "Saudi Arabia",
            "iso": "SA",
            "time_zone": "Asia/Riyadh",
            "latitude": "24.63333",
            "longitude": "46.71666",
            "phone_code": "966",
            "contact_number": "9660005469",
            "email": "[email protected]",
            "currency": "SR",
            "currency_iso": "SAR"
        }
    ],
    "success": 1,
    "message": "Done!"
}

Get country

GET
https://api.powerly.app
/api/v3/countries/{id}
requires authentication

Returns country details by ID.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

Country ID.

Example:
4
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/v3/countries/4" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "data": {
        "id": 4,
        "name": "Saudi Arabia",
        "iso": "SA",
        "time_zone": "Asia/Riyadh",
        "latitude": "24.63333",
        "longitude": "46.71666",
        "phone_code": "966",
        "contact_number": "9660005469",
        "email": "[email protected]",
        "currency": "SR",
        "currency_iso": "SAR",
        "flag_url": "https://v4.test/flags/SA.png"
    },
    "success": 1,
    "message": "Done!"
}

Orders

Get charge point orders

GET
https://api.powerly.app
/api/orders
requires authentication

Returns a paginated list of orders related to charge points owned by the authenticated user.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

itemsPerPage
integer

Number of results per page. Use -1 to get all. Defaults to 15.

Example:
10
search
string

Optional search term to filter by charge point identifier.

Example:
EV12345
sortBy
object

Optional array of sorting instructions. Each object should include "key" and "order" (asc or desc). Keys: insert_date, duration, energy, price, totalEarning.

Example:
[]
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/orders?itemsPerPage=10&search=EV12345" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
      "success": 1,
      "msg": "Done!",
      "msg_arabic": "تمت العمليه بنجاح",
      "results": {
          "data": [
              {
                  "id": 426,
                  "charge_point_id": 16,
                  "charge_point_connector_id": 16,
                  "charging_session_time": "27.0000",
                  "charging_session_energy": "1661.0000",
                  "unit": "minutes",
                  "requested_quantity": "8",
                  "feedback_exist": 0,
                  "status": 1,
                  "delivery_date": "2024-09-16 07:33:27",
                  "user_id": 11,
                  "fleet_id": 64,
                  "quantity": "6.0000",
                  "price": "0.00",
                  "fees": "8.00",
                  "earning": "953.47",
                  "unit_price": "2587.98",
                  "created_at": "2024-09-16T07:33:27.000000Z",
                  "updated_at": "2025-03-04T13:27:57.000000Z",
                  "connector_number": 1,
                  "charge_point": {
                      "id": 16,
                      "identifier": "CP:DDEE36",
                      "category": "EV_CHARGER",
                      "title": "ocpp_yesy",
                      "description": "ocpp_yesy",
                      "latitude": "24.593799037018584",
                      "longitude": "46.62275091622337",
                      "listed": false,
                      ...
                  },
                  "insert_date": "2024-09-16 07:33",
                  "prices": [],
                  "app_fees": "-953.47",
                  "elapsed_time": "27.0000"
              },
             ...
          ],
          "meta": {
              "per_page": 10,
              "total": 404
          }
      }
  }

Export orders to Excel

GET
https://api.powerly.app
/api/orders/export
requires authentication

Exports all orders for the authenticated user's charge points to an .xlsx file.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/orders/export" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
attachment Orders.xlsx

Get a specific order

GET
https://api.powerly.app
/api/orders/{orderID}
requires authentication

Retrieves a single order by its ID, ensuring it belongs to the authenticated user.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

orderID
integer
required

The ID of the order to retrieve.

Example:
12
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/orders/12" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "id": 426,
    "charge_point_id": 16,
    "charge_point_connector_id": 16,
    "charging_session_time": "27.0000",
    "charging_session_energy": "1661.0000",
    "unit": "minutes",
    "requested_quantity": "8",
    "feedback_exist": 0,
    "status": 1,
    "delivery_date": "2024-09-16 07:33:27",
    "user_id": 11,
    "fleet_id": 64,
    "quantity": "6.0000",
    "price": "0.00",
    "fees": "8.00",
    "earning": "953.47",
    "unit_price": "2587.98",
    "created_at": "2024-09-16T07:33:27.000000Z",
    "updated_at": "2025-03-04T13:27:57.000000Z",
    "connector_number": 1,
    "charge_point": {
        "id": 16,
        "identifier": "CP:DDEE36",
        "category": "EV_CHARGER",
        "title": "ocpp_yesy",
        "description": "ocpp_yesy",
        "latitude": "24.593799037018584",
        "longitude": "46.62275091622337",
        "listed": false,
        "distance": null,
        "type": null,
        "status": "unavailable",
        "image": "http://localhost:8080/images/charge-point-1.jpeg",
        "session_limit_type": null,
        "session_limit_value": 0,
        "online_status": 0,
        "configured": 0,
        "rating": "3.17",
        "owner_id": 1,
        "address": {
            "address_line_1": "x",
            "address_line_2": "y",
            "address_line_3": "z",
            "zipcode": "1234",
            "city": "xxx",
            "state": "yyy"
        },
        "token": "EV_CHARGER_64AFFC8DDEEC1",
        "contact_number": "9666564654664",
        "open_time": "00:00:00",
        "close_time": "23:59:00",
        "total_earnings": "17026.18",
        "total_energy": 53469,
        "total_sessions_time": 739,
        "connectors": [
            {
                "id": 3,
                "name": "Type 1 - J1772",
                "icon": "https://storage.powerly.app/connectors/Type 1.png",
                "type": "",
                "max_power": 0,
                "status": "unavailable",
                "number": 1
            }
        ],
        "amenities": [],
        "price_unit": "energy",
        "orders_count": 50,
        "price": "1362.09",
        "price_usd": 10,
        "is_external": false,
        "is_in_use": false,
        "is_reserved": false,
        "available": false,
        "next_reservation_near_now": null,
        "external_details": null,
        "reservation_fee": "68.10",
        "booked_by_current_user": false,
        "used_by_current_user": false,
        "earning": "0.00"
    },
    "insert_date": "2024-09-16 07:33",
    "prices": [],
    "app_fees": "-953.47",
    "elapsed_time": "27.0000"
}
{
    "error": "Order not found"
}

Get orders by charge point ID

GET
https://api.powerly.app
/api/orders/charge-point/{chargePointID}
requires authentication

Returns all orders for a specific charge point.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

chargePointID
integer
required

The ID of the charge point.

Example:
5
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/orders/charge-point/5" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[
         {
           "id": 426,
           "charge_point_id": 16,
           "charge_point_connector_id": 16,
           "charging_session_time": "27.0000",
           "charging_session_energy": "1661.0000",
           "unit": "minutes",
           "requested_quantity": "8",
           "feedback_exist": 0,
           "status": 1,
           "delivery_date": "2024-09-16 07:33:27",
           "user_id": 11,
           "fleet_id": 64,
           "quantity": "6.0000",
           "price": "0.00",
           "fees": "8.00",
           "earning": "953.47",
           "unit_price": "2587.98",
           "created_at": "2024-09-16T07:33:27.000000Z",
           "updated_at": "2025-03-04T13:27:57.000000Z",
           "connector_number": 1,
           "charge_point": {
               "id": 16,
               "identifier": "CP:DDEE36",
               "category": "EV_CHARGER",
               "title": "ocpp_yesy",
               "description": "ocpp_yesy",
               "latitude": "24.593799037018584",
               "longitude": "46.62275091622337",
               "listed": false,
               ...
           },
           "insert_date": "2024-09-16 07:33",
           "prices": [],
           "app_fees": "-953.47",
           "elapsed_time": "27.0000"
       }
  ]

Payout methods

Endpoints for managing payout methods for the authenticated user.

Get user's payout methods

GET
https://api.powerly.app
/api/payout-methods
requires authentication

Retrieves the list of payout methods that the authenticated user has already added.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/payout-methods" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
      "success": 1,
      "msg": "Done!",
      "msg_arabic": "تمت العمليه بنجاح",
      "results": [
          {
              "id": 1,
              "logo": "http://localhost:8080/images/payout-methods/stripe.png",
              "name": "stripe",
              "description": "Instant withdrawals with Stripe, ensuring secure and seamless transactions.",
              "details": {
                  "account_id": "acct_1PnynuR7qdScojsdf56",
                  "account_status": "Pending"
              },
              "link":"https://connect.stripe.com/setup/s/acct_1PjiyP08tgBteJD6/IAbfEzjDXCzjsds"
          },
          ...
      ]
  }
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Get available payout methods

GET
https://api.powerly.app
/api/payout-methods/available
requires authentication

Lists the payout methods available for the user's country that have not yet been added. The user must have a country associated with their profile.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/payout-methods/available" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
      "success": 1,
      "msg": "Done!",
      "msg_arabic": "تمت العمليه بنجاح",
      "results": [
          {
              "id": 1,
              "logo": "http://localhost:8080/images/payout-methods/stripe.png",
              "name": "stripe",
              "description": "Instant withdrawals with Stripe, ensuring secure and seamless transactions.",
              "details": {
                  "account_id": "acct_1PnynuR7qdScojsdf56",
                  "account_status": "Pending"
              },
              "link":"https://connect.stripe.com/setup/s/acct_1PjiyP08tgBteJD6/IAbfEzjDXCzjsds"
          },
          ...
      ]
  }
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Add a payout method

POST
https://api.powerly.app
/api/payout-methods/add/{payoutMethod_name}
requires authentication

Associates a new payout method with the authenticated user using the provided data. Optionally handles file uploads (e.g., ID for bank transfer).

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

payoutMethod_name
string
required
Example:
nam

Body Parameters

Example request:
curl --request POST \
    "https://api.powerly.app/api/payout-methods/add/nam" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"fullname\": \"John Doe\",
    \"userType\": \"individual\",
    \"address\": \"123 Main Street, City, Country\",
    \"TIN\": \"123-45-6789\",
    \"id\": \"0501234567\",
    \"email\": \"[email protected]\"
}"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح"
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Update an existing payout method

POST
https://api.powerly.app
/api/payout-methods/update/{payoutMethod_name}
requires authentication

Updates the details of a payout method associated with the authenticated user. Supports file uploads for specific method types (e.g., ID for bank transfer).

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

payoutMethod_name
string
required
Example:
aut

Body Parameters

Example request:
curl --request POST \
    "https://api.powerly.app/api/payout-methods/update/aut" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"fullname\": \"John Doe\",
    \"userType\": \"individual\",
    \"address\": \"123 Main Street, City, Country\",
    \"TIN\": \"123-45-6789\",
    \"id\": \"0501234567\",
    \"email\": \"[email protected]\"
}"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح"
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Remove a payout method

DELETE
https://api.powerly.app
/api/payout-methods/delete/{payoutMethod_name}
requires authentication

Detaches a payout method from the authenticated user.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

payoutMethod_name
string
required
Example:
vero
Example request:
curl --request DELETE \
    "https://api.powerly.app/api/payout-methods/delete/vero" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح"
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Payouts

Get the list of the payouts.

GET
https://api.powerly.app
/api/payouts
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

itemsPerPage
integer

the number of items per page

Example:
13
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/payouts?itemsPerPage=13" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
      "success": 1,
      "msg": "Done!",
      "msg_arabic": "تمت العمليه بنجاح",
      "results": {
          "data": [
              {
                  "id": 15,
                  "payout_id": "1",
                  "payout_method_id": 1,
                  "user_id": 1,
                  "account_id": "voluptas",
                  "amount": "341.67",
                  "status": "paied",
                  "response": "Et consectetur illum.",
                  "created_at": "2024-08-14T17:16:25.000000Z",
                  "updated_at": "2024-08-14T17:16:25.000000Z"
              },

             ...
          ],
          "meta": {
              "per_page": 2,
              "total": 15
          }
      }
  }

Request a payout.

POST
https://api.powerly.app
/api/payouts/request-payout
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://api.powerly.app/api/payouts/request-payout" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"payoutMethod\": 2
}"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح"
}
{
    "success": 0,
    "msg": "Internal system error.",
    "msg_arabic": "خطأ في النظام"
}

Power centers management

List power centers

GET
https://api.powerly.app
/api/charge-points
requires authentication

All power centers owned by the current user.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/charge-points" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[
          {
              "id": 24,
              "title": "test open source API",
              "identifier": "PS_67DF25E57A981",
              "listed": 0,
              "status": "unavailable",
              "earning": "0.00",
              "rating": "0.00"
          },
          ...
      ]
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

List power centers (datatable)

GET
https://api.powerly.app
/api/charge-points/datatable
requires authentication

All power centers owned by the current user.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/charge-points/datatable" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
          "success": 1,
          "msg": "Done!",
          "msg_arabic": "تمت العمليه بنجاح",
          "results": {
              "data": [
                  {
                      "id": 24,
                      "title": "test open source API",
                      "identifier": "PS_67DF25E57A981",
                      "listed": false,
                      "status": "unavailable",
                      "earning": "0.00",
                      "rating": "0.00"
                  },
              ...
              ],
              "meta": {
                  "per_page": 15,
                  "total": 11
              }
          }
      }
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Power center green trace

GET
https://api.powerly.app
/api/charge-points/sustainability
requires authentication

Calculates the CO2 savings based on energy consumed by power centers.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/charge-points/sustainability" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح",
    "results": 34.612
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Get all power centers as GeoJSON

GET
https://api.powerly.app
/api/charge-points/geojson
requires authentication

Returns a GeoJSON representation of all owned power centers.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/charge-points/geojson" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
      "type": "FeatureCollection",
      "features": [
          {
              "type": "Feature",
              "properties": {
                  "id": 24,
                  "identifier": "PS_67DF25E57A981",
                  "category": "EV_CHARGER",
                  "price_unit": "minutes",
                  "title": "test open source API",
                  "description": null,
                  "latitude": "36.64575836483359",
                  "longitude": "2.9176092880736184",
                  "address_line_1": "Tassala",
                  "address_line_2": null,
                  "address_line_3": null,
                  "zipcode": null,
                  "city": null,
                  "state": null,
                  "status": "unavailable",
                  "image": "http://localhost:8080/images/charge-point-1.jpeg",
                  "contact_number": null,
                  "open_time": null,
                  "close_time": null,
                  "user_id": 1,
                  "price": null,
                  "deleted_at": null,
                  "listed": 0,
                  "token": "EV_CHARGER_67DF25E57A988",
                  "session_limit_type": null,
                  "session_limit_value": 0,
                  "created_at": "2025-03-22T21:04:37.000000Z",
                  "updated_at": "2025-03-27T10:13:18.000000Z",
                  "external_details_id": null,
                  "identifier_update": 0,
                  "start_energy_value": 0,
                  "configured": 0,
                  "connected": 0,
                  "busy": 0,
                  "reserved": 0,
                  "charge_point_type_id": null,
                  "charging_site_id": null,
                  "media": [],
                  "icon-image": "pin-cp-out-of-service",
                  "marker_title": "PS_67DF25E57A981\n$0.00",
                  "earning": "0.00"
              },
              "geometry": {
                  "type": "Point",
                  "coordinates": [
                      "2.9176092880736184",
                      "36.64575836483359"
                  ]
              }
          },
          ....
      ]
  }

Export power centers as Excel

GET
https://api.powerly.app
/api/charge-points/export
requires authentication

Downloads all power centers owned by the current user in .xlsx format.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/charge-points/export" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
file.xlsx
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Get a power center by ID

GET
https://api.powerly.app
/api/charge-points/{id}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the powercenter.

Example:
10
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/charge-points/10" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "id": 24,
    "identifier": "PS_67DF25E57A981",
    "category": "EV_CHARGER",
    "title": "test open source API",
    "description": null,
    "latitude": "36.64575836483359",
    "longitude": "2.9176092880736184",
    "listed": false,
    "distance": null,
    "type": null,
    "status": "unavailable",
    "image": "http://localhost:8080/images/charge-point-1.jpeg",
    "session_limit_type": null,
    "session_limit_value": 0,
    "online_status": 0,
    "configured": 0,
    "rating": "0.00",
    "owner_id": 1,
    "address": {
        "address_line_1": "Tassala",
        "address_line_2": null,
        "address_line_3": null,
        "zipcode": null,
        "city": null,
        "state": null
    },
    "token": "EV_CHARGER_67DF25E57A988",
    "contact_number": null,
    "open_time": null,
    "close_time": null,
    "total_earnings": "0.00",
    "total_energy": 0,
    "total_sessions_time": 0,
    "connectors": [
        {
            "id": 3,
            "name": "Type 1 - J1772",
            "icon": "https://storage.powerly.app/connectors/Type 1.png",
            "type": "",
            "max_power": 0,
            "status": "unavailable",
            "number": 1
        }
    ],
    "amenities": [],
    "price_unit": "minutes",
    "orders_count": 0,
    "price": "0.00",
    "price_usd": 0,
    "is_external": false,
    "is_in_use": false,
    "is_reserved": false,
    "available": false,
    "next_reservation_near_now": null,
    "external_details": null,
    "reservation_fee": "68.10",
    "booked_by_current_user": false,
    "used_by_current_user": false,
    "earning": "0.00"
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Get power center statistics

GET
https://api.powerly.app
/api/charge-points/{id}/stats
requires authentication

Returns detailed analytics about the selected power center.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the powercenter.

Example:
1
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/charge-points/1/stats" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "today": {
        "earnings": "0.00",
        "chargingTime": "0.00",
        "energyConsumed": "0.00",
        "ordersNb": 0
    },
    "thisWeek": {
        "earnings": "0.00",
        "chargingTime": "0.00",
        "energyConsumed": "0.00",
        "ordersNb": 0,
        "date": "05-05-2025"
    },
    "thisMonth": {
        "earnings": "0.00",
        "chargingTime": "0.00",
        "energyConsumed": "0.00",
        "ordersNb": 0,
        "date": "12-04-2025"
    }
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Get power center orders

GET
https://api.powerly.app
/api/charge-points/{id}/orders
requires authentication

Returns all orders associated with the selected power center.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the powercenter.

Example:
10
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/charge-points/10/orders" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[
      {
          "id": 198,
          "charge_point_id": 21,
          "charge_point_connector_id": 5,
          "charging_session_time": "15.0000",
          "charging_session_energy": "1408.0000",
          "unit": "minutes",
          "requested_quantity": "6",
          "feedback_exist": 0,
          "status": 1,
          "delivery_date": "2024-09-14 20:19:01",
          "user_id": 17,
          "fleet_id": 58,
          "quantity": "8.0000",
          "price": "0.00",
          "fees": "3.00",
          "earning": 7,
          "unit_price": "2315.56",
          "created_at": "2024-09-14T20:19:01.000000Z",
          "updated_at": "2025-03-04T13:27:56.000000Z",
          "connector_number": null,
          "charge_point": {
              "id": 21,
              "identifier": "tassala-charger",
              "category": "SMART_PLUG",
              "title": "Tassala charger",
              "description": "Nisi culpa alias esse perferendis iste exercitationem amet sunt. Corporis ipsam tempora reiciendis dolorum. Consectetur a repellendus.s\nPerspiciatis architecto adipisci soluta neque laboriosam incidunt sapiente recusandae enim. Consequatur quibusdam minima placeat doloribus unde illo aut. Consectetur sunt quidem id accusamus voluptatum ipsum.\nOmnis animi sed id ducimus vitae nostrum voluptatibus. Corrupti illum animi architecto. Autem culpa a amet.",
              "latitude": "36.630753",
              "longitude": "2.945236",
              "listed": true,
              "distance": null,
              "type": null,
              "status": "booked",
              "image": "http://localhost:8080/images/charge-point-1.jpeg",
              "session_limit_type": null,
              "session_limit_value": 0,
              "online_status": 1,
              "configured": 1,
              "rating": "0.00",
              "owner_id": 1,
              "address": {
                  "address_line_1": "Tessala El Merdja, Algiers, Algeria",
                  "address_line_2": null,
                  "address_line_3": null,
                  "zipcode": "16099",
                  "city": "Algiers",
                  "state": null
              },
              "token": "EV_CHARGER_66A8C86D417A7",
              "contact_number": null,
              "open_time": null,
              "close_time": null,
              "total_earnings": "13212.31",
              "total_energy": 49629,
              "total_sessions_time": 745,
              "connectors": [
                  {
                      "id": 7,
                      "name": "CSS - Type 1",
                      "icon": "https://storage.powerly.app/connector/CCS1.png",
                      "type": "",
                      "max_power": 0,
                      "status": "busy",
                      "number": null
                  }
              ],
              "amenities": [],
              "price_unit": "minutes",
              "orders_count": 24,
              "price": "649355.19",
              "price_usd": 4767.33,
              "is_external": false,
              "is_in_use": false,
              "is_reserved": false,
              "available": true,
              "next_reservation_near_now": null,
              "external_details": null,
              "reservation_fee": "68.10",
              "booked_by_current_user": false,
              "used_by_current_user": true,
              "earning": "0.00"
          },
          "insert_date": "2024-09-14 20:19:01",
          "prices": [],
          "app_fees": "-953.47",
          "elapsed_time": "15.0000"
      },
      ...
  ]
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Get single power center as GeoJSON

GET
https://api.powerly.app
/api/charge-points/{id}/geojson
requires authentication

Returns a GeoJSON representation of a specific power center.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the powercenter.

Example:
8
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/charge-points/8/geojson" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "type": "FeatureCollection",
    "features": [
        {
            "type": "Feature",
            "properties": {
                "id": 24,
                "identifier": "PS_67DF25E57A981",
                "category": "EV_CHARGER",
                "price_unit": "minutes",
                "title": "test open source API",
                "description": null,
                "latitude": "36.64575836483359",
                "longitude": "2.9176092880736184",
                "address_line_1": "Tassala",
                "address_line_2": null,
                "address_line_3": null,
                "zipcode": null,
                "city": null,
                "state": null,
                "status": "unavailable",
                "image": "http://localhost:8080/images/charge-point-1.jpeg",
                "contact_number": null,
                "open_time": null,
                "close_time": null,
                "user_id": 1,
                "price": null,
                "deleted_at": null,
                "listed": 0,
                "token": "EV_CHARGER_67DF25E57A988",
                "session_limit_type": null,
                "session_limit_value": 0,
                "created_at": "2025-03-22T21:04:37.000000Z",
                "updated_at": "2025-03-27T10:13:18.000000Z",
                "external_details_id": null,
                "identifier_update": 0,
                "start_energy_value": 0,
                "configured": 0,
                "connected": 0,
                "busy": 0,
                "reserved": 0,
                "charge_point_type_id": null,
                "charging_site_id": null,
                "media": [],
                "icon-image": "pin-cp-out-of-service",
                "marker_title": "PS_67DF25E57A981\n$0.00",
                "earning": "0.00"
            },
            "geometry": {
                "type": "Point",
                "coordinates": [
                    "2.9176092880736184",
                    "36.64575836483359"
                ]
            }
        }
    ]
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Create a power center

POST
https://api.powerly.app
/api/charge-points
requires authentication

Creates a new power center with the provided attributes.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://api.powerly.app/api/charge-points" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"veritatis\",
    \"identifier\": \"rerum\",
    \"category\": \"et\",
    \"address_line_1\": \"aut\",
    \"address_line_2\": \"nemo\",
    \"address_line_3\": \"qui\",
    \"zipcode\": \"iure\",
    \"city\": \"in\",
    \"state\": \"quos\",
    \"latitude\": 6.348,
    \"longitude\": 29689.05098
}"
Example response:
{
    "price_unit": "minutes",
    "user_id": 1,
    "title": "veniam",
    "identifier": "facilis",
    "token": "EV_CHARGER_68220FE7D87CD",
    "category": "EV_CHARGER",
    "address_line_1": "ut",
    "address_line_2": "est",
    "address_line_3": "amet",
    "zipcode": "rerum",
    "city": "facere",
    "state": "id",
    "latitude": 49.28628,
    "longitude": 144776,
    "updated_at": "2025-05-12T15:12:39.000000Z",
    "created_at": "2025-05-12T15:12:39.000000Z",
    "id": 25
}
{
    "identifier": [
        "The identifier has already been taken."
    ],
    "category": [
        "The selected category is invalid."
    ]
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Update a power center

PUT
https://api.powerly.app
/api/charge-points/{id}
requires authentication

Updates an existing power center.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the powercenter.

Example:
10

Body Parameters

Example request:
curl --request PUT \
    "https://api.powerly.app/api/charge-points/10" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"FastCharge Station 101\",
    \"description\": \"Available 24\\/7 near the main square.\",
    \"latitude\": 25.276987,
    \"longitude\": 55.296249,
    \"address_line_1\": \"123 Main Street\",
    \"address_line_2\": \"Suite 4B\",
    \"address_line_3\": \"Business Complex\",
    \"zipcode\": \"12345\",
    \"city\": \"Dubai\",
    \"state\": \"Dubai\",
    \"contact_number\": \"+971500000000\",
    \"open_time\": \"08:00:00\",
    \"close_time\": \"22:00:00\",
    \"price\": 15.5,
    \"price_currency\": \"AED\",
    \"category\": \"EV_CHARGER\",
    \"amenities\": [
        1
    ],
    \"connectors\": [
        {
            \"id\": 1,
            \"number\": 2
        },
        {
            \"id\": 3,
            \"number\": 1
        }
    ],
    \"price_unit\": \"minutes\",
    \"session_limit_value\": 60,
    \"session_limit_type\": \"minutes\",
    \"listed\": false,
    \"type\": 2
}"
Example response:
{
    "price_unit": "minutes",
    "user_id": 1,
    "title": "veniam",
    "identifier": "facilis",
    "token": "EV_CHARGER_68220FE7D87CD",
    "category": "EV_CHARGER",
    "address_line_1": "ut",
    "address_line_2": "est",
    "address_line_3": "amet",
    "zipcode": "rerum",
    "city": "facere",
    "state": "id",
    "latitude": 49.28628,
    "longitude": 144776,
    "updated_at": "2025-05-12T15:12:39.000000Z",
    "created_at": "2025-05-12T15:12:39.000000Z",
    "id": 25
}
{"success": 0,"error": "You don't have permissions to access localhost on this server.}
{
    "success": 0,
    "message": "The price field must have 2 decimal places.",
    "errors": {
        "price": [
            "The price field must have 2 decimal places."
        ],
        "type": [
            "The selected type is invalid."
        ],
        "amenities.0": [
            "The selected amenities.0 is invalid."
        ],
        "connectors.0.id": [
            "The selected connectors.0.id is invalid."
        ]
    }
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Delete a power center

DELETE
https://api.powerly.app
/api/charge-points/{id}
requires authentication

Deletes the specified power center.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the powercenter.

Example:
12
Example request:
curl --request DELETE \
    "https://api.powerly.app/api/charge-points/12" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "success": 1,
    "msg": "done",
    "msg_arabic": "تمت العمليه بنجاح"
}
{
    "error": "Failed to delete Chargepoint"
}
{"success": 0,"error": "You don't have permissions to access localhost on this server.}
{
    "error": "Invalid Resource Requested"
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Range prices CRUD


Get a list of range prices for a given power center.

GET
https://api.powerly.app
/api/charge-points/{charge_point_id}/charge-point-prices
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

charge_point_id
string
required

The ID of the charge point.

Example:
adipisci
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/charge-points/adipisci/charge-point-prices" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
      "success": 1,
      "msg": "Done!",
      "msg_arabic": "تمت العمليه بنجاح",
      "results": [
          {
              "id": 1,
              "price": "649310.24",
              "startingTime": "10:00",
              "endingTime": "13:00"
          },
         ...
      ]
  }
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Store a new range price for a power center.

POST
https://api.powerly.app
/api/charge-points/{charge_point_id}/charge-point-prices
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

charge_point_id
string
required

The ID of the charge point.

Example:
aut

Body Parameters

Example request:
curl --request POST \
    "https://api.powerly.app/api/charge-points/aut/charge-point-prices" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"price\": 258751905.3,
    \"startingTime\": \"09:02\",
    \"endingTime\": \"09:02\"
}"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح",
    "results": {
        "id": 5,
        "price": "32.15",
        "startingTime": "07:57",
        "endingTime": "08:57"
    }
}
{
    "success": 0,
    "message": "The price must be a number.",
    "errors": {
        "price": [
            "The price must be a number."
        ],
        "ending_time": [
            "The ending time does not match the format H:i.",
            "The ending time must be a date after starting time."
        ]
    }
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Retrieve a specific range price.

GET
https://api.powerly.app
/api/charge-point-prices/{id}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the charge point price.

Example:
1
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/charge-point-prices/1" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح",
    "results": {
        "id": 1,
        "price": "649310.24",
        "startingTime": "10:00",
        "endingTime": "13:00"
    }
}
{"success": 0,"error": "You don't have permissions to access localhost on this server.}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Update an existing range price.

PUT
PATCH
https://api.powerly.app
/api/charge-point-prices/{id}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the charge point price.

Example:
1

Body Parameters

Example request:
curl --request PUT \
    "https://api.powerly.app/api/charge-point-prices/1" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"price\": 258.284235,
    \"startingTime\": \"09:02\",
    \"endingTime\": \"09:02\"
}"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح",
    "results": {
        "id": 1,
        "price": "694.67",
        "startingTime": "08:19",
        "endingTime": "09:19"
    }
}
{"success": 0,"error": "You don't have permissions to access localhost on this server.}
{
    "success": 0,
    "message": "The price must be a number.",
    "errors": {
        "price": [
            "The price must be a number."
        ],
        "ending_time": [
            "The ending time does not match the format H:i.",
            "The ending time must be a date after starting time."
        ]
    }
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Delete a range price.

DELETE
https://api.powerly.app
/api/charge-point-prices/{id}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the charge point price.

Example:
1
Example request:
curl --request DELETE \
    "https://api.powerly.app/api/charge-point-prices/1" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح"
}
{"success": 0,"error": "You don't have permissions to access localhost on this server.}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Groups CRUD


Groups list. (datatable)

GET
https://api.powerly.app
/api/charge-point-groups/datatable
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

search
string

Optional search query to filter groups.

Example:
non
itemsPerPage
integer

Number of groups per page.

Example:
2
power-centers
boolean

If set to true, includes associated power centers in the response.

Example:
1
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/charge-point-groups/datatable?search=non&itemsPerPage=2&power-centers=1" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
      "success": 1,
      "msg": "Done!",
      "msg_arabic": "تمت العمليه بنجاح",
      "results": {
          "data": [
              {
                  "id": 935,
                  "name": "Voluptatem qui cum.",
                  "companyName": null,
                  "licenseCode": null,
                  "chargePointsNumber": 0,
                  "chargePointsIds": [],
                  "power_centers": []
              },
              ...
          ],
          "meta": {
              "per_page": 15,
              "total": 1083
          }
      }
  }

 @response 500 {"success": 0,"msg": "Unauthenticated.","msg_arabic": "Unauthenticated."}

Groups list.

GET
https://api.powerly.app
/api/charge-point-groups
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

power-centers
boolean

If set to true, includes associated power centers in the response.

Example:
1
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/charge-point-groups?power-centers=1" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
      "success": 1,
      "msg": "Done!",
      "msg_arabic": "تمت العمليه بنجاح",
      "results": {
          "data": [
              {
                  "id": 935,
                  "name": "Voluptatem qui cum.",
                  "companyName": null,
                  "licenseCode": null,
                  "chargePointsNumber": 0,
                  "chargePointsIds": [],
                  "power_centers": []
              },
              ...
          ],
          "meta": {
              "per_page": 15,
              "total": 1083
          }
      }
  }

 @response 500 {"success": 0,"msg": "Unauthenticated.","msg_arabic": "Unauthenticated."}

Create a new group.

POST
https://api.powerly.app
/api/charge-point-groups
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://api.powerly.app/api/charge-point-groups" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"yarbecukxoreskiapbwavywqvbyczkdthbxtdfwekuvu\",
    \"companyName\": \"tovcxnsnqshehtmhogstnqsaqzmdzybxpkvipnlhvacfzdskcnoiorplhmzhfpmfzbdluasuuuprlgraecvncadte\",
    \"licenseCode\": \"etqdctvjmoqaymopkcdwnxyexlxdrznpxpugxtidcuufyyfllhczbvfnt\",
    \"chargePoints\": [
        \"quam\"
    ]
}"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح",
    "results": {
        "id": 1,
        "name": "Iusto sint enim doloremque.",
        "companyName": null,
        "licenseCode": null,
        "chargePointsNumber": 0,
        "chargePointsIds": []
    }
}
{
  "success": 0,
  "message": "Validation error",
  "errors": {
    "name": ["The name field is required."]
  }
}
 @response 500 {"success": 0,"msg": "Unauthenticated.","msg_arabic": "Unauthenticated."}

Get details of a specific group.

GET
https://api.powerly.app
/api/charge-point-groups/{id}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the charge point group.

Example:
1

Query Parameters

power-centers
boolean

If set to true, includes associated power centers in the response.

Example request:
curl --request GET \
    --get "https://api.powerly.app/api/charge-point-groups/1?power-centers=" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
      "success": 1,
      "msg": "Done!",
      "msg_arabic": "تمت العمليه بنجاح",
      "results": {
          "id": 1,
          "name": "Iusto sint enim doloremque.",
          "companyName": null,
          "licenseCode": null,
          "chargePointsNumber": 0,
          "chargePointsIds": []
      }
  }

 @response 500 {"success": 0,"msg": "Unauthenticated.","msg_arabic": "Unauthenticated."}

Update an existing group.

PUT
PATCH
https://api.powerly.app
/api/charge-point-groups/{id}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the charge point group.

Example:
1

Body Parameters

Example request:
curl --request PUT \
    "https://api.powerly.app/api/charge-point-groups/1" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"ibzkgi\",
    \"companyName\": \"rbgwdlnztjnhgxezlsavtwyfakiulrjaorxsxpvxwxkjpdtrwkucwdztbvlxrywyjcrozzrlamexos\",
    \"licenseCode\": \"qfcetodiabxhlirzngual\",
    \"chargePoints\": [
        \"aperiam\"
    ]
}"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح",
    "results": {
        "id": 1,
        "name": "Iusto sint enim doloremque.",
        "companyName": null,
        "licenseCode": null,
        "chargePointsNumber": 0,
        "chargePointsIds": []
    }
}
{
    "success": 0,
    "message": "The API key is invalid or missing."
}
{"success": 0,"error": "You don't have permissions to access localhost on this server.}
{
    "success": 0,
    "message": "Validation failed.",
    "errors": {
        "name": [
            "The name field is required."
        ]
    }
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Delete a group.

DELETE
https://api.powerly.app
/api/charge-point-groups/{id}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the charge point group.

Example:
1
Example request:
curl --request DELETE \
    "https://api.powerly.app/api/charge-point-groups/1" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح"
}
{"success": 0,"error": "You don't have permissions to access localhost on this server.}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Sites CRUD


Sites list (datatable).

GET
https://api.powerly.app
/api/charging-sites/datatable
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

search
string

Optional search query to filter sites.

Example:
esse
itemsPerPage
integer

Number of sites per page. Defaults to 15.

Example:
19
power-centers
boolean

If set to true, includes associated power centers in the response.

Example:
1
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/charging-sites/datatable?search=esse&itemsPerPage=19&power-centers=1" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
      "success": 1,
      "msg": "Done!",
      "msg_arabic": "تمت العمليه بنجاح",
      "results": {
          "data": [
              {
                  "id": 164,
                  "categoryId": null,
                  "name": "Site 11",
                  "status": true,
                  "active": true,
                  "startDate": null,
                  "endDate": null,
                  "integrationCode": null,
                  "chargePointIds": [
                      20,
                      21
                  ],
                  "address": {
                      "id": 161,
                      "latitude": "28.608637026617",
                      "longitude": "14.589843749997",
                      "country": {
                          "id": 195,
                          "name": "Algeria"
                      },
                      "state": "test",
                      "city": "Douera",
                      "zipcode": "16049",
                      "address_line_1": "CITY 100 LOGS DEKAKNA DOUERA",
                      "address_line_2": null,
                      "address_line_3": null
                  },
                  "power_centers": []
              },
              ...
          ],
          "meta": {
              "per_page": 15,
              "total": 108
          }
      }
  }
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Sites list.

GET
https://api.powerly.app
/api/charging-sites
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

power-centers
boolean

If set to true, includes associated power centers in the response.

Example:
1
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/charging-sites?power-centers=1" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
      "success": 1,
      "msg": "Done!",
      "msg_arabic": "تمت العمليه بنجاح",
      "results": [
          {
              "id": 164,
              "categoryId": null,
              "name": "Site 11",
              "status": true,
              "active": true,
              "startDate": null,
              "endDate": null,
              "integrationCode": null,
              "chargePointIds": [
                  20,
                  21
              ],
              "address": {
                 "id": 161,
                 "latitude": "28.608637026617",
                 "longitude": "14.589843749997",
                 "country": {
                     "id": 195,
                     "name": "Algeria"
                 },
                 "state": "test",
                 "city": "Douera",
                 "zipcode": "16049",
                 "address_line_1": "CITY 100 LOGS DEKAKNA DOUERA",
                 "address_line_2": null,
                 "address_line_3": null
             },
             "power_centers": []
          },
          ...
      ]
  }
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Create a new site.

POST
https://api.powerly.app
/api/charging-sites
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://api.powerly.app/api/charging-sites" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"otipmmmbmliixltzvhqiocovcnekwvouoivkyvdmfangodfbqtzivvdgymejvozyslcmmccwifvly\",
    \"category\": 12,
    \"status\": false,
    \"startDate\": \"2013-07-29\",
    \"endDate\": \"2109-05-30\",
    \"integrationCode\": \"consequuntur\",
    \"chargePoints\": [
        9
    ],
    \"address\": {
        \"country_id\": 10,
        \"state\": \"sunt\",
        \"city\": \"possimus\",
        \"zipcode\": \"gjdql\",
        \"address_line_1\": \"ex\",
        \"address_line_2\": \"saepe\",
        \"latitude\": 49471.7,
        \"longitude\": 6723614.1
    }
}"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح",
    "results": {
        "id": 159,
        "categoryId": 51,
        "name": "test",
        "status": true,
        "active": true,
        "startDate": "2024-10-10",
        "endDate": "2024-10-11",
        "integrationCode": null,
        "chargePointIds": [],
        "address": {
            "id": 161,
            "latitude": "28.608637026617",
            "longitude": "14.589843749997",
            "country": {
                "id": 195,
                "name": "Algeria"
            },
            "state": "test",
            "city": "Douera",
            "zipcode": "16049",
            "address_line_1": "CITY 100 LOGS DEKAKNA DOUERA",
            "address_line_2": null,
            "address_line_3": null
        },
        "power_centers": []
    }
}
{
    "success": 0,
    "message": "Validation error.",
    "errors": {
        "name": [
            "The name field is required."
        ]
    }
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Get details of a specific site.

GET
https://api.powerly.app
/api/charging-sites/{id}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the charging site.

Example:
1

Query Parameters

power-centers
boolean

If set to true, includes associated power centers in the response.

Example request:
curl --request GET \
    --get "https://api.powerly.app/api/charging-sites/1?power-centers=" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح",
    "results": {
        "id": 159,
        "categoryId": 51,
        "name": "test",
        "status": true,
        "active": true,
        "startDate": "2024-10-10",
        "endDate": "2024-10-11",
        "integrationCode": null,
        "chargePointIds": [],
        "address": {
            "id": 161,
            "latitude": "28.608637026617",
            "longitude": "14.589843749997",
            "country": {
                "id": 195,
                "name": "Algeria"
            },
            "state": "test",
            "city": "Douera",
            "zipcode": "16049",
            "address_line_1": "CITY 100 LOGS DEKAKNA DOUERA",
            "address_line_2": null,
            "address_line_3": null
        },
        "power_centers": []
    }
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Update an existing site.

PUT
PATCH
https://api.powerly.app
/api/charging-sites/{id}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the charging site.

Example:
1

Body Parameters

Example request:
curl --request PUT \
    "https://api.powerly.app/api/charging-sites/1" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"eayv\",
    \"category\": 7,
    \"status\": false,
    \"startDate\": \"2016-10-17\",
    \"endDate\": \"2071-01-08\",
    \"integrationCode\": \"esse\",
    \"chargePoints\": [
        6
    ],
    \"address\": {
        \"country_id\": 5,
        \"state\": \"sit\",
        \"city\": \"qui\",
        \"zipcode\": \"ykise\",
        \"address_line_1\": \"porro\",
        \"address_line_2\": \"doloribus\",
        \"latitude\": 2496324.963275,
        \"longitude\": 553.91522
    }
}"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح",
    "results": {
        "id": 159,
        "categoryId": 51,
        "name": "test",
        "status": true,
        "active": true,
        "startDate": "2024-10-10",
        "endDate": "2024-10-11",
        "integrationCode": null,
        "chargePointIds": [],
        "address": {
            "id": 161,
            "latitude": "28.608637026617",
            "longitude": "14.589843749997",
            "country": {
                "id": 195,
                "name": "Algeria"
            },
            "state": "test",
            "city": "Douera",
            "zipcode": "16049",
            "address_line_1": "CITY 100 LOGS DEKAKNA DOUERA",
            "address_line_2": null,
            "address_line_3": null
        },
        "power_centers": []
    }
}
{"success": 0,"error": "You don't have permissions to access localhost on this server.}
{
    "success": 0,
    "message": "Validation error.",
    "errors": {
        "name": [
            "The name field is required."
        ]
    }
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Delete a site.

DELETE
https://api.powerly.app
/api/charging-sites/{id}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the charging site.

Example:
1
Example request:
curl --request DELETE \
    "https://api.powerly.app/api/charging-sites/1" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح"
}
{"success": 0,"error": "You don't have permissions to access localhost on this server.}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Workers CRUD

Workers list. (datatable)

GET
https://api.powerly.app
/api/workers/datatable
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

search
string

Optional search query to filter categories.

Example:
ducimus
itemsPerPage
integer

Number of items per page (-1 for all).

Example:
11
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/workers/datatable?search=ducimus&itemsPerPage=11" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
      "success": 1,
      "msg": "Done!",
      "msg_arabic": "تمت العمليه بنجاح",
      "results": {
          "data": [
              {
                   "id":34,
                   "first_name":"service",
                   "last_name":"test 2",
                   "name":"service test 2",
                   "email":"[email protected]",
                   "rfid":"123131321123",
                   "expire_at":"2025-03-31",
                   "cash_on_hands":"0"
                },
              ...
          ],
          "meta": {
              "per_page": 15,
              "total": 55
          }
      }
 }
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Reset a worker's balance.

GET
https://api.powerly.app
/api/workers/{worker_id}/reset-balance
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

worker_id
integer
required

The ID of the worker.

Example:
1
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/workers/1/reset-balance" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح"
}
{"success": 0,"error": "You don't have permissions to access localhost on this server.}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Workers list.

GET
https://api.powerly.app
/api/workers
requires authentication

All workers owned by the current user.

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

search
string

Optional search query to filter workers.

Example:
temporibus
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/workers?search=temporibus" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
      "success": 1,
      "msg": "Done!",
      "msg_arabic": "تمت العمليه بنجاح",
      "results": {
          "data": [
              {
                  "id": 33,
                  "first_name": "service",
                  "last_name": "test 1",
                  "name": "service test 1",
                  "email": "[email protected]",
                  "rfid": "123131321122",
                  "expire_at": "2025-03-31",
                  "cash_on_hands": "0"
              },
              ...
          ],
          "meta": {
              "per_page": -1,
              "total": 3
          }
      }
  }
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Create a new worker.

POST
https://api.powerly.app
/api/workers
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://api.powerly.app/api/workers" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"first_name\": \"John\",
    \"last_name\": \"Doe\",
    \"email\": \"[email protected]\",
    \"rfid\": \"123456789012\",
    \"expire_at\": \"2025-12-31\"
}"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح",
    "results": {
        "id": 1,
        "first_name": "yasser",
        "last_name": "belhimer",
        "name": "yasser belhimer",
        "email": "[email protected]",
        "rfid": null,
        "expire_at": "1970-01-01",
        "cash_on_hands": null
    }
}
{
    "success": 0,
    "message": "The firstname field is required.",
    "errors": {
        "first_name": [
            "The firstname field is required."
        ],
        "last_name": [
            "The lastname field is required."
        ],
        "email": [
            "The e-mail address field is required."
        ],
        "rfid": [
            "The rfid field is required."
        ],
        "expire_at": [
            "The expiration date field is required."
        ]
    }
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Get details of a specific worker.

GET
https://api.powerly.app
/api/workers/{id}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the worker.

Example:
1
Example request:
curl --request GET \
    --get "https://api.powerly.app/api/workers/1" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح",
    "results": {
        "id": 1,
        "first_name": "yasser",
        "last_name": "belhimer",
        "name": "yasser belhimer",
        "email": "[email protected]",
        "rfid": null,
        "expire_at": "1970-01-01",
        "cash_on_hands": null
    }
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Update an existing worker.

PUT
PATCH
https://api.powerly.app
/api/workers/{id}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the worker.

Example:
1

Body Parameters

Example request:
curl --request PUT \
    "https://api.powerly.app/api/workers/1" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"first_name\": \"John\",
    \"last_name\": \"Doe\",
    \"email\": \"[email protected]\",
    \"rfid\": \"123456789012\",
    \"expire_at\": \"2025-12-31\"
}"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح",
    "results": {
        "id": 1,
        "first_name": "yasser",
        "last_name": "belhimer",
        "name": "yasser belhimer",
        "email": "[email protected]",
        "rfid": null,
        "expire_at": "1970-01-01",
        "cash_on_hands": null
    }
}
{"success": 0,"error": "You don't have permissions to access localhost on this server.}
{
    "success": 0,
    "message": "The firstname field is required.",
    "errors": {
        "first_name": [
            "The firstname field is required."
        ],
        "last_name": [
            "The lastname field is required."
        ],
        "email": [
            "The e-mail address field is required."
        ],
        "rfid": [
            "The rfid field is required."
        ],
        "expire_at": [
            "The expiration date field is required."
        ]
    }
}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}

Delete a worker.

DELETE
https://api.powerly.app
/api/workers/{id}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_BEARER_TOKEN}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
integer
required

The ID of the worker.

Example:
1
Example request:
curl --request DELETE \
    "https://api.powerly.app/api/workers/1" \
    --header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "success": 1,
    "msg": "Done!",
    "msg_arabic": "تمت العمليه بنجاح"
}
{"success": 0,"error": "You don't have permissions to access localhost on this server.}
{
    "success": 0,
    "msg": "Unauthenticated.",
    "msg_arabic": "Unauthenticated."
}