> ## Documentation Index
> Fetch the complete documentation index at: https://docsv4.mile.app/llms.txt
> Use this file to discover all available pages before exploring further.

# List add-ons

> Retrieves a paginated list of add-ons accessible to your organization, including both organization-specific add-ons and global system add-ons. Supports search, filtering, and sorting with Laravel pagination.



## OpenAPI

````yaml /openapi/public/openapi-setting.json get /addons
openapi: 3.0.0
info:
  title: API - Setting
  version: 3.0.0
  description: API Documentation - RESTful API for field operations management.
servers:
  - url: https://apiweb.mile.app/api/v3
security:
  - bearerAuth: []
tags:
  - name: User
    description: >-
      User data includes information contained within a user account, such as
      details that define a user's hub access and role within the system. Hub
      access determines the locations or areas of the application a user can
      access or the specific actions they can perform. User attributes consist
      of the user ID, name, email, and status.


      The app provides five predefined user roles, and you can create custom
      roles based on your organization's needs. The predefined roles are
      **Owner, Admin, Planner, and Field user**. A user can only hold one role
      at a time but can be granted access to multiple hubs.
  - name: Team
    description: >-
      This API allows you to manage teams. It serves as a tool to effectively
      manage and restrict user task assignments within your organization.


      **To see the details of team object, please follow [this
      link](#tag/team_model)**
  - name: Role
    description: >-
      This API enables you to retrieve a list of predefined roles and any custom
      roles associated with your account. By making a GET request to this API,
      you can obtain information about the available roles within the system.
      The predefined roles refer to a set of role types that are already defined
      by the system. In this particular case, the predefined roles include
      Finance, Owner, Planner, Admin, and Field User. Additionally, the API may
      also return any custom roles that have been created within your account.


      **To see the details of role object, please follow [this
      link](#tag/role_model)**
  - name: Hub
    description: >-
      In our system, a Hub is a fundamental entity within an organization,
      serving as the central point for managing various operational components.
      It acts as the parent structure for a wide range of resources and
      functionalities, including tasks, visits, users, vehicles, routing
      results, routing configurations, and data sources.


      **To see the details of hub object, please follow [this
      link](#tag/hub_model)**


      ## Conceptual Understanding of Hubs


      - **User Perspective:** For users, a Hub represents their headquarters or
      primary working area. It is where they carry out their daily activities
      and manage their tasks effectively. Each user interacts with the Hub to
      access resources and perform operations specific to their roles.


      - **Task Perspective:** From the perspective of task management, the Hub
      signifies the working area for tasks. It is the location where tasks are
      initiated, monitored, and completed. The Hub facilitates organization and
      efficiency in task execution.


      - **Routing Perspective:** In the context of routing and logistics, a Hub
      serves as a critical location for vehicles. It is where vehicles begin
      their routes, return after completing their journeys, and may make
      strategic stops along the way. The routing module relies on the Hub to
      optimize vehicle assignments and manage routes effectively.
  - name: App Integration
    description: >-
      This API allows you to manage Integration of enterprise app. Currently
      available for Azure.


      **To see the details of integration object, please follow [this
      link](#tag/app_integration_model)**
  - name: Plugin
    description: >-
      The Plugin API allows developers to create and manage custom add-ons
      within the app. Plugins enable dynamic functionality through JavaScript
      resources and custom icons, allowing organizations to extend platform
      capabilities with custom features and integrations.


      **To see the details of plugin object, please follow [this
      link](#tag/plugin_model)**
  - name: Organization
    description: >-
      Organization management endpoints for configuring organization-level
      settings and preferences.
  - name: Addon
    description: Addon endpoints
  - name: Custom Module
    description: >-
      A "custom module" is like a personalized menu option in MileApp. It's
      something you can create and customize to make it easy to access specific
      features or content.
  - name: Password Policy
    description: >-
      Password Policy endpoints for configuring password requirements and
      security policies for your organization.
  - name: Trash
    description: >-
      Trash lists items that were deleted from your organization, so you can see
      what was removed and when.
paths:
  /addons:
    get:
      tags:
        - Addon
      summary: List add-ons
      description: >-
        Retrieves a paginated list of add-ons accessible to your organization,
        including both organization-specific add-ons and global system add-ons.
        Supports search, filtering, and sorting with Laravel pagination.
      operationId: listAddons
      parameters:
        - name: q
          in: query
          required: false
          description: Search query to filter add-ons by name or description
          schema:
            type: string
            maxLength: 255
        - name: sortBy
          in: query
          required: false
          description: Field to sort by
          schema:
            type: string
            enum:
              - name
              - createdTime
              - updatedTime
              - usageCount
            default: createdTime
        - name: sortOrder
          in: query
          required: false
          description: Sort order (ascending or descending)
          schema:
            type: string
            enum:
              - asc
              - desc
            default: desc
        - name: page
          in: query
          required: false
          description: Page number for pagination
          schema:
            type: integer
            minimum: 1
            maximum: 1000
            default: 1
        - name: limit
          in: query
          required: false
          description: Number of items per page (maximum 100)
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 10
        - name: status
          in: query
          required: false
          description: Filter by add-on status
          schema:
            type: string
            enum:
              - active
              - inactive
              - draft
      responses:
        '200':
          description: Add-ons list retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddonListResponse'
        '400':
          description: Bad Request - Invalid query parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized - Invalid or missing access token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests - Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      deprecated: false
      security:
        - bearerAuth: []
components:
  schemas:
    AddonListResponse:
      type: object
      properties:
        status:
          type: boolean
          description: Operation success status
          example: true
        message:
          type: string
          description: Success message
          example: Success.
        data:
          type: object
          description: Laravel pagination response with add-on data
          properties:
            current_page:
              type: integer
              description: Current page number
              example: 1
              minimum: 1
            data:
              type: array
              description: Array of add-on objects for current page
              items:
                $ref: '#/components/schemas/Addon'
            first_page_url:
              type: string
              description: URL for first page
              example: https://api.mile.app/api/v3/addons?page=1
            from:
              type: integer
              description: First item number on current page
              example: 1
              minimum: 0
            last_page:
              type: integer
              description: Total number of pages
              example: 1
              minimum: 1
            last_page_url:
              type: string
              description: URL for last page
              example: https://api.mile.app/api/v3/addons?page=1
            links:
              type: array
              description: Pagination navigation links
              items:
                type: object
                properties:
                  url:
                    type: string
                    description: Link URL (null for disabled links)
                  label:
                    type: string
                    description: Link display label
                  active:
                    type: boolean
                    description: Whether link represents current page
            next_page_url:
              type: string
              description: URL for next page (null if last page)
              example: null
            path:
              type: string
              description: Base API endpoint path
              example: https://api.mile.app/api/v3/addons
            per_page:
              type: integer
              description: Number of items per page
              example: 10
              minimum: 1
              maximum: 100
            prev_page_url:
              type: string
              description: URL for previous page (null if first page)
              example: null
            to:
              type: integer
              description: Last item number on current page
              example: 2
              minimum: 0
            total:
              type: integer
              description: Total number of add-ons across all pages
              example: 2
              minimum: 0
          required:
            - current_page
            - data
            - first_page_url
            - from
            - last_page
            - last_page_url
            - links
            - next_page_url
            - path
            - per_page
            - prev_page_url
            - to
            - total
      required:
        - status
        - message
        - data
    ErrorResponse:
      title: ErrorResponse
      type: object
      description: Standard error response structure
      properties:
        status:
          type: boolean
          description: Always false for error responses
        message:
          type: string
          description: Human-readable error message
        failedCode:
          type: string
          description: Error code for debugging and error tracking
      required:
        - status
        - message
    Addon:
      type: object
      properties:
        id:
          type: string
          description: >-
            Unique add-on identifier (MongoDB ObjectId). **Example**:
            `68b440c9dad4c5d45707f6d2`
        name:
          type: string
          description: >-
            Add-on display name (3-100 characters). **Example**: `Custom
            Dashboard Widget`
        description:
          type: string
        resourceFile:
          type: string
          description: >-
            Original filename of the JavaScript resource. **Example**:
            `1756656087_Custom-Dashboard-Widget.js`
        icon:
          type: string
          nullable: true
          description: >-
            Full URL to the add-on icon (if available). **Example**:
            `https://cdn.mile.app/plugins/icons/1756656087_dashboard-widget.svg`
        organizationId:
          type: string
          description: >-
            Organization identifier. 'system' for global add-ons, organization
            ID for custom add-ons. **Example**: `686cc0ff083ca8093204f002` or
            `system`
        resourceUrl:
          type: string
          description: >-
            Full URL where the JavaScript resource is hosted. **Example**:
            `https://cdn.mile.app/plugins/2025/08/31/686cc0ff083ca8093204f002/1756656087_Custom-Dashboard-Widget.js`
        createdBy:
          type: string
          description: >-
            Email address of the user who created the add-on. **Example**:
            `user@example.com`
        updatedBy:
          type: string
          nullable: true
          description: >-
            Email address of the user who last updated the add-on. May be null
            if never updated. **Example**: `user@example.com`
        createdTime:
          type: string
          format: date-time
          description: >-
            ISO 8601 timestamp when the add-on was created. **Format**:
            `YYYY-MM-DDTHH:mm:ss.ffffffZ`. **Example**:
            `2025-08-31T10:30:00.000000Z`
        updatedTime:
          type: string
          format: date-time
          description: >-
            ISO 8601 timestamp when the add-on was last updated. **Format**:
            `YYYY-MM-DDTHH:mm:ss.ffffffZ`. **Example**:
            `2025-08-31T10:35:00.000000Z`
        organizationName:
          type: string
          description: >-
            Organization display name. 'Global' for system add-ons, actual
            organization name for custom add-ons. **Example**: `Acme Logistics`
            or `Global`
        isUsed:
          type: boolean
          description: >-
            Indicates if the add-on is currently active/installed in your
            organization. **Example**: `false`
        isPublished:
          type: boolean
          description: >-
            Whether the add-on is published and visible to client users. Only
            applicable to system (global) add-ons.
          example: true
        customModuleId:
          type: string
          nullable: true
          description: >-
            ID of associated custom module or null if standalone. **Example**:
            `null` or `62846484ed5be87b6f4358f3`
      required:
        - id
        - name
        - description
        - resourceFile
        - organizationId
        - resourceUrl
        - createdBy
        - createdTime
        - updatedTime
        - organizationName
        - isUsed
      example:
        id: 68b440c9dad4c5d45707f6d2
        name: Custom Dashboard Widget
        description: A custom widget for displaying real-time analytics data
        resourceFile: 1756656087_Custom-Dashboard-Widget.js
        icon: https://cdn.mile.app/plugins/icons/1756656087_dashboard-widget.svg
        organizationId: 686cc0ff083ca8093204f002
        resourceUrl: >-
          https://cdn.mile.app/plugins/2025/08/31/686cc0ff083ca8093204f002/1756656087_Custom-Dashboard-Widget.js
        createdBy: user@example.com
        updatedBy: user@example.com
        createdTime: '2025-08-31T10:30:00.000000Z'
        updatedTime: '2025-08-31T10:35:00.000000Z'
        organizationName: Acme Logistics
        isUsed: false
        isPublished: true
        customModuleId: null
        status: active
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Use a valid Bearer token to authenticate.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.