Skip to content

Latest commit

ย 

History

History
526 lines (386 loc) ยท 10.9 KB

File metadata and controls

526 lines (386 loc) ยท 10.9 KB

๐Ÿ“ŒDashboard API ๋ช…์„ธ์„œ

๋‹ค์–‘ํ•œ ๋Œ€์‹œ๋ณด๋“œ ์ƒ์„ฑ, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” RESTful API์ž…๋‹ˆ๋‹ค.

๐Ÿ”งAPI ๋ชฉ๋ก

์ธํ„ฐํŽ˜์ด์Šค๋ช… ์ธํ„ฐํŽ˜์ด์Šค ID API ๋ช… API ์„ค๋ช… Method URI
Dashboard List ์กฐํšŒ DB0001 Dashboard List ์กฐํšŒ Dashboard ์ „์ฒด List๋ฅผ ์กฐํšŒ GET /api/v1.0/dashboards
Dashboard ์ƒ์„ฑ DB0002 Dashboard ์ƒ์„ฑ Dashboard๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. POST /api/v1.0/dashboards
Dashboard ์ˆ˜์ • DB0003 Dashboard ์ˆ˜์ • Dashboard๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค. PUT /api/v1.0/dashboards/{dashboardId}
Dashboard ์‚ญ์ œ DB0004 Dashboard ์‚ญ์ œ Dashboard๋ฅผ ์‚ญ์ œํ•œ๋‹ค. DELETE /api/v1.0/dashboards/{dashboardId}
Dashboard Chart List ์กฐํšŒ DB0005 Dashboard Chart List ์กฐํšŒ Dashboard์˜ ์ „์ฒด Chart List๋ฅผ ์กฐํšŒํ•œ๋‹ค. GET /api/v1.0/dashboards/{dashboardId}/charts
Chart ์ƒ์„ธ ์กฐํšŒ DB0006 Chart ์ƒ์„ธ ์กฐํšŒ Chart๋ฅผ ์ƒ์„ธ ์กฐํšŒํ•œ๋‹ค. GET /api/v1.0/charts/{chartId}
Chart ์ƒ์„ธ ์ˆ˜์ • DB0007 Chart ์ƒ์„ธ ์ˆ˜์ • Chart ์ƒ์„ธ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค. PUT /api/v1.0/charts/{chartId}
Chart ์ƒ์„ฑ DB0008 Chart ์ƒ์„ฑ Dashboard์˜ Chart๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. POST /api/v1.0/dashboards/{dashboardId}/charts
Chart ์‚ญ์ œ DB0009 Chart ์‚ญ์ œ Chart๋ฅผ ์‚ญ์ œํ•œ๋‹ค. DELETE /api/v1.0/charts/{chartId}
Chart ๋ณต์ œ DB0010 Chart ๋ณต์ œ ํŠน์ • Chart๋ฅผ ๋ณต์ œํ•œ๋‹ค. POST /api/v1.0/dashboards/{dashboardId}/charts/{chartId}/duplicate
Dashboard ๋ณต์ œ DB0011 Dashboard ๋ณต์ œ ํŠน์ • Dashboard๋ฅผ ๋ณต์ œํ•œ๋‹ค. POST /api/v1.0/dashboards/{dashboardId}/duplicate

Dashboard List ์กฐํšŒ

API ์„ค๋ช…

  • Dashboard ์ „์ฒด List๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

URI

  • GET /api/v1.0/dashboards

์š”์ฒญ ์˜ˆ์‹œ

GET /api/v1.0/dashboards
Header:
{
  "searchParam": "dashboard"
}

์‘๋‹ต ์˜ˆ์‹œ

{
  "dashboards": [
    {
      "dashboardId": "dashboard_123",
      "title": "๋งค์ถœ ๋ถ„์„",
      "description": "๋งค์ถœ๊ณผ ์‚ฌ์šฉ์ž ๋ถ„์„์„ ์œ„ํ•œ ๋Œ€์‹œ๋ณด๋“œ"
    }
  ]
}

ํ•„์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ๋ช… ์„ค๋ช… ํƒ€์ž… ํ•„์ˆ˜ ์˜ˆ์‹œ
searchParam ๋Œ€์‹œ๋ณด๋“œ ๊ฒ€์ƒ‰์–ด String No "dashboard"

์‘๋‹ต ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ๋ช… ์„ค๋ช… ํƒ€์ž… ํ•„์ˆ˜ ์˜ˆ์‹œ
dashboardId ๋Œ€์‹œ๋ณด๋“œ ID String Yes "dashboard_123"
title ๋Œ€์‹œ๋ณด๋“œ ์ œ๋ชฉ String Yes "๋งค์ถœ ๋ถ„์„"
description ๋Œ€์‹œ๋ณด๋“œ ์„ค๋ช… String Yes "๋งค์ถœ๊ณผ ์‚ฌ์šฉ์ž ๋ถ„์„์„ ์œ„ํ•œ ๋Œ€์‹œ๋ณด๋“œ"

Dashboard ์ƒ์„ฑ

API ์„ค๋ช…

  • Dashboard๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

URI

  • POST /api/v1.0/dashboards

์š”์ฒญ ์˜ˆ์‹œ

POST /api/v1.0/dashboards
Header:
{
  "title": "๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ",
  "description": "๋งค์ถœ๊ณผ ์‚ฌ์šฉ์ž ๋ถ„์„์„ ์œ„ํ•œ ๋Œ€์‹œ๋ณด๋“œ"
}

์‘๋‹ต ์˜ˆ์‹œ

{
  "dashboardId": "dashboard_124",
  "title": "๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ",
  "description": "๋งค์ถœ๊ณผ ์‚ฌ์šฉ์ž ๋ถ„์„์„ ์œ„ํ•œ ๋Œ€์‹œ๋ณด๋“œ"
}

ํ•„์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ๋ช… ์„ค๋ช… ํƒ€์ž… ํ•„์ˆ˜ ์˜ˆ์‹œ
title ๋Œ€์‹œ๋ณด๋“œ ์ œ๋ชฉ String Yes "๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ"
description ๋Œ€์‹œ๋ณด๋“œ ์„ค๋ช… String No "๋งค์ถœ๊ณผ ์‚ฌ์šฉ์ž ๋ถ„์„์„ ์œ„ํ•œ ๋Œ€์‹œ๋ณด๋“œ"

Dashboard ์ˆ˜์ •

API ์„ค๋ช…

  • Dashboard๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

URI

  • PUT /api/v1.0/dashboards/{dashboardId}

์š”์ฒญ ์˜ˆ์‹œ

PUT /api/v1.0/dashboards/dashboard_001
Header:
{
  "title": "์—…๋ฐ์ดํŠธ๋œ ๋Œ€์‹œ๋ณด๋“œ",
  "description": "์ƒˆ๋กœ์šด ์„ค๋ช…"
}

์‘๋‹ต ์˜ˆ์‹œ

{
  "dashboardId": "dashboard_124",
  "title": "์—…๋ฐ์ดํŠธ๋œ ๋Œ€์‹œ๋ณด๋“œ",
  "description": "๋งค์ถœ๊ณผ ์‚ฌ์šฉ์ž ๋ถ„์„์„ ์œ„ํ•œ ๋Œ€์‹œ๋ณด๋“œ ์—…๋ฐ์ดํŠธ"
}

ํ•„์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ๋ช… ์„ค๋ช… ํƒ€์ž… ํ•„์ˆ˜ ์˜ˆ์‹œ
dashboardId ๋Œ€์‹œ๋ณด๋“œ ID (Path Parameter) String Yes "dashboard_001"
title ๋Œ€์‹œ๋ณด๋“œ ์ œ๋ชฉ String Yes "์—…๋ฐ์ดํŠธ๋œ ๋Œ€์‹œ๋ณด๋“œ"
description ๋Œ€์‹œ๋ณด๋“œ ์„ค๋ช… String No "์ƒˆ๋กœ์šด ์„ค๋ช…"

Dashboard ์‚ญ์ œ

API ์„ค๋ช…

  • Dashboard๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

URI

  • DELETE /api/v1.0/dashboards/{dashboardId}

์š”์ฒญ ์˜ˆ์‹œ

DELETE /api/v1.0/dashboards/dashboard_001

์‘๋‹ต ์˜ˆ์‹œ

{
  "message": "Dashboard deleted successfully"
}

ํ•„์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ๋ช… ์„ค๋ช… ํƒ€์ž… ํ•„์ˆ˜ ์˜ˆ์‹œ
dashboardId ๋Œ€์‹œ๋ณด๋“œ ID (Path Parameter) String Yes "dashboard_001"

Dashboard Chart List ์กฐํšŒ

API ์„ค๋ช…

  • Dashboard์˜ ์ „์ฒด Chart List๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

URI

  • GET /api/v1.0/dashboards/{dashboardId}/charts

์š”์ฒญ ์˜ˆ์‹œ

GET /api/v1.0/dashboards/dashboard_001/charts

์‘๋‹ต ์˜ˆ์‹œ

{
  "chartData": [
    {
      "chartId": "chart_001",
      "title": "๋งค์ถœ ๋ถ„์„",
      "dataSourceType": "API",
      "dataSourceConfig": {
        "apiUrl": "https://api.example.com/users",
        "query": "SELECT date, revenue FROM sales WHERE date >= CURDATE() - INTERVAL 7 DAY"
      },
      "datasets": [
        {
          "name": "Dataset 1",
          "data": [
            { "label": "Jan", "value": 50 },
            { "label": "Feb", "value": 75 }
          ],
          "color": [
            "rgba(255, 99, 132, 0.5)",
            "rgba(255, 159, 64, 0.5)"
          ]
        }
      ],
      "options": {
        "chartType": "pie",
        "showLegend": true,
        "legendPosition": "top",
        "titleText": "Sales Data",
        "titleColor": "#00ff00"
      }
    }
  ]
}

ํ•„์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ๋ช… ์„ค๋ช… ํƒ€์ž… ํ•„์ˆ˜ ์˜ˆ์‹œ
dashboardId ๋Œ€์‹œ๋ณด๋“œ ID (Path Parameter) String Yes "dashboard_001"

Chart ์ƒ์„ธ ์กฐํšŒ

API ์„ค๋ช…

  • Chart๋ฅผ ์ƒ์„ธ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

URI

  • GET /api/v1.0/charts/{chartId}

์š”์ฒญ ์˜ˆ์‹œ

GET /api/v1.0/charts/chart_001

์‘๋‹ต ์˜ˆ์‹œ

{
  "chartId": "chart_002",
  "title": "์‚ฌ์šฉ์ž ์ฆ๊ฐ€์œจ",
  "dataSourceType": "API",
  "dataSourceConfig": {
    "apiUrl": "https://api.example.com/users"
  },
  "datasets": [
    {
      "name": "๊ฐ€์ž…์ž ์ˆ˜",
      "data": [
        { "label": "2024-02-01", "value": 100 },
        { "label": "2024-02-02", "value": 120 }
      ]
    }
  ]
}

ํ•„์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ๋ช… ์„ค๋ช… ํƒ€์ž… ํ•„์ˆ˜ ์˜ˆ์‹œ
chartId ์ฐจํŠธ ID (Path Parameter) String Yes "chart_001"

Chart ์ƒ์„ธ ์ˆ˜์ •

API ์„ค๋ช…

  • Chart ์ƒ์„ธ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

URI

  • PUT /api/v1.0/charts/{chartId}

์š”์ฒญ ์˜ˆ์‹œ

PUT /api/v1.0/charts/chart_001
Header:
{
  "title": "์—…๋ฐ์ดํŠธ๋œ ์ฐจํŠธ",
  "dataSourceType": "API",
  "dataSourceConfig": {
    "apiUrl": "https://api.example.com/newdata"
  }
}

์‘๋‹ต ์˜ˆ์‹œ

{
  "chartId": "chart_001",
  "title": "์—…๋ฐ์ดํŠธ๋œ ์ฐจํŠธ"
}

ํ•„์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ๋ช… ์„ค๋ช… ํƒ€์ž… ํ•„์ˆ˜ ์˜ˆ์‹œ
chartId ์ฐจํŠธ ID (Path Parameter) String Yes "chart_001"
title ์ฐจํŠธ ์ œ๋ชฉ String Yes "์—…๋ฐ์ดํŠธ๋œ ์ฐจํŠธ"

Chart ์ƒ์„ฑ

API ์„ค๋ช…

  • Dashboard์˜ Chart๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

URI

  • POST /api/v1.0/dashboards/{dashboardId}/charts

์š”์ฒญ ์˜ˆ์‹œ

POST /api/v1.0/dashboards/dashboard_001/charts
Header:
{
  "title": "์ƒˆ๋กœ์šด ์ฐจํŠธ",
  "dataSourceType": "SQL",
  "dataSourceConfig": {
    "query": "SELECT * FROM sales"
  }
}

์‘๋‹ต ์˜ˆ์‹œ

{
  "message": "Chart created successfully"
}

ํ•„์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ๋ช… ์„ค๋ช… ํƒ€์ž… ํ•„์ˆ˜ ์˜ˆ์‹œ
title ์ฐจํŠธ ์ œ๋ชฉ String Yes "์ƒˆ๋กœ์šด ์ฐจํŠธ"
dataSourceType ๋ฐ์ดํ„ฐ ์†Œ์Šค ํƒ€์ž… (API, SQL ๋“ฑ) String Yes "SQL"

Chart ์‚ญ์ œ

API ์„ค๋ช…

  • Chart๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

URI

  • DELETE /api/v1.0/charts/{chartId}

์š”์ฒญ ์˜ˆ์‹œ

DELETE /api/v1.0/charts/chart_001

์‘๋‹ต ์˜ˆ์‹œ

{
  "message": "Chart deleted successfully"
}

ํ•„์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ๋ช… ์„ค๋ช… ํƒ€์ž… ํ•„์ˆ˜ ์˜ˆ์‹œ
chartId ์ฐจํŠธ ID (Path Parameter) String Yes "chart_001"

Chart ๋ณต์ œ

API ์„ค๋ช…

  • ํŠน์ • Dashboard์— Chart๋ฅผ ๋ณต์ œํ•ฉ๋‹ˆ๋‹ค.

URI

  • POST /api/v1.0/dashboards/{dashboardId}/charts/{chartId}/duplicate

์š”์ฒญ ์˜ˆ์‹œ

POST /api/v1.0/dashboards/dashboard_001/charts/chart_001/duplicate

์‘๋‹ต ์˜ˆ์‹œ

{
  "chartId": "chart_010",
  "title": "๋งค์ถœ ๋ถ„์„_copy"
}

ํ•„์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ๋ช… ์„ค๋ช… ํƒ€์ž… ํ•„์ˆ˜ ์˜ˆ์‹œ
chartId ์ฐจํŠธ ID (Path Parameter) String Yes "chart_001"

Dashboard ๋ณต์ œ

API ์„ค๋ช…

  • Dashboard๋ฅผ ๋ณต์ œํ•ฉ๋‹ˆ๋‹ค.

URI

  • POST /api/v1.0/dashboards/{dashboardId}/duplicate

์š”์ฒญ ์˜ˆ์‹œ

POST /api/v1.0/dashboards/dashboard_001/duplicate

์‘๋‹ต ์˜ˆ์‹œ

{
  "dashboardId": "dashboard_010",
  "title": "๋งค์ถœ ๋ถ„์„_copy",
  "description": "๋งค์ถœ๊ณผ ์‚ฌ์šฉ์ž ๋ถ„์„์„ ์œ„ํ•œ ๋Œ€์‹œ๋ณด๋“œ_copy"
}

ํ•„์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ๋ช… ์„ค๋ช… ํƒ€์ž… ํ•„์ˆ˜ ์˜ˆ์‹œ
dashboardId ๋Œ€์‹œ๋ณด๋“œ ID (Path Parameter) String Yes "dashboard_001"

chart options

โ†’ opion ์ด ๋„ˆ๋ฌด ๋งŽ์•„์„œ ๋ช…์„ธ์„œ์— ๋ชจ๋‘ ์ •๋ฆฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

{
  datasets: [
    {
      name: "Dataset 1",
      data: [
        { label: "Jan", value: 50 },
        { label: "Feb", value: 75 },
        { label: "Mar", value: 100 },
        { label: "Apr", value: 125 },
        { label: "May", value: 150 },
      ],
      color: [
        "rgba(255, 99, 132, 0.5)",
        "rgba(255, 159, 64, 0.5)",
        "rgba(255, 205, 86, 0.5)",
        "rgba(75, 192, 192, 0.5)",
        "rgba(54, 162, 235, 0.5)",
      ],
    },
  ],
  options: {
    chartType: "pie",
    showLegend: true,
    legendPosition: "top",
    legendColor: "#ffffff",
    showTitle: true,
    titleText: "Sales Data",
    titleColor: "#00ff00",
    showTooltip: true,
    tooltipBgColor: "rgba(0,0,0,0.8)",
    tooltipMode: "index",
    layoutPadding: { top: 10, bottom: 20 },
    aspectRatio: 2,
    xAxisColor: "#ffffff",
    yAxisColor: "#ffffff",
    xGridDisplay: true,
    yGridColor: "rgba(255, 255, 255, 0.2)",
    ySuggestedMin: 0,
    ySuggestedMax: 200,
    interactionMode: "index",
    interactionIntersect: false,
    hoverMode: "nearest",
    animationDuration: 1000,
    animationEasing: "easeOutBounce",
  },
};