title: “Custom REST / JSON Endpoint Module” description: “Declarative JSON REST client polling arbitrary HTTP endpoints with dot-notation field mapping into feed cards.”

☁️ Custom REST / JSON Endpoint Module

ID: plugin_dynamic_rest
Category: Custom REST / Webhooks
Version: 1.0.1
Author: RPDevs
Default Installed: No (Install via Repository or In-App Creator)
Icon: Cloud

The Custom REST / JSON Endpoint module is the universal adapter for RPDev Feed. It allows power users to connect any internal or external HTTP REST API (Docker, Gotify, Node-RED, self-hosted dashboards) and map the response fields into status badges, timeline rows, and composite cards using intuitive dot-notation syntax.


🏗️ Architecture & Data Ingestion

graph LR
    API["Any HTTP/JSON Endpoint<br/>(e.g., https://api.github.com/zen)"]
    Client["DynamicRestPlugin.kt"]
    Card["Rendered HubCardData"]

    Client -->|HTTP GET with Custom Headers| API
    API -->|Raw JSON Response| Client
    Client -->|JSON Pointer Extraction (e.g. 'data.status')| Card

⚙️ Configuration Reference

Parameter KeyLabelTypeDefault ValueDescription
rest_urlREST Endpoint URLString"https://api.github.com/zen"HTTP/HTTPS URL returning JSON or plain text.
auth_headerAuthorization HeaderString""Optional HTTP Authorization header (e.g. "Bearer my_token").
json_title_pathJSON Path for Title / MessageString"message"JSON key name or dot-notation path to extract for card text.
display_titleModule TitleString"REST Monitor"Title shown on the card header.

🛡️ Privacy & Security Audit

  • Permissions Required: android.permission.INTERNET.
  • Local Authentication: Secrets and tokens remain encrypted in Android SharedPreferences and are only transmitted to the configured endpoint URL.

📋 Sample HubCardData JSON Output

{
  "id": "card_dynamic_rest",
  "pluginId": "plugin_dynamic_rest",
  "title": "REST Monitor • Production Status",
  "summary": "All systems operational (100% uptime)",
  "iconName": "Cloud",
  "priority": 75,
  "chips": [
    { "label": "HTTP 200 OK", "color": "green" },
    { "label": "Latency 42ms", "color": "gray" }
  ]
}