Oden Technologies Dashboards API

The Dashboards API from Oden Technologies — 1 operation(s) for dashboards.

Operations 1

POST /v2/dashboard/execute Execute a dashboard #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/oden-technologies-dashboards-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

oden-technologies-dashboards-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 2.0.0
  title: Oden Dashboards API
  contact:
    name: Oden Support
    email: support@oden.io
    url: https://oden.io/contact/
  description: The Oden Private Partner API exposes RESTful API endpoints for clients to get, create and update data on the Oden Platform.
servers:
- url: https://api.oden.app
  description: Oden API server
security:
- APIKeyAuth: []
tags:
- name: Dashboards
paths:
  /v2/dashboard/execute:
    post:
      operationId: execute_dashboard
      summary: Execute a dashboard
      tags:
      - Dashboards
      description: 'Execute every module in a dashboard with shared time-range and filter

        overrides, returning the columns and rows produced by each module.


        Modules execute in parallel and are reported in the dashboard''s stored

        module order. Per-module failures (parse, dispatch) land in the

        `error` field of that module''s result; siblings continue to run.


        Known v1 limitations:

        - Template variables (`{var_name}` in stored OQL) are not substituted

        server-side. Modules containing unsubstituted placeholders will

        fail at parse time.'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DashboardExecuteRequest'
      responses:
        '200':
          description: 'Dashboard loaded and each module executed. Individual modules may still report `error` in their result; this is not a 200/non-200 distinction.

            '
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DashboardExecuteResult'
        '400':
          $ref: '#/components/responses/ParameterError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '429':
          $ref: '#/components/responses/TooManyRequestsError'
        '500':
          $ref: '#/components/responses/InternalError'
        '501':
          $ref: '#/components/responses/UnimplementedError'
components:
  responses:
    NotFoundError:
      description: Entity not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GenericError'
    ParameterError:
      description: An error occurred regarding one of the input parameters
      content:
        application/json:
          schema:
            type: object
            required:
            - error
            - name
            - retryable
            properties:
              error:
                type: string
              name:
                type: string
              retryable:
                type: boolean
    UnauthorizedError:
      description: User has provided either no credentials or invalid credentials
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GenericError'
    TooManyRequestsError:
      description: Too many requests
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GenericError'
    UnimplementedError:
      description: Endpoint is not yet implemented
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GenericError'
    ForbiddenError:
      description: 'User has provided valid credentials but is not authorized to access the entity

        '
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GenericError'
    InternalError:
      description: 'An internal server error has occurred. If reporting the error to Oden, include the ID returned in this response to aid in debugging.

        '
      content:
        application/json:
          schema:
            type: object
            required:
            - error
            - retryable
            - id
            properties:
              error:
                type: string
              retryable:
                type: boolean
              id:
                type: string
                format: uuid
  schemas:
    DashboardExecuteRequest:
      type: object
      description: 'Request envelope for executing every module in a dashboard.

        '
      required:
      - dashboard
      properties:
        dashboard:
          type: object
          required:
          - id
          properties:
            id:
              type: string
              format: uuid
        range:
          $ref: '#/components/schemas/DashboardExecuteRange'
        filters:
          $ref: '#/components/schemas/DashboardExecuteFilters'
    DashboardColumnSpec:
      type: object
      required:
      - name
      - type
      properties:
        name:
          type: string
        type:
          type: string
          enum:
          - string
          - number
          - boolean
          - datetime
    DashboardExecuteFilters:
      type: object
      description: 'Optional filter overrides applied to every module. Every field is optional; omitting one means "no override on that dimension".

        '
      properties:
        lines:
          type: array
          description: 'Lines to restrict to. Each entry must supply `id`, `name`, or both; entries that supply neither are rejected. Other Line fields (factory, secondary_name, match) are not used here and are intentionally omitted so generated clients don''t suggest them as inputs.

            '
          items:
            type: object
            anyOf:
            - required:
              - id
            - required:
              - name
            properties:
              id:
                type: string
                format: uuid
              name:
                type: string
        shifts:
          type: array
          items:
            type: integer
            format: int32
        product_ids:
          type: array
          items:
            type: string
            format: uuid
        product_attribute_value_ids:
          type: array
          items:
            type: string
            format: uuid
        scrap_categories:
          type: array
          items:
            type: string
            format: uuid
        states:
          type: object
          properties:
            state_types:
              type: array
              items:
                type: string
            state_category_and_reasons:
              type: array
              items:
                type: object
                required:
                - state_category
                properties:
                  state_category:
                    type: integer
                    format: int32
                  state_reason:
                    type: string
        custom_intervals:
          type: array
          items:
            type: object
            required:
            - type
            - value_contains
            properties:
              type:
                type: string
              value_contains:
                type: string
    DashboardExecuteRange:
      type: object
      description: 'Time window applied to every module. Either supply an absolute window (`start` and `end`) OR a relative window (`anchor` and `offset`, optionally with `timezone`), not both.

        '
      properties:
        start:
          type: string
          format: date-time
        end:
          type: string
          format: date-time
        anchor:
          type: string
          description: Anchor expression for a relative range, e.g. `now`.
        offset:
          type: string
          description: Offset expression for a relative range, e.g. `-7D`.
        timezone:
          type: string
          description: IANA timezone identifier (defaults to UTC).
    GenericError:
      type: object
      required:
      - error
      - retryable
      properties:
        error:
          type: string
        retryable:
          type: boolean
    DashboardExecuteResult:
      type: object
      description: Executed output of a single dashboard module.
      required:
      - module_id
      - module_name
      - module_type
      properties:
        module_id:
          type: string
          format: uuid
        module_name:
          type: string
        module_type:
          type: string
          description: 'The module''s stored visualization (e.g. `table`, `line_chart`, `bar_chart`). Type label only — does not change the response shape.

            '
        range:
          type: object
          description: 'Resolved absolute time window the executed query actually covers. For relative requests this is the concrete window the anchor/offset resolved to.

            '
          properties:
            start:
              type: string
              format: date-time
            end:
              type: string
              format: date-time
        filters_applied:
          type: object
          description: 'Echo of the filter dimensions that were applied, resolved to human-readable values where possible (e.g. line names instead of IDs).

            '
          additionalProperties: true
        columns:
          type:
          - array
          - 'null'
          description: 'Column metadata. `type` is derived from the first non-null cell in the column. Null when the module errored.

            '
          items:
            $ref: '#/components/schemas/DashboardColumnSpec'
        rows:
          type:
          - array
          - 'null'
          description: 'Row data as objects keyed by column name (not positional arrays). Values are typed JSON natively. Null when the module errored.

            '
          items:
            type: object
            additionalProperties: true
        error:
          type:
          - string
          - 'null'
          description: 'Set to a short message when the module failed to parse or execute. Null on success.

            '
  securitySchemes:
    APIKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: Prefix the value with \"Token\" to indicate the custom authorization type