APG PayAPG Paydocs

Reporting

Create report dashboards

POST/report-dashboards

Save a dashboard, or a copy of one. Saving in a shared space needs Reports_Manage as well.

2 actionsRdshCmdCopyRdshCmdCreate

Permissions

Required permission
reports:query

Requires the `query` action on `reports` for the supplied runtime context

Request body

This body is a typed union. Pick a variant to see its fields and a matching example.

Discriminated by type
type = "RdshCmdCopy"
copyOfRdshIdrequired

The dashboard to copy.

Example rdsh_9f2Kd8QpLzXw

reportSpaceIdRspcId

Where to save the copy. Absent for the original's space, or for the caller's default space when the original is in the System space.

Example rspc_9f2Kd8QpLzXw

titlestring

Absent for the original's title with (copy) after it.

chartsRdshChartCopyingrequired
ReferenceCopyUnknown
onlyReportChartIdsarray of RchtId

Copy only the tiles showing these charts. Empty for every tile.

Example rcht_9f2Kd8QpLzXw

What the copy opens filtered by. Absent for the original's.

curl -X POST https://api.tst.au.apgpay.dev/report-dashboards \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "type": "RdshCmdCopy",
  "copyOf": "rdsh_9f2Kd8QpLzXw",
  "reportSpaceId": "rspc_9f2Kd8QpLzXw",
  "title": "string",
  "charts": "Reference",
  "onlyReportChartIds": [
    "rcht_9f2Kd8QpLzXw"
  ],
  "filters": {
    "type": "RdshFiltersAttributes",
    "range": {
      "type": "RqryRangeBetween",
      "from": "2026-08-19",
      "to": "2026-08-19"
    },
    "timezone": "string",
    "dimensionFilters": [
      {
        "type": "RdshDimensionFilterAttributes",
        "dimension": "string",
        "operator": "Equals",
        "values": [
          "string"
        ],
        "fromTile": "string"
      }
    ],
    "periodClick": {
      "type": "RdshPeriodClickAttributes",
      "fromTile": "string",
      "range": {
        "type": "RqryRangeBetween",
        "from": "2026-08-19",
        "to": "2026-08-19"
      }
    }
  }
}'

Responses

The response is a tagged shape: type is always "RdshCreateRspAttributes". Switch on it; subtypes can be added, and a client that already reads it will not break.

Discriminated by type
type = "RdshCreateRspAttributes"

The resource that was created.

Example
{
  "type": "RdshCreateRspAttributes",
  "created": {
    "type": "RdshViewAttributes",
    "reportDashboardId": "rdsh_9f2Kd8QpLzXw",
    "reportSpaceId": "rspc_9f2Kd8QpLzXw",
    "title": "string",
    "description": "string",
    "layout": {
      "type": "RdshLayoutAttributes",
      "tabs": [
        {
          "type": "RdshTabAttributes",
          "tabId": "string",
          "title": "string"
        }
      ],
      "tiles": [
        {
          "type": "RdshTileAttributes",
          "reportChartId": "rcht_9f2Kd8QpLzXw",
          "tabId": "string",
          "x": 1250,
          "y": 1250,
          "w": 1250,
          "h": 1250,
          "click": {
            "type": "RdshTileClickSetsDimension",
            "dimension": "string"
          },
          "keepsOwnRange": true,
          "thresholds": [
            {
              "type": "RdshThresholdAttributes",
              "measure": "string",
              "comparison": "Above",
              "value": "string",
              "tone": "Danger"
            }
          ],
          "rowFilters": [
            {
              "type": "RdshRowFilterAttributes",
              "dimension": "string",
              "column": "string"
            }
          ]
        }
      ]
    },
    "filters": {
      "type": "RdshFiltersAttributes",
      "range": {
        "type": "RqryRangeBetween",
        "from": "2026-08-19",
        "to": "2026-08-19"
      },
      "timezone": "string",
      "dimensionFilters": [
        {
          "type": "RdshDimensionFilterAttributes",
          "dimension": "string",
          "operator": "Equals",
          "values": [
            "string"
          ],
          "fromTile": "string"
        }
      ],
      "periodClick": {
        "type": "RdshPeriodClickAttributes",
        "fromTile": "string",
        "range": {
          "type": "RqryRangeBetween",
          "from": "2026-08-19",
          "to": "2026-08-19"
        }
      }
    },
    "access": "Private",
    "tenant": {
      "type": "RspcTenantEnterprise",
      "enterpriseId": "ent_9f2Kd8QpLzXw"
    },
    "ownedByCaller": true,
    "editable": true,
    "createdAt": "2026-08-19T04:21:07Z",
    "updatedAt": "2026-08-19T04:21:07Z"
  }
}

Error responses