Elementum Views API

Manage app views

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/elementum-views-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 email required.

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

OpenAPI Specification

elementum-views-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Elementum Access Token Views API
  description: Manage access tokens using OAuth 2.0 standards
  contact:
    email: apiteam@elementum.io
  version: 0.0.1
servers:
- url: /v1
tags:
- name: Views
  description: Manage app views
paths:
  /apps/{alias}/views:
    get:
      tags:
      - Views
      summary: List views under an app
      operationId: listViews
      parameters:
      - $ref: '#/components/parameters/alias'
      - $ref: '#/components/parameters/first'
      - $ref: '#/components/parameters/after'
      - $ref: '#/components/parameters/last'
      - $ref: '#/components/parameters/before'
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AspectViewPagedList'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
      - ClientCredentials: []
      x-codegen-request-body-name: body
    post:
      tags:
      - Views
      summary: Create a view under an app
      operationId: createView
      parameters:
      - $ref: '#/components/parameters/alias'
      requestBody:
        description: Full desired state of the new view, plus an optional share set
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AspectViewCreateRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PassthroughObject'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
      - ClientCredentials: []
      x-codegen-request-body-name: body
  /apps/{alias}/views/{id}:
    get:
      tags:
      - Views
      summary: Get a view by ID
      operationId: getView
      parameters:
      - $ref: '#/components/parameters/alias'
      - $ref: '#/components/parameters/passthroughId'
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AspectView'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
      - ClientCredentials: []
      x-codegen-request-body-name: body
    put:
      tags:
      - Views
      summary: Update a view under an app
      operationId: updateView
      parameters:
      - $ref: '#/components/parameters/alias'
      - name: id
        in: path
        description: Portable cross-environment identifier (client handle) of the view to update
        required: true
        schema:
          type: string
      requestBody:
        description: Full desired state of the view, plus an optional share set
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AspectViewUpdateRequest'
        required: true
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PassthroughObject'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
      - ClientCredentials: []
      x-codegen-request-body-name: body
components:
  parameters:
    last:
      name: last
      in: query
      description: The number of elements to retrieve before the 'before' cursor location
      required: false
      schema:
        maximum: 1000
        minimum: 1
        type: integer
        format: int32
    first:
      name: first
      in: query
      description: The number of elements to retrieve after the 'after' cursor location
      required: false
      schema:
        maximum: 1000
        minimum: 1
        type: integer
        format: int32
        default: 100
    passthroughId:
      name: id
      in: path
      description: The resource ID
      required: true
      schema:
        type: string
        format: string
    alias:
      name: alias
      in: path
      description: The app's namespace or its UUID
      required: true
      schema:
        type: string
        format: string
    after:
      name: after
      in: query
      description: The starting cursor to begin searching, defaults to the beginning of the list
      required: false
      schema:
        type: string
    before:
      name: before
      in: query
      description: The starting cursor to begin searching, defaults to the end of the list
      required: false
      schema:
        type: string
  schemas:
    AspectViewUpdateRequest:
      required:
      - view
      type: object
      properties:
        view:
          $ref: '#/components/schemas/AspectViewInput'
        share:
          $ref: '#/components/schemas/AspectViewShareInput'
      description: 'View update body: the full desired view state plus an optional share set (the view''s handle is on the path).'
    AspectViewVariantInput:
      type: object
      properties:
        name:
          type: string
          description: The view's display name
        allowRecordCreation:
          type: boolean
          description: Whether records can be created from this view
        filter:
          type: object
          description: Opaque Filter JSON scoping the view's records
        sort:
          type: object
          description: Opaque Sort JSON ordering the view's records
      additionalProperties: true
      description: View configuration. Common fields are listed; type-specific fields (columns, density, rows, displayByField, allowedFilterFields, agentId, dashboardId) are accepted and forwarded as-is.
    PagingState:
      type: object
      properties:
        has_previous_page:
          type: boolean
        start_cursor:
          type: string
        end_cursor:
          type: string
        has_next_page:
          type: boolean
    PassthroughObject:
      type: object
      additionalProperties: true
      description: Free-form JSON object forwarded to/from the downstream service.
    AspectViewCreateRequest:
      required:
      - handle
      - view
      type: object
      properties:
        handle:
          type: string
          description: Portable cross-environment identifier naming the new view; resolved to the view id (minted if first seen)
        share:
          $ref: '#/components/schemas/AspectViewShareInput'
        view:
          $ref: '#/components/schemas/AspectViewInput'
      description: 'View create body: the handle that names the view, its full desired state, plus an optional share set.'
    Group:
      type: object
      properties:
        name:
          type: string
          description: The group name
        id:
          type: string
          description: The group ID
          format: uuid
        assignable:
          type: boolean
          description: Whether the group can be assigned to records
        watchable:
          type: boolean
          description: Whether the group can be used as a watcher
        mentionable:
          type: boolean
          description: Whether the group can be mentioned
        domains:
          type: array
          description: Email auto-assignment domains (dynamic groups only)
          items:
            $ref: '#/components/schemas/GroupDomain'
        managed:
          type: boolean
          description: Whether the group is system-managed
        dynamic:
          type: boolean
          description: Whether the group is dynamic
      example: '{id=550e8400-e29b-41d4-a716-446655440001, dynamic=false, assignable=true, managed=false, name=Engineering, mentionable=true, watchable=true}'
    GroupDomain:
      type: object
      properties:
        domain:
          type: string
          description: The email domain
        id:
          type: string
          description: The auto-assignment rule ID
          format: uuid
      example: '{domain=example.com, id=550e8400-e29b-41d4-a716-446655440000}'
    AspectView:
      type: object
      properties:
        displayOrder:
          type: integer
          description: Sort position among the app's views
          format: int32
        share:
          type: object
          properties:
            groups:
              type: array
              items:
                $ref: '#/components/schemas/Group'
            users:
              type: array
              items:
                $ref: '#/components/schemas/User'
          description: Who the view is shared with; each user/group carries its portable client handle
        agent:
          type: object
          properties:
            id:
              type: string
              format: uuid
          description: Linked agent (agent views only)
        clientHandle:
          type: string
          description: Portable cross-environment identifier minted for this view
        columns:
          type: array
          description: Field IDs shown as columns (list/kanban/calendar)
          items:
            type: string
            format: uuid
        density:
          type: string
          description: Row density (list views)
        rows:
          type: integer
          description: Rows per page (list views)
          format: int32
        sort:
          type: object
          description: Opaque Sort JSON ordering the view's records
        allowedFilterFields:
          type: array
          description: Field IDs offered as filters (kanban)
          items:
            type: string
            format: uuid
        filter:
          type: object
          description: Opaque Filter JSON scoping the view's records
        type:
          type: string
          description: The view variant (AspectViewList, AspectViewKanban, AspectViewCalendar, AspectViewDashboard, AspectViewAgent)
        displayByField:
          type: string
          description: Grouping field ID (kanban/calendar)
          format: uuid
        name:
          type: string
          description: The view's display name
        allowRecordCreation:
          type: boolean
          description: Whether records can be created from this view
        id:
          type: string
          description: The view ID
          format: uuid
      description: An app view returned by the views endpoints.
    AspectViewPagedList:
      type: object
      properties:
        paging:
          $ref: '#/components/schemas/PagingState'
        total:
          type: integer
          format: int32
        items:
          type: array
          items:
            $ref: '#/components/schemas/AspectView'
    AspectViewShareInput:
      type: object
      properties:
        groups:
          type: array
          description: Client handles of groups to share with
          items:
            type: string
        users:
          type: array
          description: Client handles of users to share with
          items:
            type: string
      description: Declarative share set. Omit to leave sharing untouched; present is a full-replace resync.
    AspectViewInput:
      type: object
      properties:
        agent:
          $ref: '#/components/schemas/AspectViewVariantInput'
        calendar:
          $ref: '#/components/schemas/AspectViewVariantInput'
        list:
          $ref: '#/components/schemas/AspectViewVariantInput'
        kanban:
          $ref: '#/components/schemas/AspectViewVariantInput'
        dashboard:
          $ref: '#/components/schemas/AspectViewVariantInput'
      description: Discriminator wrapper. Exactly one variant field (list, kanban, calendar, dashboard, agent) must be populated.
    User:
      type: object
      properties:
        lastName:
          type: string
          description: The user's last name
        firstName:
          type: string
          description: The user's first name
        id:
          type: string
          description: The user ID
          format: uuid
        status:
          type: string
          description: The user's organization status (ACTIVE, INACTIVE)
        email:
          type: string
          description: The user's email address
          format: email
        jobTitle:
          type: string
          description: The user's job title
      example: '{lastName=Doe, firstName=Jane, id=550e8400-e29b-41d4-a716-446655440000, status=ACTIVE, email=jane@example.com, jobTitle=Engineer}'
  responses:
    '401':
      description: Unauthorized
    '422':
      description: Unprocessable Entity
    '429':
      description: Too Many Requests
    '403':
      description: Forbidden
    '500':
      description: Internal Server Error
    '404':
      description: Not Found
    '400':
      description: Bad Request
  securitySchemes:
    ClientCredentials:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: /oauth/token
externalDocs:
  description: Find out more about Elementum
  url: https://www.elementum.com/