openapi: 3.0.3
info:
  title: 'Dashboard API documentation'
  description: ''
  version: 1.0.0
servers:
  -
    url: 'https://api.powerly.app'
paths:
  /api/v3/auth/login:
    post:
      summary: Login
      operationId: login
      description: "Login api endpoint to authorize the user by email and password.\n<aside class=\"warning\">\nIf the user has not yet confirmed their email address, you will receive an HTTP status 202 and a token to confirm the email address.\n</aside>"
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    id: 135231
                    status: 1
                    customer_type: C
                    first_name: ''
                    last_name: ''
                    full_name: ''
                    contact_number: '966977977974'
                    email: someemail@gasable.com
                    email_verified: 1
                    balance: '0.00'
                    access_token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnYXNhYmxlLnRlc3QiLCJpYXQiOjE3MTYwMjc4ODQsImV4cCI6MTc0NzU2Mzg4NCwiZGF0YSI6eyJ1c2VyX2lkIjoxMzUyMzEsInVzZXJfdHlwZSI6MX19.NlcGZdzy4kKACb1fJSSxL-VVJIwvvTbTqtz0_Rvv3_E
                  success: 1
                  message: Done!
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 135231
                      status:
                        type: integer
                        example: 1
                      customer_type:
                        type: string
                        example: C
                      first_name:
                        type: string
                        example: ''
                      last_name:
                        type: string
                        example: ''
                      full_name:
                        type: string
                        example: ''
                      contact_number:
                        type: string
                        example: '966977977974'
                      email:
                        type: string
                        example: someemail@gasable.com
                      email_verified:
                        type: integer
                        example: 1
                      balance:
                        type: string
                        example: '0.00'
                      access_token:
                        type: string
                        example: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnYXNhYmxlLnRlc3QiLCJpYXQiOjE3MTYwMjc4ODQsImV4cCI6MTc0NzU2Mzg4NCwiZGF0YSI6eyJ1c2VyX2lkIjoxMzUyMzEsInVzZXJfdHlwZSI6MX19.NlcGZdzy4kKACb1fJSSxL-VVJIwvvTbTqtz0_Rvv3_E
                  success:
                    type: integer
                    example: 1
                  message:
                    type: string
                    example: Done!
        202:
          description: 'Verify email'
          content:
            application/json:
              schema:
                type: object
                example:
                  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
                properties:
                  success:
                    type: integer
                    example: 1
                  message:
                    type: string
                    example: 'Please enter the verification code to continue.'
                  data:
                    type: object
                    properties:
                      require_verification:
                        type: integer
                        example: 1
                      verification_token:
                        type: string
                        example: 27ee3f39-8768-4bc3-a6ae-440d87660b02
                      can_resend_in_seconds:
                        type: integer
                        example: 60
                      available_attempts:
                        type: integer
                        example: 3
        422:
          description: 'Invalid credentials'
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  message: 'The request data did not pass validation.'
                  errors:
                    email:
                      - 'These credentials do not match our records.'
                properties:
                  success:
                    type: integer
                    example: 0
                  message:
                    type: string
                    example: 'The request data did not pass validation.'
                  errors:
                    type: object
                    properties:
                      email:
                        type: array
                        example:
                          - 'These credentials do not match our records.'
                        items:
                          type: string
      tags:
        - Auth
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: 'The email address of the customer. Must exist in the system and not be soft-deleted. Must be a valid email address. The <code>email</code> of an existing record in the users table. Must be at least 5 characters. Must not be greater than 255 characters.'
                  example: user@example.com
                  nullable: false
                password:
                  type: string
                  description: "The customer's password. Minimum 6 characters. Must be at least 6 characters. Must not be greater than 255 characters."
                  example: secret123
                  nullable: false
                device_imei:
                  type: string
                  description: "The IMEI of the customer's device (optional)."
                  example: '123456789012345'
                  nullable: true
                device_token:
                  type: string
                  description: 'The device token for push notifications (optional).'
                  example: abcdef1234567890
                  nullable: true
              required:
                - email
                - password
      security: []
  /api/v3/auth/password/reset:
    post:
      summary: 'Reset password'
      operationId: resetPassword
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Auth
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: 'The email address of the user. Must exist in the system. Must be a valid email address. The <code>email</code> of an existing record in the users table. Must be at least 5 characters. Must not be greater than 255 characters.'
                  example: user@example.com
                  nullable: false
              required:
                - email
  /api/v3/auth/password/reset/resend:
    post:
      summary: 'Resend verification code'
      operationId: resendVerificationCode
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Auth
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                verification_token:
                  type: string
                  description: 'A valid UUID token previously generated for the reset password process. Must exist in the `verifications` table with `succeed = 0` and `action = reset_password`. Must be a valid UUID.  The <code>public_token</code> of an existing record in the verifications table.'
                  example: 123e4567-e89b-12d3-a456-426614174000
                  nullable: false
              required:
                - verification_token
  /api/v3/auth/password/reset/verify:
    post:
      summary: 'Verify reset password'
      operationId: verifyResetPassword
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Auth
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                verification_token:
                  type: string
                  description: "A UUID token sent to the user's email. Must exist in the `verifications` table with `succeed = 0` and `action = reset_password`. Must be a valid UUID.  The <code>public_token</code> of an existing record in the verifications table."
                  example: 123e4567-e89b-12d3-a456-426614174000
                  nullable: false
                verification_code:
                  type: string
                  description: "A 4-digit numeric code sent to the user's email. Must match the code associated with the verification token. Must match the regex /^[0-9]+$/. Must be at least 4 characters. Must not be greater than 4 characters."
                  example: '1234'
                  nullable: false
              required:
                - verification_token
                - verification_code
  /api/v3/auth/email/verify:
    post:
      summary: 'Verify email'
      operationId: verifyEmail
      description: "To verify the email, you will need the verification_token received in response to the registration request,\nand the verification_code sent to the user's email."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    id: 135231
                    customer_type: C
                    first_name: ''
                    last_name: ''
                    full_name: ''
                    contact_number: '966977977974'
                    email: someemail@gasable.com
                    balance: '0.00'
                    access_token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnYXNhYmxlLnRlc3QiLCJpYXQiOjE3MTYwMjc4ODQsImV4cCI6MTc0NzU2Mzg4NCwiZGF0YSI6eyJ1c2VyX2lkIjoxMzUyMzEsInVzZXJfdHlwZSI6MX19.NlcGZdzy4kKACb1fJSSxL-VVJIwvvTbTqtz0_Rvv3_E
                  success: 1
                  message: Done!
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 135231
                      customer_type:
                        type: string
                        example: C
                      first_name:
                        type: string
                        example: ''
                      last_name:
                        type: string
                        example: ''
                      full_name:
                        type: string
                        example: ''
                      contact_number:
                        type: string
                        example: '966977977974'
                      email:
                        type: string
                        example: someemail@gasable.com
                      balance:
                        type: string
                        example: '0.00'
                      access_token:
                        type: string
                        example: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnYXNhYmxlLnRlc3QiLCJpYXQiOjE3MTYwMjc4ODQsImV4cCI6MTc0NzU2Mzg4NCwiZGF0YSI6eyJ1c2VyX2lkIjoxMzUyMzEsInVzZXJfdHlwZSI6MX19.NlcGZdzy4kKACb1fJSSxL-VVJIwvvTbTqtz0_Rvv3_E
                  success:
                    type: integer
                    example: 1
                  message:
                    type: string
                    example: Done!
        422:
          description: 'Invalid data'
          content:
            application/json:
              schema:
                type: object
                example:
                  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.'
                properties:
                  data:
                    type: object
                    properties:
                      require_verification:
                        type: integer
                        example: 1
                      verification_token:
                        type: string
                        example: 27ee3f39-8768-4bc3-a6ae-440d87660b02
                      can_resend_in_seconds:
                        type: integer
                        example: 60
                      available_attempts:
                        type: integer
                        example: 2
                  success:
                    type: integer
                    example: 0
                  message:
                    type: string
                    example: 'Incorrect verification code.'
      tags:
        - Auth
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                verification_token:
                  type: string
                  description: "A UUID token sent to the user's email. Must exist in the `verifications` table with `succeed = 0` and `action = reset_password`. Must be a valid UUID.  The <code>public_token</code> of an existing record in the verifications table."
                  example: 123e4567-e89b-12d3-a456-426614174000
                  nullable: false
                verification_code:
                  type: string
                  description: "A 4-digit numeric code sent to the user's email. Must match the code associated with the verification token. Must match the regex /^[0-9]+$/. Must be at least 4 characters. Must not be greater than 4 characters."
                  example: '1234'
                  nullable: false
              required:
                - verification_token
                - verification_code
  /api/v3/auth/email/resend-verification:
    post:
      summary: 'Resend verification code'
      operationId: resendVerificationCode
      description: "You can resend the verification code to the user's email address.\n\nNote that resending the code reduces the number of allowable code attempts, thereby increasing the time until the next code can be sent.\n\n<aside class=\"warning\">This is only possible while the verification code is active and the user still has attempts.\n\nYou will receive a 429 error if the user has not waited long enough before requesting the verification code to be resent.\n</aside>"
      parameters: []
      responses:
        202:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  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
                properties:
                  success:
                    type: integer
                    example: 1
                  message:
                    type: string
                    example: 'Please enter the verification code to continue.'
                  data:
                    type: object
                    properties:
                      require_verification:
                        type: integer
                        example: 1
                      verification_token:
                        type: string
                        example: 27ee3f39-8768-4bc3-a6ae-440d87660b02
                      can_resend_in_seconds:
                        type: integer
                        example: 60
                      available_attempts:
                        type: integer
                        example: 3
      tags:
        - Auth
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                verification_token:
                  type: string
                  description: 'A valid UUID token previously generated for the reset password process. Must exist in the `verifications` table with `succeed = 0` and `action = reset_password`. Must be a valid UUID.  The <code>public_token</code> of an existing record in the verifications table.'
                  example: 123e4567-e89b-12d3-a456-426614174000
                  nullable: false
              required:
                - verification_token
  /api/v3/auth/logout:
    post:
      summary: Logout
      operationId: logout
      description: "Use this api endpoint when you logout users to delete the access token.\nYou need to provide device_imei to dissociate the device."
      parameters: []
      responses:
        204:
          description: ''
      tags:
        - Auth
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                device_imei:
                  type: string
                  description: 'Device IMEI.'
                  example: quaerat
                  nullable: false
  /api/user:
    get:
      summary: 'User data'
      operationId: userData
      description: ''
      parameters: []
      responses:
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: 'Internal system error.'
                  msg_arabic: 'خطأ في النظام'
                  trace: 'Internal system error.'
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: 'Internal system error.'
                  msg_arabic:
                    type: string
                    example: 'خطأ في النظام'
                  trace:
                    type: string
                    example: 'Internal system error.'
      tags:
        - 'Authenticated user data'
  /api/user/balance:
    get:
      summary: Balance
      operationId: balance
      description: ''
      parameters: []
      responses:
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: 'Internal system error.'
                  msg_arabic: 'خطأ في النظام'
                  trace: 'Internal system error.'
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: 'Internal system error.'
                  msg_arabic:
                    type: string
                    example: 'خطأ في النظام'
                  trace:
                    type: string
                    example: 'Internal system error.'
      tags:
        - 'Authenticated user data'
  /api/user/payout-methods:
    get:
      summary: 'Payout methods'
      operationId: payoutMethods
      description: ''
      parameters: []
      responses:
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: 'Internal system error.'
                  msg_arabic: 'خطأ في النظام'
                  trace: 'Internal system error.'
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: 'Internal system error.'
                  msg_arabic:
                    type: string
                    example: 'خطأ في النظام'
                  trace:
                    type: string
                    example: 'Internal system error.'
      tags:
        - 'Authenticated user data'
  /api/stats:
    get:
      summary: 'User insights'
      operationId: userInsights
      description: ''
      parameters: []
      responses:
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: 'Internal system error.'
                  msg_arabic: 'خطأ في النظام'
                  trace: 'Internal system error.'
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: 'Internal system error.'
                  msg_arabic:
                    type: string
                    example: 'خطأ في النظام'
                  trace:
                    type: string
                    example: 'Internal system error.'
      tags:
        - 'Authenticated user data'
  /api/user/permissions:
    get:
      summary: Permissions
      operationId: permissions
      description: ''
      parameters: []
      responses:
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: 'Internal system error.'
                  msg_arabic: 'خطأ في النظام'
                  trace: 'Internal system error.'
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: 'Internal system error.'
                  msg_arabic:
                    type: string
                    example: 'خطأ في النظام'
                  trace:
                    type: string
                    example: 'Internal system error.'
      tags:
        - 'Authenticated user data'
  /api/user/roles:
    get:
      summary: Roles
      operationId: roles
      description: ''
      parameters: []
      responses:
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: 'Internal system error.'
                  msg_arabic: 'خطأ في النظام'
                  trace: 'Internal system error.'
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: 'Internal system error.'
                  msg_arabic:
                    type: string
                    example: 'خطأ في النظام'
                  trace:
                    type: string
                    example: 'Internal system error.'
      tags:
        - 'Authenticated user data'
  '/api/categories/{type}/datatable':
    get:
      summary: 'Categories list  (datatable)'
      operationId: categoriesListdatatable
      description: 'Get a list of categories.'
      parameters:
        -
          in: query
          name: search
          description: 'Optional search query to filter categories.'
          example: repellendus
          required: false
          schema:
            type: string
            description: 'Optional search query to filter categories.'
            example: repellendus
            nullable: false
        -
          in: query
          name: itemsPerPage
          description: 'Number of items per page (-1 for all).'
          example: 7
          required: false
          schema:
            type: integer
            description: 'Number of items per page (-1 for all).'
            example: 7
            nullable: false
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n      \"success\": 1,\n      \"msg\": \"Done!\",\n      \"msg_arabic\": \"تمت العمليه بنجاح\",\n      \"results\": {\n          \"data\": [\n              {\n                  \"id\": 58,\n                  \"type\": \"charging-site\",\n                  \"name\": \"maximes\",\n                  \"color\": \"#D2B48C\"\n              },\n              {\n                  \"id\": 57,\n                  \"type\": \"charging-site\",\n                  \"name\": \"tests\",\n                  \"color\": \"#A52A2A\"\n              },\n              ...\n          ],\n          \"meta\": {\n              \"per_page\": 15,\n              \"total\": 55\n          }\n      }\n }"
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Categories CRUD'
    parameters:
      -
        in: path
        name: type
        description: 'type of the category.'
        example: charging-site
        required: true
        schema:
          type: string
  '/api/categories/{type}':
    get:
      summary: 'Categories list'
      operationId: categoriesList
      description: 'Get all categories.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n      \"success\": 1,\n      \"msg\": \"Done!\",\n      \"msg_arabic\": \"تمت العمليه بنجاح\",\n      \"results\": [\n          {\n              \"id\": 58,\n              \"type\": \"charging-site\",\n              \"name\": \"maximes\",\n              \"color\": \"#D2B48C\"\n          },\n          {\n              \"id\": 57,\n              \"type\": \"charging-site\",\n              \"name\": \"tests\",\n              \"color\": \"#A52A2A\"\n          },\n          ...\n      ]\n  }"
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Categories CRUD'
    parameters:
      -
        in: path
        name: type
        description: 'type of the category.'
        example: charging-site
        required: true
        schema:
          type: string
  /api/categories:
    post:
      summary: 'Create a new category.'
      operationId: createANewCategory
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                  results:
                    id: 60
                    type: charging-site
                    name: Electronics
                    color: '#A9A9A9'
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
                  results:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 60
                      type:
                        type: string
                        example: charging-site
                      name:
                        type: string
                        example: Electronics
                      color:
                        type: string
                        example: '#A9A9A9'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  message: 'Validation failed.'
                  errors:
                    name:
                      - 'The name field is required.'
                    type:
                      - 'The type field is required.'
                properties:
                  success:
                    type: integer
                    example: 0
                  message:
                    type: string
                    example: 'Validation failed.'
                  errors:
                    type: object
                    properties:
                      name:
                        type: array
                        example:
                          - 'The name field is required.'
                        items:
                          type: string
                      type:
                        type: array
                        example:
                          - 'The type field is required.'
                        items:
                          type: string
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Categories CRUD'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                type:
                  type: string
                  description: 'The type of the category. Currently, only "charging-site" is allowed.'
                  example: charging-site
                  nullable: false
                  enum:
                    - charging-site
                name:
                  type: string
                  description: 'The name of the category. Must be at least 3 characters long and unique per user and type. Must be at least 3 characters.'
                  example: Electronics
                  nullable: false
              required:
                - type
                - name
  '/api/categories/{id}':
    get:
      summary: 'Get details of a specific category.'
      operationId: getDetailsOfASpecificCategory
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                  results:
                    id: 60
                    type: charging-site
                    name: Electronics
                    color: '#A9A9A9'
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
                  results:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 60
                      type:
                        type: string
                        example: charging-site
                      name:
                        type: string
                        example: Electronics
                      color:
                        type: string
                        example: '#A9A9A9'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Categories CRUD'
    put:
      summary: 'Update an existing category.'
      operationId: updateAnExistingCategory
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                  results:
                    id: 60
                    type: charging-site
                    name: Electronics
                    color: '#A9A9A9'
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
                  results:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 60
                      type:
                        type: string
                        example: charging-site
                      name:
                        type: string
                        example: Electronics
                      color:
                        type: string
                        example: '#A9A9A9'
        403:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: '{"success": 0,"error": "You don''t have permissions to access localhost on this server.}'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  message: 'Validation failed.'
                  errors:
                    name:
                      - 'The name field is required.'
                properties:
                  success:
                    type: integer
                    example: 0
                  message:
                    type: string
                    example: 'Validation failed.'
                  errors:
                    type: object
                    properties:
                      name:
                        type: array
                        example:
                          - 'The name field is required.'
                        items:
                          type: string
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Categories CRUD'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'The name of the category. Must be at least 3 characters long and unique. Must be at least 3 characters.'
                  example: Electronics
                  nullable: false
              required:
                - name
    delete:
      summary: 'Delete a category.'
      operationId: deleteACategory
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
        403:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: '{"success": 0,"error": "You don''t have permissions to access localhost on this server.}'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Categories CRUD'
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the category.'
        example: 1
        required: true
        schema:
          type: integer
  /api/subscription-plans:
    get:
      summary: ''
      operationId: getApiSubscriptionPlans
      description: ''
      parameters: []
      responses:
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: 'Internal system error.'
                  msg_arabic: 'خطأ في النظام'
                  trace: 'Internal system error.'
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: 'Internal system error.'
                  msg_arabic:
                    type: string
                    example: 'خطأ في النظام'
                  trace:
                    type: string
                    example: 'Internal system error.'
      tags:
        - Endpoints
  /api/subscription/current:
    get:
      summary: ''
      operationId: getApiSubscriptionCurrent
      description: ''
      parameters: []
      responses:
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: 'Internal system error.'
                  msg_arabic: 'خطأ في النظام'
                  trace: 'Internal system error.'
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: 'Internal system error.'
                  msg_arabic:
                    type: string
                    example: 'خطأ في النظام'
                  trace:
                    type: string
                    example: 'Internal system error.'
      tags:
        - Endpoints
  /api/subscription/subscribe:
    post:
      summary: ''
      operationId: postApiSubscriptionSubscribe
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
  /api/subscription/unsubscribe:
    post:
      summary: ''
      operationId: postApiSubscriptionUnsubscribe
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
  /api/subscription/resume:
    post:
      summary: ''
      operationId: postApiSubscriptionResume
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
  /api/feedback:
    get:
      summary: 'Get feedback'
      operationId: getFeedback
      description: 'Retrieves a list of feedback associated with the charge points owned by the authenticated user.'
      parameters:
        -
          in: query
          name: itemsPerPage
          description: 'Number of results per page. Use -1 to get all. Defaults to 15.'
          example: 10
          required: false
          schema:
            type: integer
            description: 'Number of results per page. Use -1 to get all. Defaults to 15.'
            example: 10
            nullable: false
        -
          in: query
          name: search
          description: 'Filter feedback by message content.'
          example: 'slow charging'
          required: false
          schema:
            type: string
            description: 'Filter feedback by message content.'
            example: 'slow charging'
            nullable: false
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n      \"success\": 1,\n      \"msg\": \"Done!\",\n      \"msg_arabic\": \"تمت العمليه بنجاح\",\n      \"results\": {\n          \"data\": [\n              {\n                  \"id\": 139,\n                  \"charge_point_order_id\": 171,\n                  \"user_id\": 1,\n                  \"order_id\": null,\n                  \"feedback_msg\": \"The charging cable felt a bit stiff and could be a little longer for easier car positioning.\",\n                  \"rating\": \"3.90\",\n                  \"insert_date\": \"2024-07-17T10:17:20.000000Z\",\n                  \"updated_at\": \"2024-07-22T07:17:30.000000Z\",\n                  \"verified\": 1,\n                  \"charge_point_order\": {\n                      \"id\": 171,\n                      \"charge_point_id\": 12,\n                      \"charge_point_connector_id\": 14,\n                      \"charging_session_time\": \"51.7700\",\n                      \"charging_session_energy\": \"1.5600\",\n                      \"unit\": \"minutes\",\n                      \"requested_quantity\": \"10\",\n                      \"feedback_exist\": 0,\n                      \"status\": 1,\n                      \"delivery_date\": null,\n                      \"user_id\": 1,\n                      \"fleet_id\": null,\n                      \"quantity\": \"51.0000\",\n                      \"price\": \"102.0000\",\n                      \"fees\": \"1.00\",\n                      \"earning\": 15.3,\n                      \"unit_price\": \"2.00\",\n                      \"created_at\": \"2025-01-08T07:33:27.000000Z\",\n                      \"updated_at\": \"2025-03-04T13:27:56.000000Z\",\n                      \"connector_number\": 1\n                  }\n              },\n              ...\n          ],\n          \"meta\": {\n              \"per_page\": 15,\n              \"total\": 141\n          }\n      }\n  }"
      tags:
        - Feedbacks
  /api/feedback/export:
    get:
      summary: 'Export feedback to Excel'
      operationId: exportFeedbackToExcel
      description: "Exports all feedback related to the authenticated user's charge points to an `.xlsx` file."
      parameters: []
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: 'attachment feedback.xlsx'
      tags:
        - Feedbacks
  '/api/feedback/{feedbackID}':
    get:
      summary: 'Get a specific feedback entry'
      operationId: getASpecificFeedbackEntry
      description: 'Returns a single feedback entry by ID.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  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
                properties:
                  id:
                    type: integer
                    example: 139
                  charge_point_order_id:
                    type: integer
                    example: 171
                  user_id:
                    type: integer
                    example: 1
                  order_id:
                    type: string
                    example: null
                  feedback_msg:
                    type: string
                    example: 'The charging cable felt a bit stiff and could be a little longer for easier car positioning.'
                  rating:
                    type: string
                    example: '3.90'
                  insert_date:
                    type: string
                    example: '2024-07-17T10:17:20.000000Z'
                  updated_at:
                    type: string
                    example: '2024-07-22T07:17:30.000000Z'
                  verified:
                    type: integer
                    example: 1
                  charge_point_order:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 171
                      charge_point_id:
                        type: integer
                        example: 12
                      charge_point_connector_id:
                        type: integer
                        example: 14
                      charging_session_time:
                        type: string
                        example: '51.7700'
                      charging_session_energy:
                        type: string
                        example: '1.5600'
                      unit:
                        type: string
                        example: minutes
                      requested_quantity:
                        type: string
                        example: '10'
                      feedback_exist:
                        type: integer
                        example: 0
                      status:
                        type: integer
                        example: 1
                      delivery_date:
                        type: string
                        example: null
                      user_id:
                        type: integer
                        example: 1
                      fleet_id:
                        type: string
                        example: null
                      quantity:
                        type: string
                        example: '51.0000'
                      price:
                        type: string
                        example: '102.0000'
                      fees:
                        type: string
                        example: '1.00'
                      earning:
                        type: number
                        example: 15.3
                      unit_price:
                        type: string
                        example: '2.00'
                      created_at:
                        type: string
                        example: '2025-01-08T07:33:27.000000Z'
                      updated_at:
                        type: string
                        example: '2025-03-04T13:27:56.000000Z'
                      connector_number:
                        type: integer
                        example: 1
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: 'Order not found'
                properties:
                  error:
                    type: string
                    example: 'Order not found'
      tags:
        - Feedbacks
    parameters:
      -
        in: path
        name: feedbackID
        description: 'The ID of the feedback to retrieve.'
        example: 139
        required: true
        schema:
          type: integer
  /api/v3/countries:
    get:
      summary: 'Get countries'
      operationId: getCountries
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    -
                      id: 1
                      name: Jordan
                      iso: JO
                      time_zone: Asia/Amman
                      latitude: '31.95'
                      longitude: '35.93333'
                      phone_code: '962'
                      contact_number: '96265860087'
                      email: info@gasable.com
                      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: info@123gasable.net
                      currency: SR
                      currency_iso: SAR
                  success: 1
                  message: Done!
                properties:
                  data:
                    type: array
                    example:
                      -
                        id: 1
                        name: Jordan
                        iso: JO
                        time_zone: Asia/Amman
                        latitude: '31.95'
                        longitude: '35.93333'
                        phone_code: '962'
                        contact_number: '96265860087'
                        email: info@gasable.com
                        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: info@123gasable.net
                        currency: SR
                        currency_iso: SAR
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 1
                        name:
                          type: string
                          example: Jordan
                        iso:
                          type: string
                          example: JO
                        time_zone:
                          type: string
                          example: Asia/Amman
                        latitude:
                          type: string
                          example: '31.95'
                        longitude:
                          type: string
                          example: '35.93333'
                        phone_code:
                          type: string
                          example: '962'
                        contact_number:
                          type: string
                          example: '96265860087'
                        email:
                          type: string
                          example: info@gasable.com
                        currency:
                          type: string
                          example: JD
                        currency_iso:
                          type: string
                          example: JOD
                  success:
                    type: integer
                    example: 1
                  message:
                    type: string
                    example: Done!
      tags:
        - Location
  '/api/v3/countries/{id}':
    get:
      summary: 'Get country'
      operationId: getCountry
      description: 'Returns country details by ID.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  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: info@123gasable.net
                    currency: SR
                    currency_iso: SAR
                    flag_url: 'https://v4.test/flags/SA.png'
                  success: 1
                  message: Done!
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 4
                      name:
                        type: string
                        example: 'Saudi Arabia'
                      iso:
                        type: string
                        example: SA
                      time_zone:
                        type: string
                        example: Asia/Riyadh
                      latitude:
                        type: string
                        example: '24.63333'
                      longitude:
                        type: string
                        example: '46.71666'
                      phone_code:
                        type: string
                        example: '966'
                      contact_number:
                        type: string
                        example: '9660005469'
                      email:
                        type: string
                        example: info@123gasable.net
                      currency:
                        type: string
                        example: SR
                      currency_iso:
                        type: string
                        example: SAR
                      flag_url:
                        type: string
                        example: 'https://v4.test/flags/SA.png'
                  success:
                    type: integer
                    example: 1
                  message:
                    type: string
                    example: Done!
      tags:
        - Location
    parameters:
      -
        in: path
        name: id
        description: 'Country ID.'
        example: 4
        required: true
        schema:
          type: integer
  /api/orders:
    get:
      summary: 'Get charge point orders'
      operationId: getChargePointOrders
      description: 'Returns a paginated list of orders related to charge points owned by the authenticated user.'
      parameters:
        -
          in: query
          name: itemsPerPage
          description: 'Number of results per page. Use -1 to get all. Defaults to 15.'
          example: 10
          required: false
          schema:
            type: integer
            description: 'Number of results per page. Use -1 to get all. Defaults to 15.'
            example: 10
            nullable: false
        -
          in: query
          name: search
          description: 'Optional search term to filter by charge point identifier.'
          example: EV12345
          required: false
          schema:
            type: string
            description: 'Optional search term to filter by charge point identifier.'
            example: EV12345
            nullable: false
        -
          in: query
          name: sortBy
          description: 'Optional array of sorting instructions. Each object should include "key" and "order" (asc or desc). Keys: insert_date, duration, energy, price, totalEarning.'
          example: []
          required: false
          schema:
            type: object
            description: 'Optional array of sorting instructions. Each object should include "key" and "order" (asc or desc). Keys: insert_date, duration, energy, price, totalEarning.'
            example: []
            nullable: false
            properties: {  }
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n      \"success\": 1,\n      \"msg\": \"Done!\",\n      \"msg_arabic\": \"تمت العمليه بنجاح\",\n      \"results\": {\n          \"data\": [\n              {\n                  \"id\": 426,\n                  \"charge_point_id\": 16,\n                  \"charge_point_connector_id\": 16,\n                  \"charging_session_time\": \"27.0000\",\n                  \"charging_session_energy\": \"1661.0000\",\n                  \"unit\": \"minutes\",\n                  \"requested_quantity\": \"8\",\n                  \"feedback_exist\": 0,\n                  \"status\": 1,\n                  \"delivery_date\": \"2024-09-16 07:33:27\",\n                  \"user_id\": 11,\n                  \"fleet_id\": 64,\n                  \"quantity\": \"6.0000\",\n                  \"price\": \"0.00\",\n                  \"fees\": \"8.00\",\n                  \"earning\": \"953.47\",\n                  \"unit_price\": \"2587.98\",\n                  \"created_at\": \"2024-09-16T07:33:27.000000Z\",\n                  \"updated_at\": \"2025-03-04T13:27:57.000000Z\",\n                  \"connector_number\": 1,\n                  \"charge_point\": {\n                      \"id\": 16,\n                      \"identifier\": \"CP:DDEE36\",\n                      \"category\": \"EV_CHARGER\",\n                      \"title\": \"ocpp_yesy\",\n                      \"description\": \"ocpp_yesy\",\n                      \"latitude\": \"24.593799037018584\",\n                      \"longitude\": \"46.62275091622337\",\n                      \"listed\": false,\n                      ...\n                  },\n                  \"insert_date\": \"2024-09-16 07:33\",\n                  \"prices\": [],\n                  \"app_fees\": \"-953.47\",\n                  \"elapsed_time\": \"27.0000\"\n              },\n             ...\n          ],\n          \"meta\": {\n              \"per_page\": 10,\n              \"total\": 404\n          }\n      }\n  }"
      tags:
        - Orders
  /api/orders/export:
    get:
      summary: 'Export orders to Excel'
      operationId: exportOrdersToExcel
      description: "Exports all orders for the authenticated user's charge points to an `.xlsx` file."
      parameters: []
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: 'attachment Orders.xlsx'
      tags:
        - Orders
  '/api/orders/{orderID}':
    get:
      summary: 'Get a specific order'
      operationId: getASpecificOrder
      description: 'Retrieves a single order by its ID, ensuring it belongs to the authenticated user.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  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'
                properties:
                  id:
                    type: integer
                    example: 426
                  charge_point_id:
                    type: integer
                    example: 16
                  charge_point_connector_id:
                    type: integer
                    example: 16
                  charging_session_time:
                    type: string
                    example: '27.0000'
                  charging_session_energy:
                    type: string
                    example: '1661.0000'
                  unit:
                    type: string
                    example: minutes
                  requested_quantity:
                    type: string
                    example: '8'
                  feedback_exist:
                    type: integer
                    example: 0
                  status:
                    type: integer
                    example: 1
                  delivery_date:
                    type: string
                    example: '2024-09-16 07:33:27'
                  user_id:
                    type: integer
                    example: 11
                  fleet_id:
                    type: integer
                    example: 64
                  quantity:
                    type: string
                    example: '6.0000'
                  price:
                    type: string
                    example: '0.00'
                  fees:
                    type: string
                    example: '8.00'
                  earning:
                    type: string
                    example: '953.47'
                  unit_price:
                    type: string
                    example: '2587.98'
                  created_at:
                    type: string
                    example: '2024-09-16T07:33:27.000000Z'
                  updated_at:
                    type: string
                    example: '2025-03-04T13:27:57.000000Z'
                  connector_number:
                    type: integer
                    example: 1
                  charge_point:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 16
                      identifier:
                        type: string
                        example: 'CP:DDEE36'
                      category:
                        type: string
                        example: EV_CHARGER
                      title:
                        type: string
                        example: ocpp_yesy
                      description:
                        type: string
                        example: ocpp_yesy
                      latitude:
                        type: string
                        example: '24.593799037018584'
                      longitude:
                        type: string
                        example: '46.62275091622337'
                      listed:
                        type: boolean
                        example: false
                      distance:
                        type: string
                        example: null
                      type:
                        type: string
                        example: null
                      status:
                        type: string
                        example: unavailable
                      image:
                        type: string
                        example: 'http://localhost:8080/images/charge-point-1.jpeg'
                      session_limit_type:
                        type: string
                        example: null
                      session_limit_value:
                        type: integer
                        example: 0
                      online_status:
                        type: integer
                        example: 0
                      configured:
                        type: integer
                        example: 0
                      rating:
                        type: string
                        example: '3.17'
                      owner_id:
                        type: integer
                        example: 1
                      address:
                        type: object
                        properties:
                          address_line_1:
                            type: string
                            example: x
                          address_line_2:
                            type: string
                            example: 'y'
                          address_line_3:
                            type: string
                            example: z
                          zipcode:
                            type: string
                            example: '1234'
                          city:
                            type: string
                            example: xxx
                          state:
                            type: string
                            example: yyy
                      token:
                        type: string
                        example: EV_CHARGER_64AFFC8DDEEC1
                      contact_number:
                        type: string
                        example: '9666564654664'
                      open_time:
                        type: string
                        example: '00:00:00'
                      close_time:
                        type: string
                        example: '23:59:00'
                      total_earnings:
                        type: string
                        example: '17026.18'
                      total_energy:
                        type: integer
                        example: 53469
                      total_sessions_time:
                        type: integer
                        example: 739
                      connectors:
                        type: array
                        example:
                          -
                            id: 3
                            name: 'Type 1 - J1772'
                            icon: 'https://storage.powerly.app/connectors/Type 1.png'
                            type: ''
                            max_power: 0
                            status: unavailable
                            number: 1
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              example: 3
                            name:
                              type: string
                              example: 'Type 1 - J1772'
                            icon:
                              type: string
                              example: 'https://storage.powerly.app/connectors/Type 1.png'
                            type:
                              type: string
                              example: ''
                            max_power:
                              type: integer
                              example: 0
                            status:
                              type: string
                              example: unavailable
                            number:
                              type: integer
                              example: 1
                      amenities:
                        type: array
                        example: []
                      price_unit:
                        type: string
                        example: energy
                      orders_count:
                        type: integer
                        example: 50
                      price:
                        type: string
                        example: '1362.09'
                      price_usd:
                        type: integer
                        example: 10
                      is_external:
                        type: boolean
                        example: false
                      is_in_use:
                        type: boolean
                        example: false
                      is_reserved:
                        type: boolean
                        example: false
                      available:
                        type: boolean
                        example: false
                      next_reservation_near_now:
                        type: string
                        example: null
                      external_details:
                        type: string
                        example: null
                      reservation_fee:
                        type: string
                        example: '68.10'
                      booked_by_current_user:
                        type: boolean
                        example: false
                      used_by_current_user:
                        type: boolean
                        example: false
                      earning:
                        type: string
                        example: '0.00'
                  insert_date:
                    type: string
                    example: '2024-09-16 07:33'
                  prices:
                    type: array
                    example: []
                  app_fees:
                    type: string
                    example: '-953.47'
                  elapsed_time:
                    type: string
                    example: '27.0000'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: 'Order not found'
                properties:
                  error:
                    type: string
                    example: 'Order not found'
      tags:
        - Orders
    parameters:
      -
        in: path
        name: orderID
        description: 'The ID of the order to retrieve.'
        example: 12
        required: true
        schema:
          type: integer
  '/api/orders/charge-point/{chargePointID}':
    get:
      summary: 'Get orders by charge point ID'
      operationId: getOrdersByChargePointID
      description: 'Returns all orders for a specific charge point.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "[\n         {\n           \"id\": 426,\n           \"charge_point_id\": 16,\n           \"charge_point_connector_id\": 16,\n           \"charging_session_time\": \"27.0000\",\n           \"charging_session_energy\": \"1661.0000\",\n           \"unit\": \"minutes\",\n           \"requested_quantity\": \"8\",\n           \"feedback_exist\": 0,\n           \"status\": 1,\n           \"delivery_date\": \"2024-09-16 07:33:27\",\n           \"user_id\": 11,\n           \"fleet_id\": 64,\n           \"quantity\": \"6.0000\",\n           \"price\": \"0.00\",\n           \"fees\": \"8.00\",\n           \"earning\": \"953.47\",\n           \"unit_price\": \"2587.98\",\n           \"created_at\": \"2024-09-16T07:33:27.000000Z\",\n           \"updated_at\": \"2025-03-04T13:27:57.000000Z\",\n           \"connector_number\": 1,\n           \"charge_point\": {\n               \"id\": 16,\n               \"identifier\": \"CP:DDEE36\",\n               \"category\": \"EV_CHARGER\",\n               \"title\": \"ocpp_yesy\",\n               \"description\": \"ocpp_yesy\",\n               \"latitude\": \"24.593799037018584\",\n               \"longitude\": \"46.62275091622337\",\n               \"listed\": false,\n               ...\n           },\n           \"insert_date\": \"2024-09-16 07:33\",\n           \"prices\": [],\n           \"app_fees\": \"-953.47\",\n           \"elapsed_time\": \"27.0000\"\n       }\n  ]"
      tags:
        - Orders
    parameters:
      -
        in: path
        name: chargePointID
        description: 'The ID of the charge point.'
        example: 5
        required: true
        schema:
          type: integer
  /api/payout-methods:
    get:
      summary: "Get user's payout methods"
      operationId: getUsersPayoutMethods
      description: 'Retrieves the list of payout methods that the authenticated user has already added.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n      \"success\": 1,\n      \"msg\": \"Done!\",\n      \"msg_arabic\": \"تمت العمليه بنجاح\",\n      \"results\": [\n          {\n              \"id\": 1,\n              \"logo\": \"http://localhost:8080/images/payout-methods/stripe.png\",\n              \"name\": \"stripe\",\n              \"description\": \"Instant withdrawals with Stripe, ensuring secure and seamless transactions.\",\n              \"details\": {\n                  \"account_id\": \"acct_1PnynuR7qdScojsdf56\",\n                  \"account_status\": \"Pending\"\n              },\n              \"link\":\"https://connect.stripe.com/setup/s/acct_1PjiyP08tgBteJD6/IAbfEzjDXCzjsds\"\n          },\n          ...\n      ]\n  }"
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Payout methods'
  /api/payout-methods/available:
    get:
      summary: 'Get available payout methods'
      operationId: getAvailablePayoutMethods
      description: "Lists the payout methods available for the user's country that have not yet been added.\nThe user must have a country associated with their profile."
      parameters: []
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n      \"success\": 1,\n      \"msg\": \"Done!\",\n      \"msg_arabic\": \"تمت العمليه بنجاح\",\n      \"results\": [\n          {\n              \"id\": 1,\n              \"logo\": \"http://localhost:8080/images/payout-methods/stripe.png\",\n              \"name\": \"stripe\",\n              \"description\": \"Instant withdrawals with Stripe, ensuring secure and seamless transactions.\",\n              \"details\": {\n                  \"account_id\": \"acct_1PnynuR7qdScojsdf56\",\n                  \"account_status\": \"Pending\"\n              },\n              \"link\":\"https://connect.stripe.com/setup/s/acct_1PjiyP08tgBteJD6/IAbfEzjDXCzjsds\"\n          },\n          ...\n      ]\n  }"
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Payout methods'
  '/api/payout-methods/add/{payoutMethod_name}':
    post:
      summary: 'Add a payout method'
      operationId: addAPayoutMethod
      description: "Associates a new payout method with the authenticated user using the provided data.\nOptionally handles file uploads (e.g., ID for bank transfer)."
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Payout methods'
      requestBody:
        required: false
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                fullname:
                  type: string
                  description: 'The full name of the account holder, required if the payout method is Bank Transfer.'
                  example: 'John Doe'
                  nullable: false
                userType:
                  type: string
                  description: 'The type of account holder ("individual" or "company"), required if the payout method is Bank Transfer.'
                  example: individual
                  nullable: false
                contact:
                  type: object
                  description: ''
                  example:
                    email: john@example.com
                  nullable: false
                  properties:
                    email:
                      type: string
                      description: "The contact's email address, required if the payout method is Bank Transfer."
                      example: john@example.com
                      nullable: false
                    phone:
                      type: string
                      description: "The contact's phone number, required if the payout method is Bank Transfer."
                      example: '+1234567890'
                      nullable: false
                address:
                  type: string
                  description: "The account holder's physical address, required if the payout method is Bank Transfer."
                  example: '123 Main Street, City, Country'
                  nullable: false
                bankAccount:
                  type: object
                  description: ''
                  example:
                    IBAN: SA0380000000608010167519
                  nullable: false
                  properties:
                    IBAN:
                      type: string
                      description: 'The IBAN number, required if the payout method is Bank Transfer.'
                      example: SA0380000000608010167519
                      nullable: false
                    SWIFT_BIC:
                      type: string
                      description: 'The SWIFT/BIC code of the bank; this is optional for Bank Transfer.'
                      example: DEUTDEFF
                      nullable: false
                TIN:
                  type: string
                  description: 'The tax identification number; optional for Bank Transfer.'
                  example: 123-45-6789
                  nullable: false
                ID:
                  type: string
                  format: binary
                  description: 'An identification document (e.g., passport or national ID), optional for Bank Transfer.'
                  nullable: false
                id:
                  type: string
                  description: 'The account identifier (e.g., phone number), required if the payout method is CLIQ or STCPAY.'
                  example: '0501234567'
                  nullable: false
                email:
                  type: string
                  description: 'The PayPal account email, required if the payout method is PayPal.'
                  example: paypal@example.com
                  nullable: false
    parameters:
      -
        in: path
        name: payoutMethod_name
        description: ''
        example: voluptas
        required: true
        schema:
          type: string
  '/api/payout-methods/update/{payoutMethod_name}':
    post:
      summary: 'Update an existing payout method'
      operationId: updateAnExistingPayoutMethod
      description: "Updates the details of a payout method associated with the authenticated user.\nSupports file uploads for specific method types (e.g., ID for bank transfer)."
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Payout methods'
      requestBody:
        required: false
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                fullname:
                  type: string
                  description: 'The full name of the account holder, required if the payout method is Bank Transfer.'
                  example: 'John Doe'
                  nullable: false
                userType:
                  type: string
                  description: 'The type of account holder ("individual" or "company"), required if the payout method is Bank Transfer.'
                  example: individual
                  nullable: false
                contact:
                  type: object
                  description: ''
                  example:
                    email: john@example.com
                  nullable: false
                  properties:
                    email:
                      type: string
                      description: "The contact's email address, required if the payout method is Bank Transfer."
                      example: john@example.com
                      nullable: false
                    phone:
                      type: string
                      description: "The contact's phone number, required if the payout method is Bank Transfer."
                      example: '+1234567890'
                      nullable: false
                address:
                  type: string
                  description: "The account holder's physical address, required if the payout method is Bank Transfer."
                  example: '123 Main Street, City, Country'
                  nullable: false
                bankAccount:
                  type: object
                  description: ''
                  example:
                    IBAN: SA0380000000608010167519
                  nullable: false
                  properties:
                    IBAN:
                      type: string
                      description: 'The IBAN number, required if the payout method is Bank Transfer.'
                      example: SA0380000000608010167519
                      nullable: false
                    SWIFT_BIC:
                      type: string
                      description: 'The SWIFT/BIC code of the bank; this is optional for Bank Transfer.'
                      example: DEUTDEFF
                      nullable: false
                TIN:
                  type: string
                  description: 'The tax identification number; optional for Bank Transfer.'
                  example: 123-45-6789
                  nullable: false
                ID:
                  type: string
                  format: binary
                  description: 'An identification document (e.g., passport or national ID), optional for Bank Transfer.'
                  nullable: false
                id:
                  type: string
                  description: 'The account identifier (e.g., phone number), required if the payout method is CLIQ or STCPAY.'
                  example: '0501234567'
                  nullable: false
                email:
                  type: string
                  description: 'The PayPal account email, required if the payout method is PayPal.'
                  example: paypal@example.com
                  nullable: false
    parameters:
      -
        in: path
        name: payoutMethod_name
        description: ''
        example: eum
        required: true
        schema:
          type: string
  '/api/payout-methods/delete/{payoutMethod_name}':
    delete:
      summary: 'Remove a payout method'
      operationId: removeAPayoutMethod
      description: 'Detaches a payout method from the authenticated user.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Payout methods'
    parameters:
      -
        in: path
        name: payoutMethod_name
        description: ''
        example: nihil
        required: true
        schema:
          type: string
  /api/payouts:
    get:
      summary: 'Get the list of the payouts.'
      operationId: getTheListOfThePayouts
      description: ''
      parameters:
        -
          in: query
          name: itemsPerPage
          description: 'the number of items per page'
          example: 4
          required: false
          schema:
            type: integer
            description: 'the number of items per page'
            example: 4
            nullable: false
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n      \"success\": 1,\n      \"msg\": \"Done!\",\n      \"msg_arabic\": \"تمت العمليه بنجاح\",\n      \"results\": {\n          \"data\": [\n              {\n                  \"id\": 15,\n                  \"payout_id\": \"1\",\n                  \"payout_method_id\": 1,\n                  \"user_id\": 1,\n                  \"account_id\": \"voluptas\",\n                  \"amount\": \"341.67\",\n                  \"status\": \"paied\",\n                  \"response\": \"Et consectetur illum.\",\n                  \"created_at\": \"2024-08-14T17:16:25.000000Z\",\n                  \"updated_at\": \"2024-08-14T17:16:25.000000Z\"\n              },\n\n             ...\n          ],\n          \"meta\": {\n              \"per_page\": 2,\n              \"total\": 15\n          }\n      }\n  }"
      tags:
        - Payouts
  /api/payouts/request-payout:
    post:
      summary: 'Request a payout.'
      operationId: requestAPayout
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: ''
                    type: object
                    example:
                      success: 1
                      msg: Done!
                      msg_arabic: 'تمت العمليه بنجاح'
                    properties:
                      success:
                        type: integer
                        example: 1
                      msg:
                        type: string
                        example: Done!
                      msg_arabic:
                        type: string
                        example: 'تمت العمليه بنجاح'
                  -
                    description: ''
                    type: object
                    example:
                      success: 0
                      msg: 'Internal system error.'
                      msg_arabic: 'خطأ في النظام'
                    properties:
                      success:
                        type: integer
                        example: 0
                      msg:
                        type: string
                        example: 'Internal system error.'
                      msg_arabic:
                        type: string
                        example: 'خطأ في النظام'
      tags:
        - Payouts
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                payoutMethod:
                  type: integer
                  description: 'the payout method id that you want to request a payout to.'
                  example: 4
                  nullable: false
  /api/charge-points:
    get:
      summary: 'List power centers'
      operationId: listPowerCenters
      description: 'All power centers owned by the current user.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "[\n          {\n              \"id\": 24,\n              \"title\": \"test open source API\",\n              \"identifier\": \"PS_67DF25E57A981\",\n              \"listed\": 0,\n              \"status\": \"unavailable\",\n              \"earning\": \"0.00\",\n              \"rating\": \"0.00\"\n          },\n          ...\n      ]"
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
    post:
      summary: 'Create a power center'
      operationId: createAPowerCenter
      description: 'Creates a new power center with the provided attributes.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  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
                properties:
                  price_unit:
                    type: string
                    example: minutes
                  user_id:
                    type: integer
                    example: 1
                  title:
                    type: string
                    example: veniam
                  identifier:
                    type: string
                    example: facilis
                  token:
                    type: string
                    example: EV_CHARGER_68220FE7D87CD
                  category:
                    type: string
                    example: EV_CHARGER
                  address_line_1:
                    type: string
                    example: ut
                  address_line_2:
                    type: string
                    example: est
                  address_line_3:
                    type: string
                    example: amet
                  zipcode:
                    type: string
                    example: rerum
                  city:
                    type: string
                    example: facere
                  state:
                    type: string
                    example: id
                  latitude:
                    type: number
                    example: 49.28628
                  longitude:
                    type: integer
                    example: 144776
                  updated_at:
                    type: string
                    example: '2025-05-12T15:12:39.000000Z'
                  created_at:
                    type: string
                    example: '2025-05-12T15:12:39.000000Z'
                  id:
                    type: integer
                    example: 25
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  identifier:
                    - 'The identifier has already been taken.'
                  category:
                    - 'The selected category is invalid.'
                properties:
                  identifier:
                    type: array
                    example:
                      - 'The identifier has already been taken.'
                    items:
                      type: string
                  category:
                    type: array
                    example:
                      - 'The selected category is invalid.'
                    items:
                      type: string
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                  description: ''
                  example: est
                  nullable: false
                identifier:
                  type: string
                  description: ''
                  example: suscipit
                  nullable: false
                category:
                  type: string
                  description: ''
                  example: ipsam
                  nullable: false
                address_line_1:
                  type: string
                  description: ''
                  example: eius
                  nullable: false
                address_line_2:
                  type: string
                  description: ''
                  example: et
                  nullable: true
                address_line_3:
                  type: string
                  description: ''
                  example: vitae
                  nullable: true
                zipcode:
                  type: string
                  description: ''
                  example: voluptas
                  nullable: false
                city:
                  type: string
                  description: ''
                  example: tempora
                  nullable: false
                state:
                  type: string
                  description: ''
                  example: enim
                  nullable: false
                latitude:
                  type: number
                  description: ''
                  example: 667697.0691801
                  nullable: false
                longitude:
                  type: number
                  description: ''
                  example: 9.0
                  nullable: false
              required:
                - title
                - identifier
                - category
                - latitude
                - longitude
  /api/charge-points/datatable:
    get:
      summary: 'List power centers (datatable)'
      operationId: listPowerCentersdatatable
      description: 'All power centers owned by the current user.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n          \"success\": 1,\n          \"msg\": \"Done!\",\n          \"msg_arabic\": \"تمت العمليه بنجاح\",\n          \"results\": {\n              \"data\": [\n                  {\n                      \"id\": 24,\n                      \"title\": \"test open source API\",\n                      \"identifier\": \"PS_67DF25E57A981\",\n                      \"listed\": false,\n                      \"status\": \"unavailable\",\n                      \"earning\": \"0.00\",\n                      \"rating\": \"0.00\"\n                  },\n              ...\n              ],\n              \"meta\": {\n                  \"per_page\": 15,\n                  \"total\": 11\n              }\n          }\n      }"
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
  /api/charge-points/sustainability:
    get:
      summary: 'Power center green trace'
      operationId: powerCenterGreenTrace
      description: 'Calculates the CO2 savings based on energy consumed by power centers.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                  results: 34.612
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
                  results:
                    type: number
                    example: 34.612
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
  /api/charge-points/geojson:
    get:
      summary: 'Get all power centers as GeoJSON'
      operationId: getAllPowerCentersAsGeoJSON
      description: 'Returns a GeoJSON representation of all owned power centers.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n      \"type\": \"FeatureCollection\",\n      \"features\": [\n          {\n              \"type\": \"Feature\",\n              \"properties\": {\n                  \"id\": 24,\n                  \"identifier\": \"PS_67DF25E57A981\",\n                  \"category\": \"EV_CHARGER\",\n                  \"price_unit\": \"minutes\",\n                  \"title\": \"test open source API\",\n                  \"description\": null,\n                  \"latitude\": \"36.64575836483359\",\n                  \"longitude\": \"2.9176092880736184\",\n                  \"address_line_1\": \"Tassala\",\n                  \"address_line_2\": null,\n                  \"address_line_3\": null,\n                  \"zipcode\": null,\n                  \"city\": null,\n                  \"state\": null,\n                  \"status\": \"unavailable\",\n                  \"image\": \"http://localhost:8080/images/charge-point-1.jpeg\",\n                  \"contact_number\": null,\n                  \"open_time\": null,\n                  \"close_time\": null,\n                  \"user_id\": 1,\n                  \"price\": null,\n                  \"deleted_at\": null,\n                  \"listed\": 0,\n                  \"token\": \"EV_CHARGER_67DF25E57A988\",\n                  \"session_limit_type\": null,\n                  \"session_limit_value\": 0,\n                  \"created_at\": \"2025-03-22T21:04:37.000000Z\",\n                  \"updated_at\": \"2025-03-27T10:13:18.000000Z\",\n                  \"external_details_id\": null,\n                  \"identifier_update\": 0,\n                  \"start_energy_value\": 0,\n                  \"configured\": 0,\n                  \"connected\": 0,\n                  \"busy\": 0,\n                  \"reserved\": 0,\n                  \"charge_point_type_id\": null,\n                  \"charging_site_id\": null,\n                  \"media\": [],\n                  \"icon-image\": \"pin-cp-out-of-service\",\n                  \"marker_title\": \"PS_67DF25E57A981\\n$0.00\",\n                  \"earning\": \"0.00\"\n              },\n              \"geometry\": {\n                  \"type\": \"Point\",\n                  \"coordinates\": [\n                      \"2.9176092880736184\",\n                      \"36.64575836483359\"\n                  ]\n              }\n          },\n          ....\n      ]\n  }"
      tags:
        - 'Power centers management'
  /api/charge-points/export:
    get:
      summary: 'Export power centers as Excel'
      operationId: exportPowerCentersAsExcel
      description: 'Downloads all power centers owned by the current user in .xlsx format.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: file.xlsx
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
  '/api/charge-points/{id}':
    get:
      summary: 'Get a power center by ID'
      operationId: getAPowerCenterByID
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  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'
                properties:
                  id:
                    type: integer
                    example: 24
                  identifier:
                    type: string
                    example: PS_67DF25E57A981
                  category:
                    type: string
                    example: EV_CHARGER
                  title:
                    type: string
                    example: 'test open source API'
                  description:
                    type: string
                    example: null
                  latitude:
                    type: string
                    example: '36.64575836483359'
                  longitude:
                    type: string
                    example: '2.9176092880736184'
                  listed:
                    type: boolean
                    example: false
                  distance:
                    type: string
                    example: null
                  type:
                    type: string
                    example: null
                  status:
                    type: string
                    example: unavailable
                  image:
                    type: string
                    example: 'http://localhost:8080/images/charge-point-1.jpeg'
                  session_limit_type:
                    type: string
                    example: null
                  session_limit_value:
                    type: integer
                    example: 0
                  online_status:
                    type: integer
                    example: 0
                  configured:
                    type: integer
                    example: 0
                  rating:
                    type: string
                    example: '0.00'
                  owner_id:
                    type: integer
                    example: 1
                  address:
                    type: object
                    properties:
                      address_line_1:
                        type: string
                        example: Tassala
                      address_line_2:
                        type: string
                        example: null
                      address_line_3:
                        type: string
                        example: null
                      zipcode:
                        type: string
                        example: null
                      city:
                        type: string
                        example: null
                      state:
                        type: string
                        example: null
                  token:
                    type: string
                    example: EV_CHARGER_67DF25E57A988
                  contact_number:
                    type: string
                    example: null
                  open_time:
                    type: string
                    example: null
                  close_time:
                    type: string
                    example: null
                  total_earnings:
                    type: string
                    example: '0.00'
                  total_energy:
                    type: integer
                    example: 0
                  total_sessions_time:
                    type: integer
                    example: 0
                  connectors:
                    type: array
                    example:
                      -
                        id: 3
                        name: 'Type 1 - J1772'
                        icon: 'https://storage.powerly.app/connectors/Type 1.png'
                        type: ''
                        max_power: 0
                        status: unavailable
                        number: 1
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 3
                        name:
                          type: string
                          example: 'Type 1 - J1772'
                        icon:
                          type: string
                          example: 'https://storage.powerly.app/connectors/Type 1.png'
                        type:
                          type: string
                          example: ''
                        max_power:
                          type: integer
                          example: 0
                        status:
                          type: string
                          example: unavailable
                        number:
                          type: integer
                          example: 1
                  amenities:
                    type: array
                    example: []
                  price_unit:
                    type: string
                    example: minutes
                  orders_count:
                    type: integer
                    example: 0
                  price:
                    type: string
                    example: '0.00'
                  price_usd:
                    type: integer
                    example: 0
                  is_external:
                    type: boolean
                    example: false
                  is_in_use:
                    type: boolean
                    example: false
                  is_reserved:
                    type: boolean
                    example: false
                  available:
                    type: boolean
                    example: false
                  next_reservation_near_now:
                    type: string
                    example: null
                  external_details:
                    type: string
                    example: null
                  reservation_fee:
                    type: string
                    example: '68.10'
                  booked_by_current_user:
                    type: boolean
                    example: false
                  used_by_current_user:
                    type: boolean
                    example: false
                  earning:
                    type: string
                    example: '0.00'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
    put:
      summary: 'Update a power center'
      operationId: updateAPowerCenter
      description: 'Updates an existing power center.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  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
                properties:
                  price_unit:
                    type: string
                    example: minutes
                  user_id:
                    type: integer
                    example: 1
                  title:
                    type: string
                    example: veniam
                  identifier:
                    type: string
                    example: facilis
                  token:
                    type: string
                    example: EV_CHARGER_68220FE7D87CD
                  category:
                    type: string
                    example: EV_CHARGER
                  address_line_1:
                    type: string
                    example: ut
                  address_line_2:
                    type: string
                    example: est
                  address_line_3:
                    type: string
                    example: amet
                  zipcode:
                    type: string
                    example: rerum
                  city:
                    type: string
                    example: facere
                  state:
                    type: string
                    example: id
                  latitude:
                    type: number
                    example: 49.28628
                  longitude:
                    type: integer
                    example: 144776
                  updated_at:
                    type: string
                    example: '2025-05-12T15:12:39.000000Z'
                  created_at:
                    type: string
                    example: '2025-05-12T15:12:39.000000Z'
                  id:
                    type: integer
                    example: 25
        403:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: '{"success": 0,"error": "You don''t have permissions to access localhost on this server.}'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  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.'
                properties:
                  success:
                    type: integer
                    example: 0
                  message:
                    type: string
                    example: 'The price field must have 2 decimal places.'
                  errors:
                    type: object
                    properties:
                      price:
                        type: array
                        example:
                          - 'The price field must have 2 decimal places.'
                        items:
                          type: string
                      type:
                        type: array
                        example:
                          - 'The selected type is invalid.'
                        items:
                          type: string
                      amenities.0:
                        type: array
                        example:
                          - 'The selected amenities.0 is invalid.'
                        items:
                          type: string
                      connectors.0.id:
                        type: array
                        example:
                          - 'The selected connectors.0.id is invalid.'
                        items:
                          type: string
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                  description: 'The title of the charge point. Required when updating with PUT.'
                  example: 'FastCharge Station 101'
                  nullable: false
                description:
                  type: string
                  description: 'A short description of the charge point.'
                  example: 'Available 24/7 near the main square.'
                  nullable: true
                latitude:
                  type: string
                  description: 'Latitude of the charge point location. Required when updating with PUT.'
                  example: 25.276987
                  nullable: false
                longitude:
                  type: string
                  description: 'Longitude of the charge point location. Required when updating with PUT.'
                  example: 55.296249
                  nullable: false
                address_line_1:
                  type: string
                  description: 'Primary address line of the charge point.'
                  example: '123 Main Street'
                  nullable: true
                address_line_2:
                  type: string
                  description: 'Secondary address line.'
                  example: 'Suite 4B'
                  nullable: true
                address_line_3:
                  type: string
                  description: 'Tertiary address line.'
                  example: 'Business Complex'
                  nullable: true
                zipcode:
                  type: string
                  description: 'Postal code of the charge point.'
                  example: '12345'
                  nullable: true
                city:
                  type: string
                  description: 'City where the charge point is located.'
                  example: Dubai
                  nullable: true
                state:
                  type: string
                  description: 'State or province.'
                  example: Dubai
                  nullable: true
                contact_number:
                  type: string
                  description: 'Contact phone number for this charge point.'
                  example: '+971500000000'
                  nullable: true
                open_time:
                  type: string
                  description: 'Opening time (format: H:i:s). Must be a valid date in the format <code>H:i:s</code>.'
                  example: '08:00:00'
                  nullable: true
                close_time:
                  type: string
                  description: 'Closing time (format: H:i:s). Must be a valid date in the format <code>H:i:s</code>.'
                  example: '22:00:00'
                  nullable: true
                price:
                  type: string
                  description: 'Charging price. Required when updating with PUT. Must be at least 0.01 characters.'
                  example: 15.5
                  nullable: false
                price_currency:
                  type: string
                  description: 'Currency code (ISO 4217 format).'
                  example: AED
                  nullable: true
                category:
                  type: string
                  description: 'The category of the charge point. Required when updating with PUT. Must be one of: EV_CHARGER, SMART_PLUG, SMART_METER.'
                  example: EV_CHARGER
                  nullable: false
                  enum:
                    - EV_CHARGER
                    - SMART_PLUG
                    - SMART_METER
                amenities:
                  type: array
                  description: 'An individual amenity ID. Required if `amenities` is present. The <code>id</code> of an existing record in the App\Models\Amenity table.'
                  example:
                    - 1
                  items:
                    type: integer
                connectors:
                  type: array
                  description: 'Array of connectors.'
                  example:
                    -
                      id: 1
                      number: 2
                    -
                      id: 3
                      number: 1
                  items:
                    type: object
                    nullable: true
                    properties:
                      id:
                        type: integer
                        description: 'The ID of the connector. Required. The <code>id</code> of an existing record in the App\Models\Connector table.'
                        example: 1
                        nullable: false
                      number:
                        type: integer
                        description: 'The number of this type of connector. Required.'
                        example: 2
                        nullable: false
                    required:
                      - id
                      - number
                price_unit:
                  type: string
                  description: 'Price unit. Required when updating with PUT. Must be one of: minutes, energy.'
                  example: minutes
                  nullable: false
                  enum:
                    - minutes
                    - energy
                session_limit_value:
                  type: number
                  description: 'Optional session limit value (e.g., max kWh or time).'
                  example: 60.0
                  nullable: true
                session_limit_type:
                  type: string
                  description: 'Type of session limit. Must be one of: minutes, energy.'
                  example: minutes
                  nullable: true
                  enum:
                    - minutes
                    - energy
                listed:
                  type: boolean
                  description: 'Whether the charge point is publicly listed.'
                  example: false
                  nullable: true
                type:
                  type: integer
                  description: 'The ID of the charge point type. The <code>id</code> of an existing record in the App\Models\ChargePointType table.'
                  example: 2
                  nullable: true
              required:
                - title
                - latitude
                - longitude
                - price
                - category
                - amenities
                - price_unit
    delete:
      summary: 'Delete a power center'
      operationId: deleteAPowerCenter
      description: 'Deletes the specified power center.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: done
                  msg_arabic: 'تمت العمليه بنجاح'
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: done
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
        400:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: 'Failed to delete Chargepoint'
                properties:
                  error:
                    type: string
                    example: 'Failed to delete Chargepoint'
        403:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: '{"success": 0,"error": "You don''t have permissions to access localhost on this server.}'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: 'Invalid Resource Requested'
                properties:
                  error:
                    type: string
                    example: 'Invalid Resource Requested'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the powercenter.'
        example: 14
        required: true
        schema:
          type: integer
  '/api/charge-points/{id}/stats':
    get:
      summary: 'Get power center statistics'
      operationId: getPowerCenterStatistics
      description: 'Returns detailed analytics about the selected power center.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  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
                properties:
                  today:
                    type: object
                    properties:
                      earnings:
                        type: string
                        example: '0.00'
                      chargingTime:
                        type: string
                        example: '0.00'
                      energyConsumed:
                        type: string
                        example: '0.00'
                      ordersNb:
                        type: integer
                        example: 0
                  thisWeek:
                    type: object
                    properties:
                      earnings:
                        type: string
                        example: '0.00'
                      chargingTime:
                        type: string
                        example: '0.00'
                      energyConsumed:
                        type: string
                        example: '0.00'
                      ordersNb:
                        type: integer
                        example: 0
                      date:
                        type: string
                        example: 05-05-2025
                  thisMonth:
                    type: object
                    properties:
                      earnings:
                        type: string
                        example: '0.00'
                      chargingTime:
                        type: string
                        example: '0.00'
                      energyConsumed:
                        type: string
                        example: '0.00'
                      ordersNb:
                        type: integer
                        example: 0
                      date:
                        type: string
                        example: 12-04-2025
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the powercenter.'
        example: 2
        required: true
        schema:
          type: integer
  '/api/charge-points/{id}/orders':
    get:
      summary: 'Get power center orders'
      operationId: getPowerCenterOrders
      description: 'Returns all orders associated with the selected power center.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "[\n      {\n          \"id\": 198,\n          \"charge_point_id\": 21,\n          \"charge_point_connector_id\": 5,\n          \"charging_session_time\": \"15.0000\",\n          \"charging_session_energy\": \"1408.0000\",\n          \"unit\": \"minutes\",\n          \"requested_quantity\": \"6\",\n          \"feedback_exist\": 0,\n          \"status\": 1,\n          \"delivery_date\": \"2024-09-14 20:19:01\",\n          \"user_id\": 17,\n          \"fleet_id\": 58,\n          \"quantity\": \"8.0000\",\n          \"price\": \"0.00\",\n          \"fees\": \"3.00\",\n          \"earning\": 7,\n          \"unit_price\": \"2315.56\",\n          \"created_at\": \"2024-09-14T20:19:01.000000Z\",\n          \"updated_at\": \"2025-03-04T13:27:56.000000Z\",\n          \"connector_number\": null,\n          \"charge_point\": {\n              \"id\": 21,\n              \"identifier\": \"tassala-charger\",\n              \"category\": \"SMART_PLUG\",\n              \"title\": \"Tassala charger\",\n              \"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.\",\n              \"latitude\": \"36.630753\",\n              \"longitude\": \"2.945236\",\n              \"listed\": true,\n              \"distance\": null,\n              \"type\": null,\n              \"status\": \"booked\",\n              \"image\": \"http://localhost:8080/images/charge-point-1.jpeg\",\n              \"session_limit_type\": null,\n              \"session_limit_value\": 0,\n              \"online_status\": 1,\n              \"configured\": 1,\n              \"rating\": \"0.00\",\n              \"owner_id\": 1,\n              \"address\": {\n                  \"address_line_1\": \"Tessala El Merdja, Algiers, Algeria\",\n                  \"address_line_2\": null,\n                  \"address_line_3\": null,\n                  \"zipcode\": \"16099\",\n                  \"city\": \"Algiers\",\n                  \"state\": null\n              },\n              \"token\": \"EV_CHARGER_66A8C86D417A7\",\n              \"contact_number\": null,\n              \"open_time\": null,\n              \"close_time\": null,\n              \"total_earnings\": \"13212.31\",\n              \"total_energy\": 49629,\n              \"total_sessions_time\": 745,\n              \"connectors\": [\n                  {\n                      \"id\": 7,\n                      \"name\": \"CSS - Type 1\",\n                      \"icon\": \"https://storage.powerly.app/connector/CCS1.png\",\n                      \"type\": \"\",\n                      \"max_power\": 0,\n                      \"status\": \"busy\",\n                      \"number\": null\n                  }\n              ],\n              \"amenities\": [],\n              \"price_unit\": \"minutes\",\n              \"orders_count\": 24,\n              \"price\": \"649355.19\",\n              \"price_usd\": 4767.33,\n              \"is_external\": false,\n              \"is_in_use\": false,\n              \"is_reserved\": false,\n              \"available\": true,\n              \"next_reservation_near_now\": null,\n              \"external_details\": null,\n              \"reservation_fee\": \"68.10\",\n              \"booked_by_current_user\": false,\n              \"used_by_current_user\": true,\n              \"earning\": \"0.00\"\n          },\n          \"insert_date\": \"2024-09-14 20:19:01\",\n          \"prices\": [],\n          \"app_fees\": \"-953.47\",\n          \"elapsed_time\": \"15.0000\"\n      },\n      ...\n  ]"
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the powercenter.'
        example: 18
        required: true
        schema:
          type: integer
  '/api/charge-points/{id}/geojson':
    get:
      summary: 'Get single power center as GeoJSON'
      operationId: getSinglePowerCenterAsGeoJSON
      description: 'Returns a GeoJSON representation of a specific power center.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  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'
                properties:
                  type:
                    type: string
                    example: FeatureCollection
                  features:
                    type: array
                    example:
                      -
                        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'
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          example: Feature
                        properties:
                          type: object
                          properties:
                            id:
                              type: integer
                              example: 24
                            identifier:
                              type: string
                              example: PS_67DF25E57A981
                            category:
                              type: string
                              example: EV_CHARGER
                            price_unit:
                              type: string
                              example: minutes
                            title:
                              type: string
                              example: 'test open source API'
                            description:
                              type: string
                              example: null
                            latitude:
                              type: string
                              example: '36.64575836483359'
                            longitude:
                              type: string
                              example: '2.9176092880736184'
                            address_line_1:
                              type: string
                              example: Tassala
                            address_line_2:
                              type: string
                              example: null
                            address_line_3:
                              type: string
                              example: null
                            zipcode:
                              type: string
                              example: null
                            city:
                              type: string
                              example: null
                            state:
                              type: string
                              example: null
                            status:
                              type: string
                              example: unavailable
                            image:
                              type: string
                              example: 'http://localhost:8080/images/charge-point-1.jpeg'
                            contact_number:
                              type: string
                              example: null
                            open_time:
                              type: string
                              example: null
                            close_time:
                              type: string
                              example: null
                            user_id:
                              type: integer
                              example: 1
                            price:
                              type: string
                              example: null
                            deleted_at:
                              type: string
                              example: null
                            listed:
                              type: integer
                              example: 0
                            token:
                              type: string
                              example: EV_CHARGER_67DF25E57A988
                            session_limit_type:
                              type: string
                              example: null
                            session_limit_value:
                              type: integer
                              example: 0
                            created_at:
                              type: string
                              example: '2025-03-22T21:04:37.000000Z'
                            updated_at:
                              type: string
                              example: '2025-03-27T10:13:18.000000Z'
                            external_details_id:
                              type: string
                              example: null
                            identifier_update:
                              type: integer
                              example: 0
                            start_energy_value:
                              type: integer
                              example: 0
                            configured:
                              type: integer
                              example: 0
                            connected:
                              type: integer
                              example: 0
                            busy:
                              type: integer
                              example: 0
                            reserved:
                              type: integer
                              example: 0
                            charge_point_type_id:
                              type: string
                              example: null
                            charging_site_id:
                              type: string
                              example: null
                            media:
                              type: array
                              example: []
                            icon-image:
                              type: string
                              example: pin-cp-out-of-service
                            marker_title:
                              type: string
                              example: "PS_67DF25E57A981\n$0.00"
                            earning:
                              type: string
                              example: '0.00'
                        geometry:
                          type: object
                          properties:
                            type:
                              type: string
                              example: Point
                            coordinates:
                              type: array
                              example:
                                - '2.9176092880736184'
                                - '36.64575836483359'
                              items:
                                type: string
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the powercenter.'
        example: 3
        required: true
        schema:
          type: integer
  '/api/charge-points/{charge_point_id}/charge-point-prices':
    get:
      summary: 'Get a list of range prices for a given power center.'
      operationId: getAListOfRangePricesForAGivenPowerCenter
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n      \"success\": 1,\n      \"msg\": \"Done!\",\n      \"msg_arabic\": \"تمت العمليه بنجاح\",\n      \"results\": [\n          {\n              \"id\": 1,\n              \"price\": \"649310.24\",\n              \"startingTime\": \"10:00\",\n              \"endingTime\": \"13:00\"\n          },\n         ...\n      ]\n  }"
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
    post:
      summary: 'Store a new range price for a power center.'
      operationId: storeANewRangePriceForAPowerCenter
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                  results:
                    id: 5
                    price: '32.15'
                    startingTime: '07:57'
                    endingTime: '08:57'
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
                  results:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 5
                      price:
                        type: string
                        example: '32.15'
                      startingTime:
                        type: string
                        example: '07:57'
                      endingTime:
                        type: string
                        example: '08:57'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  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.'
                properties:
                  success:
                    type: integer
                    example: 0
                  message:
                    type: string
                    example: 'The price must be a number.'
                  errors:
                    type: object
                    properties:
                      price:
                        type: array
                        example:
                          - 'The price must be a number.'
                        items:
                          type: string
                      ending_time:
                        type: array
                        example:
                          - 'The ending time does not match the format H:i.'
                          - 'The ending time must be a date after starting time.'
                        items:
                          type: string
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                price:
                  type: number
                  description: ''
                  example: 7.372356
                  nullable: false
                startingTime:
                  type: string
                  description: 'Must be a valid date in the format <code>H:i</code>.'
                  example: '17:19'
                  nullable: false
                endingTime:
                  type: string
                  description: 'Must be a valid date in the format <code>H:i</code>.'
                  example: '17:19'
                  nullable: false
              required:
                - price
                - startingTime
                - endingTime
    parameters:
      -
        in: path
        name: charge_point_id
        description: 'The ID of the charge point.'
        example: minus
        required: true
        schema:
          type: string
  '/api/charge-point-prices/{id}':
    get:
      summary: 'Retrieve a specific range price.'
      operationId: retrieveASpecificRangePrice
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                  results:
                    id: 1
                    price: '649310.24'
                    startingTime: '10:00'
                    endingTime: '13:00'
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
                  results:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 1
                      price:
                        type: string
                        example: '649310.24'
                      startingTime:
                        type: string
                        example: '10:00'
                      endingTime:
                        type: string
                        example: '13:00'
        403:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: '{"success": 0,"error": "You don''t have permissions to access localhost on this server.}'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
    put:
      summary: 'Update an existing range price.'
      operationId: updateAnExistingRangePrice
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                  results:
                    id: 1
                    price: '694.67'
                    startingTime: '08:19'
                    endingTime: '09:19'
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
                  results:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 1
                      price:
                        type: string
                        example: '694.67'
                      startingTime:
                        type: string
                        example: '08:19'
                      endingTime:
                        type: string
                        example: '09:19'
        403:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: '{"success": 0,"error": "You don''t have permissions to access localhost on this server.}'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  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.'
                properties:
                  success:
                    type: integer
                    example: 0
                  message:
                    type: string
                    example: 'The price must be a number.'
                  errors:
                    type: object
                    properties:
                      price:
                        type: array
                        example:
                          - 'The price must be a number.'
                        items:
                          type: string
                      ending_time:
                        type: array
                        example:
                          - 'The ending time does not match the format H:i.'
                          - 'The ending time must be a date after starting time.'
                        items:
                          type: string
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                price:
                  type: number
                  description: ''
                  example: 348.49005261
                  nullable: false
                startingTime:
                  type: string
                  description: 'Must be a valid date in the format <code>H:i</code>.'
                  example: '17:19'
                  nullable: false
                endingTime:
                  type: string
                  description: 'Must be a valid date in the format <code>H:i</code>.'
                  example: '17:19'
                  nullable: false
              required:
                - price
                - startingTime
                - endingTime
    delete:
      summary: 'Delete a range price.'
      operationId: deleteARangePrice
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
        403:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: '{"success": 0,"error": "You don''t have permissions to access localhost on this server.}'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the charge point price.'
        example: 1
        required: true
        schema:
          type: integer
  /api/charge-point-groups/datatable:
    get:
      summary: 'Groups list. (datatable)'
      operationId: groupsListdatatable
      description: ''
      parameters:
        -
          in: query
          name: search
          description: 'Optional search query to filter groups.'
          example: quia
          required: false
          schema:
            type: string
            description: 'Optional search query to filter groups.'
            example: quia
            nullable: false
        -
          in: query
          name: itemsPerPage
          description: 'Number of groups per page.'
          example: 6
          required: false
          schema:
            type: integer
            description: 'Number of groups per page.'
            example: 6
            nullable: false
        -
          in: query
          name: power-centers
          description: 'If set to true, includes associated power centers in the response.'
          example: false
          required: false
          schema:
            type: boolean
            description: 'If set to true, includes associated power centers in the response.'
            example: false
            nullable: false
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n      \"success\": 1,\n      \"msg\": \"Done!\",\n      \"msg_arabic\": \"تمت العمليه بنجاح\",\n      \"results\": {\n          \"data\": [\n              {\n                  \"id\": 935,\n                  \"name\": \"Voluptatem qui cum.\",\n                  \"companyName\": null,\n                  \"licenseCode\": null,\n                  \"chargePointsNumber\": 0,\n                  \"chargePointsIds\": [],\n                  \"power_centers\": []\n              },\n              ...\n          ],\n          \"meta\": {\n              \"per_page\": 15,\n              \"total\": 1083\n          }\n      }\n  }\n\n @response 500 {\"success\": 0,\"msg\": \"Unauthenticated.\",\"msg_arabic\": \"Unauthenticated.\"}"
      tags:
        - 'Power centers management'
  /api/charge-point-groups:
    get:
      summary: 'Groups list.'
      operationId: groupsList
      description: ''
      parameters:
        -
          in: query
          name: power-centers
          description: 'If set to true, includes associated power centers in the response.'
          example: false
          required: false
          schema:
            type: boolean
            description: 'If set to true, includes associated power centers in the response.'
            example: false
            nullable: false
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n      \"success\": 1,\n      \"msg\": \"Done!\",\n      \"msg_arabic\": \"تمت العمليه بنجاح\",\n      \"results\": {\n          \"data\": [\n              {\n                  \"id\": 935,\n                  \"name\": \"Voluptatem qui cum.\",\n                  \"companyName\": null,\n                  \"licenseCode\": null,\n                  \"chargePointsNumber\": 0,\n                  \"chargePointsIds\": [],\n                  \"power_centers\": []\n              },\n              ...\n          ],\n          \"meta\": {\n              \"per_page\": 15,\n              \"total\": 1083\n          }\n      }\n  }\n\n @response 500 {\"success\": 0,\"msg\": \"Unauthenticated.\",\"msg_arabic\": \"Unauthenticated.\"}"
      tags:
        - 'Power centers management'
    post:
      summary: 'Create a new group.'
      operationId: createANewGroup
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                  results:
                    id: 1
                    name: 'Iusto sint enim doloremque.'
                    companyName: null
                    licenseCode: null
                    chargePointsNumber: 0
                    chargePointsIds: []
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
                  results:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 1
                      name:
                        type: string
                        example: 'Iusto sint enim doloremque.'
                      companyName:
                        type: string
                        example: null
                      licenseCode:
                        type: string
                        example: null
                      chargePointsNumber:
                        type: integer
                        example: 0
                      chargePointsIds:
                        type: array
                        example: []
        422:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n  \"success\": 0,\n  \"message\": \"Validation error\",\n  \"errors\": {\n    \"name\": [\"The name field is required.\"]\n  }\n}\n @response 500 {\"success\": 0,\"msg\": \"Unauthenticated.\",\"msg_arabic\": \"Unauthenticated.\"}"
      tags:
        - 'Power centers management'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must be at least 3 characters.'
                  example: tiuwgevwcpzxpinfnyqdeyvzeoiougwhutqlxmgffydzsblnefptaxfubhhx
                  nullable: false
                companyName:
                  type: string
                  description: 'Must be at least 3 characters.'
                  example: dpxqjqr
                  nullable: true
                licenseCode:
                  type: string
                  description: 'Must be at least 3 characters.'
                  example: nlyjwclbgwslzwloqybie
                  nullable: true
                chargePoints:
                  type: array
                  description: 'The <code>id</code> of an existing record in the charge_points table.'
                  example:
                    - magnam
                  items:
                    type: string
              required:
                - name
                - chargePoints
  '/api/charge-point-groups/{id}':
    get:
      summary: 'Get details of a specific group.'
      operationId: getDetailsOfASpecificGroup
      description: ''
      parameters:
        -
          in: query
          name: power-centers
          description: 'If set to true, includes associated power centers in the response.'
          example: true
          required: false
          schema:
            type: boolean
            description: 'If set to true, includes associated power centers in the response.'
            example: true
            nullable: false
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n      \"success\": 1,\n      \"msg\": \"Done!\",\n      \"msg_arabic\": \"تمت العمليه بنجاح\",\n      \"results\": {\n          \"id\": 1,\n          \"name\": \"Iusto sint enim doloremque.\",\n          \"companyName\": null,\n          \"licenseCode\": null,\n          \"chargePointsNumber\": 0,\n          \"chargePointsIds\": []\n      }\n  }\n\n @response 500 {\"success\": 0,\"msg\": \"Unauthenticated.\",\"msg_arabic\": \"Unauthenticated.\"}"
      tags:
        - 'Power centers management'
    put:
      summary: 'Update an existing group.'
      operationId: updateAnExistingGroup
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                  results:
                    id: 1
                    name: 'Iusto sint enim doloremque.'
                    companyName: null
                    licenseCode: null
                    chargePointsNumber: 0
                    chargePointsIds: []
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
                  results:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 1
                      name:
                        type: string
                        example: 'Iusto sint enim doloremque.'
                      companyName:
                        type: string
                        example: null
                      licenseCode:
                        type: string
                        example: null
                      chargePointsNumber:
                        type: integer
                        example: 0
                      chargePointsIds:
                        type: array
                        example: []
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  message: 'The API key is invalid or missing.'
                properties:
                  success:
                    type: integer
                    example: 0
                  message:
                    type: string
                    example: 'The API key is invalid or missing.'
        403:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: '{"success": 0,"error": "You don''t have permissions to access localhost on this server.}'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  message: 'Validation failed.'
                  errors:
                    name:
                      - 'The name field is required.'
                properties:
                  success:
                    type: integer
                    example: 0
                  message:
                    type: string
                    example: 'Validation failed.'
                  errors:
                    type: object
                    properties:
                      name:
                        type: array
                        example:
                          - 'The name field is required.'
                        items:
                          type: string
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must be at least 3 characters.'
                  example: ldgyqgxjhinuvjwdtshdlvlawwesdofqbazn
                  nullable: false
                companyName:
                  type: string
                  description: 'Must be at least 3 characters.'
                  example: wsjpmuwukkuqjbbwdiznvcgsljjszjxiajgyfuivkakwoqbpdomqk
                  nullable: true
                licenseCode:
                  type: string
                  description: 'Must be at least 3 characters.'
                  example: fxgrskcd
                  nullable: true
                chargePoints:
                  type: array
                  description: 'The <code>id</code> of an existing record in the charge_points table.'
                  example:
                    - id
                  items:
                    type: string
              required:
                - name
                - chargePoints
    delete:
      summary: 'Delete a group.'
      operationId: deleteAGroup
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
        403:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: '{"success": 0,"error": "You don''t have permissions to access localhost on this server.}'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the charge point group.'
        example: 1
        required: true
        schema:
          type: integer
  /api/charging-sites/datatable:
    get:
      summary: 'Sites list (datatable).'
      operationId: sitesListdatatable
      description: ''
      parameters:
        -
          in: query
          name: search
          description: 'Optional search query to filter sites.'
          example: reprehenderit
          required: false
          schema:
            type: string
            description: 'Optional search query to filter sites.'
            example: reprehenderit
            nullable: false
        -
          in: query
          name: itemsPerPage
          description: 'Number of sites per page. Defaults to 15.'
          example: 6
          required: false
          schema:
            type: integer
            description: 'Number of sites per page. Defaults to 15.'
            example: 6
            nullable: false
        -
          in: query
          name: power-centers
          description: 'If set to true, includes associated power centers in the response.'
          example: true
          required: false
          schema:
            type: boolean
            description: 'If set to true, includes associated power centers in the response.'
            example: true
            nullable: false
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n      \"success\": 1,\n      \"msg\": \"Done!\",\n      \"msg_arabic\": \"تمت العمليه بنجاح\",\n      \"results\": {\n          \"data\": [\n              {\n                  \"id\": 164,\n                  \"categoryId\": null,\n                  \"name\": \"Site 11\",\n                  \"status\": true,\n                  \"active\": true,\n                  \"startDate\": null,\n                  \"endDate\": null,\n                  \"integrationCode\": null,\n                  \"chargePointIds\": [\n                      20,\n                      21\n                  ],\n                  \"address\": {\n                      \"id\": 161,\n                      \"latitude\": \"28.608637026617\",\n                      \"longitude\": \"14.589843749997\",\n                      \"country\": {\n                          \"id\": 195,\n                          \"name\": \"Algeria\"\n                      },\n                      \"state\": \"test\",\n                      \"city\": \"Douera\",\n                      \"zipcode\": \"16049\",\n                      \"address_line_1\": \"CITY 100 LOGS DEKAKNA DOUERA\",\n                      \"address_line_2\": null,\n                      \"address_line_3\": null\n                  },\n                  \"power_centers\": []\n              },\n              ...\n          ],\n          \"meta\": {\n              \"per_page\": 15,\n              \"total\": 108\n          }\n      }\n  }"
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
  /api/charging-sites:
    get:
      summary: 'Sites list.'
      operationId: sitesList
      description: ''
      parameters:
        -
          in: query
          name: power-centers
          description: 'If set to true, includes associated power centers in the response.'
          example: true
          required: false
          schema:
            type: boolean
            description: 'If set to true, includes associated power centers in the response.'
            example: true
            nullable: false
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n      \"success\": 1,\n      \"msg\": \"Done!\",\n      \"msg_arabic\": \"تمت العمليه بنجاح\",\n      \"results\": [\n          {\n              \"id\": 164,\n              \"categoryId\": null,\n              \"name\": \"Site 11\",\n              \"status\": true,\n              \"active\": true,\n              \"startDate\": null,\n              \"endDate\": null,\n              \"integrationCode\": null,\n              \"chargePointIds\": [\n                  20,\n                  21\n              ],\n              \"address\": {\n                 \"id\": 161,\n                 \"latitude\": \"28.608637026617\",\n                 \"longitude\": \"14.589843749997\",\n                 \"country\": {\n                     \"id\": 195,\n                     \"name\": \"Algeria\"\n                 },\n                 \"state\": \"test\",\n                 \"city\": \"Douera\",\n                 \"zipcode\": \"16049\",\n                 \"address_line_1\": \"CITY 100 LOGS DEKAKNA DOUERA\",\n                 \"address_line_2\": null,\n                 \"address_line_3\": null\n             },\n             \"power_centers\": []\n          },\n          ...\n      ]\n  }"
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
    post:
      summary: 'Create a new site.'
      operationId: createANewSite
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  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: []
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
                  results:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 159
                      categoryId:
                        type: integer
                        example: 51
                      name:
                        type: string
                        example: test
                      status:
                        type: boolean
                        example: true
                      active:
                        type: boolean
                        example: true
                      startDate:
                        type: string
                        example: '2024-10-10'
                      endDate:
                        type: string
                        example: '2024-10-11'
                      integrationCode:
                        type: string
                        example: null
                      chargePointIds:
                        type: array
                        example: []
                      address:
                        type: object
                        properties:
                          id:
                            type: integer
                            example: 161
                          latitude:
                            type: string
                            example: '28.608637026617'
                          longitude:
                            type: string
                            example: '14.589843749997'
                          country:
                            type: object
                            properties:
                              id:
                                type: integer
                                example: 195
                              name:
                                type: string
                                example: Algeria
                          state:
                            type: string
                            example: test
                          city:
                            type: string
                            example: Douera
                          zipcode:
                            type: string
                            example: '16049'
                          address_line_1:
                            type: string
                            example: 'CITY 100 LOGS DEKAKNA DOUERA'
                          address_line_2:
                            type: string
                            example: null
                          address_line_3:
                            type: string
                            example: null
                      power_centers:
                        type: array
                        example: []
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  message: 'Validation error.'
                  errors:
                    name:
                      - 'The name field is required.'
                properties:
                  success:
                    type: integer
                    example: 0
                  message:
                    type: string
                    example: 'Validation error.'
                  errors:
                    type: object
                    properties:
                      name:
                        type: array
                        example:
                          - 'The name field is required.'
                        items:
                          type: string
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must be at least 3 characters.'
                  example: qgbgfqvykivjmoazldlfhqsylikljabctuuybrzxpyurt
                  nullable: false
                category:
                  type: integer
                  description: 'The <code>id</code> of an existing record in the categories table.'
                  example: 14
                  nullable: true
                status:
                  type: boolean
                  description: ''
                  example: false
                  nullable: false
                startDate:
                  type: string
                  description: 'Must be a valid date. Must be a date before <code>endDate</code>.'
                  example: '2022-07-17'
                  nullable: true
                endDate:
                  type: string
                  description: 'Must be a valid date. Must be a date after or equal to <code>today</code>.'
                  example: '2032-09-27'
                  nullable: true
                integrationCode:
                  type: string
                  description: ''
                  example: architecto
                  nullable: true
                chargePoints:
                  type: array
                  description: 'The <code>id</code> of an existing record in the charge_points table.'
                  example:
                    - 13
                  items:
                    type: integer
                address:
                  type: object
                  description: ''
                  example: []
                  nullable: false
                  properties:
                    country_id:
                      type: integer
                      description: 'The <code>id</code> of an existing record in the countries table.'
                      example: 5
                      nullable: false
                    state:
                      type: string
                      description: ''
                      example: consequuntur
                      nullable: false
                    city:
                      type: string
                      description: ''
                      example: nam
                      nullable: false
                    zipcode:
                      type: string
                      description: 'Must be 5 characters.'
                      example: pfdqm
                      nullable: true
                    address_line_1:
                      type: string
                      description: ''
                      example: quae
                      nullable: false
                    address_line_2:
                      type: string
                      description: ''
                      example: aperiam
                      nullable: true
                    latitude:
                      type: number
                      description: ''
                      example: 20489.0
                      nullable: false
                    longitude:
                      type: number
                      description: ''
                      example: 0.0
                      nullable: false
                  required:
                    - country_id
                    - state
                    - city
                    - address_line_1
                    - latitude
                    - longitude
              required:
                - name
                - status
                - chargePoints
  '/api/charging-sites/{id}':
    get:
      summary: 'Get details of a specific site.'
      operationId: getDetailsOfASpecificSite
      description: ''
      parameters:
        -
          in: query
          name: power-centers
          description: 'If set to true, includes associated power centers in the response.'
          example: false
          required: false
          schema:
            type: boolean
            description: 'If set to true, includes associated power centers in the response.'
            example: false
            nullable: false
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  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: []
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
                  results:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 159
                      categoryId:
                        type: integer
                        example: 51
                      name:
                        type: string
                        example: test
                      status:
                        type: boolean
                        example: true
                      active:
                        type: boolean
                        example: true
                      startDate:
                        type: string
                        example: '2024-10-10'
                      endDate:
                        type: string
                        example: '2024-10-11'
                      integrationCode:
                        type: string
                        example: null
                      chargePointIds:
                        type: array
                        example: []
                      address:
                        type: object
                        properties:
                          id:
                            type: integer
                            example: 161
                          latitude:
                            type: string
                            example: '28.608637026617'
                          longitude:
                            type: string
                            example: '14.589843749997'
                          country:
                            type: object
                            properties:
                              id:
                                type: integer
                                example: 195
                              name:
                                type: string
                                example: Algeria
                          state:
                            type: string
                            example: test
                          city:
                            type: string
                            example: Douera
                          zipcode:
                            type: string
                            example: '16049'
                          address_line_1:
                            type: string
                            example: 'CITY 100 LOGS DEKAKNA DOUERA'
                          address_line_2:
                            type: string
                            example: null
                          address_line_3:
                            type: string
                            example: null
                      power_centers:
                        type: array
                        example: []
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
    put:
      summary: 'Update an existing site.'
      operationId: updateAnExistingSite
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  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: []
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
                  results:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 159
                      categoryId:
                        type: integer
                        example: 51
                      name:
                        type: string
                        example: test
                      status:
                        type: boolean
                        example: true
                      active:
                        type: boolean
                        example: true
                      startDate:
                        type: string
                        example: '2024-10-10'
                      endDate:
                        type: string
                        example: '2024-10-11'
                      integrationCode:
                        type: string
                        example: null
                      chargePointIds:
                        type: array
                        example: []
                      address:
                        type: object
                        properties:
                          id:
                            type: integer
                            example: 161
                          latitude:
                            type: string
                            example: '28.608637026617'
                          longitude:
                            type: string
                            example: '14.589843749997'
                          country:
                            type: object
                            properties:
                              id:
                                type: integer
                                example: 195
                              name:
                                type: string
                                example: Algeria
                          state:
                            type: string
                            example: test
                          city:
                            type: string
                            example: Douera
                          zipcode:
                            type: string
                            example: '16049'
                          address_line_1:
                            type: string
                            example: 'CITY 100 LOGS DEKAKNA DOUERA'
                          address_line_2:
                            type: string
                            example: null
                          address_line_3:
                            type: string
                            example: null
                      power_centers:
                        type: array
                        example: []
        403:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: '{"success": 0,"error": "You don''t have permissions to access localhost on this server.}'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  message: 'Validation error.'
                  errors:
                    name:
                      - 'The name field is required.'
                properties:
                  success:
                    type: integer
                    example: 0
                  message:
                    type: string
                    example: 'Validation error.'
                  errors:
                    type: object
                    properties:
                      name:
                        type: array
                        example:
                          - 'The name field is required.'
                        items:
                          type: string
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must be at least 3 characters.'
                  example: vfqijlizigvxqtteosaflltcdlbqeemuaygdndyyyfhciafbtbnpnipsdoffpfdicrnycbbxdrmikfadriavbd
                  nullable: false
                category:
                  type: integer
                  description: 'The <code>id</code> of an existing record in the categories table.'
                  example: 2
                  nullable: true
                status:
                  type: boolean
                  description: ''
                  example: false
                  nullable: false
                startDate:
                  type: string
                  description: 'Must be a valid date. Must be a date before <code>endDate</code>.'
                  example: '2018-11-14'
                  nullable: true
                endDate:
                  type: string
                  description: 'Must be a valid date. Must be a date after or equal to <code>today</code>.'
                  example: '2073-11-07'
                  nullable: true
                integrationCode:
                  type: string
                  description: ''
                  example: modi
                  nullable: true
                chargePoints:
                  type: array
                  description: 'The <code>id</code> of an existing record in the charge_points table.'
                  example:
                    - 20
                  items:
                    type: integer
                address:
                  type: object
                  description: ''
                  example: []
                  nullable: false
                  properties:
                    country_id:
                      type: integer
                      description: 'The <code>id</code> of an existing record in the countries table.'
                      example: 12
                      nullable: false
                    state:
                      type: string
                      description: ''
                      example: omnis
                      nullable: false
                    city:
                      type: string
                      description: ''
                      example: dolor
                      nullable: false
                    zipcode:
                      type: string
                      description: 'Must be 5 characters.'
                      example: ycfho
                      nullable: true
                    address_line_1:
                      type: string
                      description: ''
                      example: voluptates
                      nullable: false
                    address_line_2:
                      type: string
                      description: ''
                      example: est
                      nullable: true
                    latitude:
                      type: number
                      description: ''
                      example: 2998685.0464812
                      nullable: false
                    longitude:
                      type: number
                      description: ''
                      example: 1305.9
                      nullable: false
                  required:
                    - country_id
                    - state
                    - city
                    - address_line_1
                    - latitude
                    - longitude
              required:
                - name
                - status
                - chargePoints
    delete:
      summary: 'Delete a site.'
      operationId: deleteASite
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
        403:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: '{"success": 0,"error": "You don''t have permissions to access localhost on this server.}'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Power centers management'
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the charging site.'
        example: 1
        required: true
        schema:
          type: integer
  /api/workers/datatable:
    get:
      summary: 'Workers list. (datatable)'
      operationId: workersListdatatable
      description: ''
      parameters:
        -
          in: query
          name: search
          description: 'Optional search query to filter categories.'
          example: optio
          required: false
          schema:
            type: string
            description: 'Optional search query to filter categories.'
            example: optio
            nullable: false
        -
          in: query
          name: itemsPerPage
          description: 'Number of items per page (-1 for all).'
          example: 18
          required: false
          schema:
            type: integer
            description: 'Number of items per page (-1 for all).'
            example: 18
            nullable: false
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n      \"success\": 1,\n      \"msg\": \"Done!\",\n      \"msg_arabic\": \"تمت العمليه بنجاح\",\n      \"results\": {\n          \"data\": [\n              {\n                   \"id\":34,\n                   \"first_name\":\"service\",\n                   \"last_name\":\"test 2\",\n                   \"name\":\"service test 2\",\n                   \"email\":\"servicetest2@gmail.com\",\n                   \"rfid\":\"123131321123\",\n                   \"expire_at\":\"2025-03-31\",\n                   \"cash_on_hands\":\"0\"\n                },\n              ...\n          ],\n          \"meta\": {\n              \"per_page\": 15,\n              \"total\": 55\n          }\n      }\n }"
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Workers CRUD'
  '/api/workers/{worker_id}/reset-balance':
    get:
      summary: "Reset a worker's balance."
      operationId: resetAWorkersBalance
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
        403:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: '{"success": 0,"error": "You don''t have permissions to access localhost on this server.}'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Workers CRUD'
    parameters:
      -
        in: path
        name: worker_id
        description: 'The ID of the worker.'
        example: 1
        required: true
        schema:
          type: integer
  /api/workers:
    get:
      summary: 'Workers list.'
      operationId: workersList
      description: 'All workers owned by the current user.'
      parameters:
        -
          in: query
          name: search
          description: 'Optional search query to filter workers.'
          example: odio
          required: false
          schema:
            type: string
            description: 'Optional search query to filter workers.'
            example: odio
            nullable: false
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n      \"success\": 1,\n      \"msg\": \"Done!\",\n      \"msg_arabic\": \"تمت العمليه بنجاح\",\n      \"results\": {\n          \"data\": [\n              {\n                  \"id\": 33,\n                  \"first_name\": \"service\",\n                  \"last_name\": \"test 1\",\n                  \"name\": \"service test 1\",\n                  \"email\": \"servicetest1@gmail.com\",\n                  \"rfid\": \"123131321122\",\n                  \"expire_at\": \"2025-03-31\",\n                  \"cash_on_hands\": \"0\"\n              },\n              ...\n          ],\n          \"meta\": {\n              \"per_page\": -1,\n              \"total\": 3\n          }\n      }\n  }"
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Workers CRUD'
    post:
      summary: 'Create a new worker.'
      operationId: createANewWorker
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                  results:
                    id: 1
                    first_name: yasser
                    last_name: belhimer
                    name: 'yasser belhimer'
                    email: y.belhimer@gasable.com
                    rfid: null
                    expire_at: '1970-01-01'
                    cash_on_hands: null
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
                  results:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 1
                      first_name:
                        type: string
                        example: yasser
                      last_name:
                        type: string
                        example: belhimer
                      name:
                        type: string
                        example: 'yasser belhimer'
                      email:
                        type: string
                        example: y.belhimer@gasable.com
                      rfid:
                        type: string
                        example: null
                      expire_at:
                        type: string
                        example: '1970-01-01'
                      cash_on_hands:
                        type: string
                        example: null
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  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.'
                properties:
                  success:
                    type: integer
                    example: 0
                  message:
                    type: string
                    example: 'The firstname field is required.'
                  errors:
                    type: object
                    properties:
                      first_name:
                        type: array
                        example:
                          - 'The firstname field is required.'
                        items:
                          type: string
                      last_name:
                        type: array
                        example:
                          - 'The lastname field is required.'
                        items:
                          type: string
                      email:
                        type: array
                        example:
                          - 'The e-mail address field is required.'
                        items:
                          type: string
                      rfid:
                        type: array
                        example:
                          - 'The rfid field is required.'
                        items:
                          type: string
                      expire_at:
                        type: array
                        example:
                          - 'The expiration date field is required.'
                        items:
                          type: string
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Workers CRUD'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                first_name:
                  type: string
                  description: 'The first name of the worker. Must be at least 3 characters long. Must be at least 3 characters.'
                  example: John
                  nullable: false
                last_name:
                  type: string
                  description: 'The last name of the worker. Must be at least 3 characters long. Must be at least 3 characters.'
                  example: Doe
                  nullable: false
                email:
                  type: string
                  description: 'The email address of the worker. Must be a valid email format. Must be a valid email address.'
                  example: johndoe@example.com
                  nullable: false
                rfid:
                  type: string
                  description: 'The RFID tag assigned to the worker. Must be at least 12 characters long and unique. Must be at least 12 characters.'
                  example: '123456789012'
                  nullable: false
                expire_at:
                  type: string
                  description: 'Expiration date for the RFID tag. Must be a future date. Must be a valid date. Must be a date after <code>today</code>.'
                  example: '2025-12-31'
                  nullable: false
              required:
                - first_name
                - last_name
                - email
                - rfid
                - expire_at
  '/api/workers/{id}':
    get:
      summary: 'Get details of a specific worker.'
      operationId: getDetailsOfASpecificWorker
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                  results:
                    id: 1
                    first_name: yasser
                    last_name: belhimer
                    name: 'yasser belhimer'
                    email: y.belhimer@gasable.com
                    rfid: null
                    expire_at: '1970-01-01'
                    cash_on_hands: null
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
                  results:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 1
                      first_name:
                        type: string
                        example: yasser
                      last_name:
                        type: string
                        example: belhimer
                      name:
                        type: string
                        example: 'yasser belhimer'
                      email:
                        type: string
                        example: y.belhimer@gasable.com
                      rfid:
                        type: string
                        example: null
                      expire_at:
                        type: string
                        example: '1970-01-01'
                      cash_on_hands:
                        type: string
                        example: null
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Workers CRUD'
    put:
      summary: 'Update an existing worker.'
      operationId: updateAnExistingWorker
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                  results:
                    id: 1
                    first_name: yasser
                    last_name: belhimer
                    name: 'yasser belhimer'
                    email: y.belhimer@gasable.com
                    rfid: null
                    expire_at: '1970-01-01'
                    cash_on_hands: null
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
                  results:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 1
                      first_name:
                        type: string
                        example: yasser
                      last_name:
                        type: string
                        example: belhimer
                      name:
                        type: string
                        example: 'yasser belhimer'
                      email:
                        type: string
                        example: y.belhimer@gasable.com
                      rfid:
                        type: string
                        example: null
                      expire_at:
                        type: string
                        example: '1970-01-01'
                      cash_on_hands:
                        type: string
                        example: null
        403:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: '{"success": 0,"error": "You don''t have permissions to access localhost on this server.}'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  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.'
                properties:
                  success:
                    type: integer
                    example: 0
                  message:
                    type: string
                    example: 'The firstname field is required.'
                  errors:
                    type: object
                    properties:
                      first_name:
                        type: array
                        example:
                          - 'The firstname field is required.'
                        items:
                          type: string
                      last_name:
                        type: array
                        example:
                          - 'The lastname field is required.'
                        items:
                          type: string
                      email:
                        type: array
                        example:
                          - 'The e-mail address field is required.'
                        items:
                          type: string
                      rfid:
                        type: array
                        example:
                          - 'The rfid field is required.'
                        items:
                          type: string
                      expire_at:
                        type: array
                        example:
                          - 'The expiration date field is required.'
                        items:
                          type: string
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Workers CRUD'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                first_name:
                  type: string
                  description: 'The first name of the worker. Required for PUT requests. Must be at least 3 characters.'
                  example: John
                  nullable: false
                last_name:
                  type: string
                  description: 'The last name of the worker. Required for PUT requests. Must be at least 3 characters.'
                  example: Doe
                  nullable: false
                email:
                  type: string
                  description: 'The email address of the worker. Required for PUT requests. Must be a valid email address.'
                  example: johndoe@example.com
                  nullable: false
                rfid:
                  type: string
                  description: 'The RFID tag assigned to the worker. Must be unique and at least 12 characters long. Must be at least 12 characters.'
                  example: '123456789012'
                  nullable: false
                expire_at:
                  type: string
                  description: 'Expiration date for the RFID tag. Must be a future date. Must be a valid date. Must be a date after <code>today</code>.'
                  example: '2025-12-31'
                  nullable: false
              required:
                - first_name
                - last_name
                - email
                - rfid
                - expire_at
    delete:
      summary: 'Delete a worker.'
      operationId: deleteAWorker
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 1
                  msg: Done!
                  msg_arabic: 'تمت العمليه بنجاح'
                properties:
                  success:
                    type: integer
                    example: 1
                  msg:
                    type: string
                    example: Done!
                  msg_arabic:
                    type: string
                    example: 'تمت العمليه بنجاح'
        403:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: '{"success": 0,"error": "You don''t have permissions to access localhost on this server.}'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: 0
                  msg: Unauthenticated.
                  msg_arabic: Unauthenticated.
                properties:
                  success:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    example: Unauthenticated.
                  msg_arabic:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Workers CRUD'
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the worker.'
        example: 1
        required: true
        schema:
          type: integer
tags:
  -
    name: Auth
    description: ''
  -
    name: 'Authenticated user data'
    description: ''
  -
    name: 'Categories CRUD'
    description: ''
  -
    name: Endpoints
    description: ''
  -
    name: Feedbacks
    description: ''
  -
    name: Location
    description: ''
  -
    name: Orders
    description: ''
  -
    name: 'Payout methods'
    description: "\nEndpoints for managing payout methods for the authenticated user."
  -
    name: Payouts
    description: ''
  -
    name: 'Power centers management'
    description: ''
  -
    name: 'Workers CRUD'
    description: ''
components:
  securitySchemes:
    default:
      type: http
      scheme: bearer
      description: ''
security:
  -
    default: []
