Adobe Workfront Views API

View management. Limits: max 100 personal views per record type; max 255 characters for view name.

Operations 6

GET /v2/views/{id} Get View #
PUT /v2/views/{id} Update View #
DELETE /v2/views/{id} Delete View #
PATCH /v2/views/{id} Patch View #
GET /v2/record-types/{recordTypeId}/views Get Views by Record Type #
POST /v2/record-types/{recordTypeId}/views Create View #

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/workfront-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

workfront-views-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Workfront Planning API Version 2 Views API
  description: This is Workfront Planning Service API documentation. Workfront Planning Service is responsible for creating and managing new workspace, field, record, record type objects across the Workfront application and Adobe DX infrastructure.
servers:
- url: https://{customer-domain}/maestro/api
  description: Workfront Planning Service Url
tags:
- name: Views
  description: 'View management. Limits: max 100 personal views per record type; max 255 characters for view name.'
paths:
  /v2/views/{id}:
    get:
      tags:
      - Views
      summary: Get View
      description: Retrieve a view by its ID.
      operationId: getView
      parameters:
      - name: id
        in: path
        description: ID of the view to be retrieved
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ViewDto'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
    put:
      tags:
      - Views
      summary: Update View
      description: Update an existing view using PUT (full replacement). All fields not provided in the request will be set to null.
      operationId: updateView
      parameters:
      - name: id
        in: path
        description: ID of the view to be updated
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ViewDto'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ViewDto'
        '400':
          description: Bad Request (validation failure)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '409':
          description: Conflict (write conflict, retry)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
    delete:
      tags:
      - Views
      summary: Delete View
      description: Delete a view by its ID.
      operationId: deleteView
      parameters:
      - name: id
        in: path
        description: ID of the view to be deleted
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
    patch:
      tags:
      - Views
      summary: Patch View
      description: Partially update a view using PATCH (merge-patch semantics). Only provided fields will be updated; omitted fields remain unchanged.
      operationId: patchView
      parameters:
      - name: id
        in: path
        description: ID of the view to be patched
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ViewDto'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ViewDto'
        '400':
          description: Bad Request (validation failure)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '409':
          description: Conflict (write conflict, retry)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
  /v2/record-types/{recordTypeId}/views:
    get:
      tags:
      - Views
      summary: Get Views by Record Type
      description: Retrieve a cursor-paginated list of views for a specific record type.
      operationId: getViewsByRecordType
      parameters:
      - name: recordTypeId
        in: path
        description: ID of the record type
        required: true
        schema:
          type: string
      - name: cursor
        in: query
        description: Cursor from the previous page response for fetching the next page
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: Maximum number of items to return per page (1-100, default 20)
        required: false
        schema:
          type: integer
          format: int32
          default: 20
          maximum: 100
          minimum: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CursorResponseViewDto'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '404':
          description: Record Type Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
    post:
      tags:
      - Views
      summary: Create View
      description: 'Create a new view for a record type. Subject to limits: max 100 personal views per record type.'
      operationId: createView
      parameters:
      - name: recordTypeId
        in: path
        description: ID of the record type
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ViewDto'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ViewDto'
        '400':
          description: Bad Request (validation failure)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '403':
          description: Forbidden (VIEW_LIMIT_EXCEEDED)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '404':
          description: Record Type Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ProblemDetail'
components:
  schemas:
    ViewDto:
      type: object
      description: View data containing all view properties
      properties:
        id:
          type: string
          description: Unique identifier of the entity
          example: 69a976d02587b929c9e26dfa
          readOnly: true
        createdBy:
          $ref: '#/components/schemas/UserReferenceDto'
          description: User who created this entity
          readOnly: true
        createdAt:
          type: string
          description: Date/time when this entity was created
          example: '2026-01-15T10:30:00.000Z'
          pattern: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
          readOnly: true
        updatedBy:
          $ref: '#/components/schemas/UserReferenceDto'
          description: User who last updated this entity
          readOnly: true
        updatedAt:
          type: string
          description: Date/time when this entity was last updated
          example: '2026-01-15T14:45:00.000Z'
          pattern: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
          readOnly: true
        name:
          type: string
          description: Name of the view. Maximum 255 characters; cannot be blank. Each record type allows up to 100 personal views.
          example: My Table View
          maxLength: 255
          minLength: 0
        type:
          type: string
          description: Type of the view (TABLE, TIMELINE, CALENDAR, LIST, GALLERY)
          enum:
          - table
          - timeline
          - calendar
          - list
          - gallery
          example: table
          minLength: 1
          pattern: table|timeline|calendar|list|gallery
        recordTypeId:
          type: string
          description: ID of the record type this view belongs to
          example: Rt69b14f7e0e38f35f28c3ccee
        filter:
          type: array
          description: Filter conditions applied to records in this view
          example: []
          items:
            $ref: '#/components/schemas/FilterNodeDto'
        grouping:
          type: array
          description: Grouping configuration for records in this view
          items:
            $ref: '#/components/schemas/GroupDto'
        sorting:
          type: array
          description: Sorting configuration for records in this view
          items:
            $ref: '#/components/schemas/SortDto'
        metadata:
          $ref: '#/components/schemas/ViewMetadataDto'
          description: View-specific metadata (column widths, date fields, etc.)
        isHidden:
          type: boolean
          description: Whether this view is hidden from the view list
          example: false
        isPublicShared:
          type: boolean
          description: Whether this view is publicly shared via a link
          example: false
          readOnly: true
        isRestricted:
          type: boolean
          description: Whether this view is restricted (limited access for global/dynamic record types)
          example: false
          readOnly: true
      required:
      - name
      - type
    ViewMetadataDto:
      type: object
      description: View metadata containing view-type specific configuration
      properties:
        type:
          type: string
          description: Type of the view metadata (should match view type)
          example: TABLE
        showThumbnail:
          type: boolean
          description: Whether to show thumbnail images in the view
          example: true
        showRecordColoring:
          type: boolean
          description: Whether to show record coloring in the view
          example: false
        columnMetadata:
          type: array
          description: Column metadata for table views (visibility and width)
          items:
            $ref: '#/components/schemas/ColumnMetadata'
        newColumnMetadata:
          type: array
          description: New column metadata for table views (visible fields only)
          items:
            $ref: '#/components/schemas/ColumnMetadata'
        rowOrder:
          type: array
          description: Custom row order for table views (deprecated)
          items:
            type: string
        startDateKey:
          type: string
          description: Field ID of the start date field (required for timeline and calendar views)
          example: F69b14f7e0e38f35f28c3ccee
        endDateKey:
          type: string
          description: Field ID of the end date field (for timeline and calendar views)
          example: F69b14f7e0e38f35f28c3ccef
        timelineScale:
          type: string
          description: Timeline scale type for timeline views
          enum:
          - YEAR
          - QUARTER
          - MONTH
          - WEEK
        cardFieldIds:
          type: array
          description: Field IDs to display on timeline bars or calendar cards
          items:
            type: string
        coloring:
          $ref: '#/components/schemas/Coloring'
          description: Coloring configuration for conditional formatting
        rowHeight:
          type: string
          description: Row height setting for table and calendar views
          enum:
          - SHORT
          - COMPACT
          - MEDIUM
          - TALL
          - FIT_CONTENT
        truncateRecordContent:
          type: boolean
          description: Whether to truncate record content in timeline views
          example: false
        timelineLayout:
          type: string
          description: 'Layout for timeline views: ''stacked'' or ''swimlane'''
          enum:
          - stacked
          - swimlane
          example: stacked
        dynamicFieldMetadata:
          $ref: '#/components/schemas/DynamicFieldMetadataDto'
          description: Dynamic field metadata for global/dynamic record types
    V2ProblemDetail:
      type: object
      description: RFC 7807 Problem Details error response for V2 endpoints.
      properties:
        title:
          type: string
          description: Short, human-readable summary of the error type. Same for all occurrences of the same error.
          example: Not found
        status:
          type: integer
          format: int32
          description: HTTP status code of the response.
          example: 404
        detail:
          type: string
          description: Human-readable, resource-specific explanation of this error occurrence. Always English.
          example: Record type with ID 'Rt69b14f7e' was not found.
        errorCode:
          type: string
          description: Machine-readable error code (enum name).
          example: ENTITY_WITH_ATTRIBUTE_NOT_FOUND
        messageArguments:
          type: object
          additionalProperties:
            type: string
          description: Named parameters used to compose the detail message. Values are always strings.
          example:
            recordTypeId: Rt69b14f7e
        requestId:
          type: string
          description: Request correlation ID for tracing and support.
          example: 5b1f7a8c-2c0e-4a8f-9c4f-2a3b1c0e4d5f
        errors:
          type: array
          description: Field-level or per-item error details. Present for validation, business-rule, or batch failures.
          items:
            $ref: '#/components/schemas/V2FieldError'
      required:
      - detail
      - errorCode
      - requestId
      - status
      - title
    GroupDto:
      type: object
      description: Grouping specification
      properties:
        fieldId:
          type: string
          description: ID or alias of the field to group by
          example: F693ab1c96f11ea3f4175e710
          minLength: 1
        direction:
          type: string
          description: Sort direction for the grouped values (asc or desc). Defaults to asc if omitted.
          enum:
          - asc
          - desc
          example: asc
      required:
      - fieldId
    FilterCondition:
      type: string
      description: Supported filter conditions for record search
      enum:
      - CONTAINS
      - DOES_NOT_CONTAIN
      - IS
      - IS_NOT
      - IS_EMPTY
      - IS_NOT_EMPTY
      - GREATER_THAN
      - GREATER_THAN_OR_EQUAL
      - LESS_THAN
      - LESS_THAN_OR_EQUAL
      - IS_AFTER
      - IS_BEFORE
      - IS_BETWEEN
      - IS_NOT_BETWEEN
      - IS_ANY_OF
      - IS_NONE_OF
      - HAS_ANY_OF
      - HAS_ALL_OF
      - HAS_NONE_OF
      - IS_EXACTLY
    DynamicFieldMetadataDto:
      type: object
      description: Dynamic field metadata for global/dynamic record types
      properties:
        scopeWorkspaceId:
          type: string
          description: Workspace ID this view is scoped to
          example: Ws69b14f7e0e38f35f28c3ccee
        dynamicFieldIds:
          type: array
          description: Field IDs that are workspace-specific (dynamic) in this view
          items:
            type: string
          uniqueItems: true
    V2FieldError:
      type: object
      description: Field-level error detail used in validation errors and per-item batch failures.
      properties:
        field:
          type: string
          description: Name of the field or path that caused the error.
          example: name
        message:
          type: string
          description: Human-readable explanation of the error for this field.
          example: Workspace name can not be blank
        code:
          type: string
          description: Machine-readable code identifying the validation rule that failed.
          example: NotBlank
    CursorResponseViewDto:
      type: object
      description: Cursor-paginated list of views
      properties:
        content:
          type: array
          description: List of views in the current page
          items:
            $ref: '#/components/schemas/ViewDto'
        cursor:
          $ref: '#/components/schemas/CursorInfo'
          description: Cursor metadata for fetching subsequent pages
    GroupColoring:
      type: object
      properties:
        selected:
          type: string
          enum:
          - DEFAULT
          - FIELD
    FilterGroupDto:
      allOf:
      - $ref: '#/components/schemas/FilterNodeDto'
      - type: object
        properties:
          operator:
            $ref: '#/components/schemas/FilterOperator'
            description: Logical operator to combine conditions
          conditions:
            type: array
            description: 'List of filter nodes: leaf conditions or nested groups'
            items:
              $ref: '#/components/schemas/FilterNodeDto'
            minItems: 1
      description: A group of filter conditions combined with a logical operator (AND/OR). Supports recursive nesting for complex filter logic.
      required:
      - conditions
      - operator
    CursorInfo:
      type: object
      description: Cursor pagination metadata
      properties:
        nextCursor:
          type: string
          description: Opaque cursor for fetching the next page. Absent when there are no more pages.
          example: UnQ2OWIxNGY3ZTBlMzhmMzVmMjhjM2NjZWU=
        hasMore:
          type: boolean
          description: Whether more items exist beyond this page
    ColumnMetadata:
      type: object
      properties:
        width:
          type: integer
          format: int32
        fieldId:
          type: string
        visibility:
          type: boolean
        aggregationFunction:
          type: string
          enum:
          - SUM
          - AVG
          - MIN
          - MAX
    FilterColoringRule:
      type: object
      properties:
        id:
          type: string
        color:
          type: string
        appliedFilters:
          type: array
          items: {}
    UserReferenceDto:
      type: object
      description: Reference to a user with identifier and display name
      properties:
        id:
          type: string
          description: Unique identifier of the user
          example: 1C341E7B682505430A494138@0bd0200063c87f9749412b.e
          readOnly: true
        name:
          type: string
          description: Display name of the user
          example: Jane Doe
          readOnly: true
    FilterConditionDto:
      allOf:
      - $ref: '#/components/schemas/FilterNodeDto'
      - type: object
        properties:
          fieldId:
            type: string
            description: ID or alias of the field to filter on
            example: F693ab1c96f11ea3f4175e710
            minLength: 1
          condition:
            $ref: '#/components/schemas/FilterCondition'
            description: Filter condition to apply
          value:
            description: Value to compare against. Omit for unary conditions (IS_EMPTY, IS_NOT_EMPTY). Use an array for range conditions (IS_BETWEEN) or multi-value conditions (IS_ANY_OF). For People fields (USER, CREATED_BY, UPDATED_BY, APPROVED_BY), by default plain string values are interpreted as Adobe IMS user IDs when the customer is IMS-migrated; otherwise they are interpreted as Workfront user IDs. To explicitly set the ID type and avoid ambiguity, pass a typed object such as {"id":"63e3b13000078c1795146248182d15dc","idType":"WF"} (use "idType":"IMS" for Adobe IMS IDs).
            example: Active
          matchExternalId:
            type: boolean
            description: When true, values for REFERENCE fields are treated as external connection IDs and resolved to internal record IDs before the search executes. Only valid for external REFERENCE fields (isExternal=true).
      description: A leaf filter condition applied to a single field
      required:
      - condition
      - fieldId
    Coloring:
      type: object
      properties:
        record:
          $ref: '#/components/schemas/RecordColoring'
        group:
          $ref: '#/components/schemas/GroupColoring'
    RecordColoring:
      type: object
      properties:
        selected:
          type: string
          enum:
          - RECORD_TYPE
          - RECORD
          - FIELD
          - GROUP
          - FILTER
          - NONE
        fieldId:
          type: string
        highlightFullRow:
          type: boolean
        filterColoringRules:
          type: array
          items:
            $ref: '#/components/schemas/FilterColoringRule'
    FilterOperator:
      type: string
      description: Logical operator for combining filter conditions
      enum:
      - AND
      - OR
    SortDto:
      type: object
      description: Sort specification
      properties:
        fieldId:
          type: string
          description: ID or alias of the field to sort by
          example: F693ab1c96f11ea3f4175e710
          minLength: 1
        direction:
          type: string
          description: Sort direction (asc or desc). Defaults to asc if omitted.
          enum:
          - asc
          - desc
          example: asc
      required:
      - fieldId
    FilterNodeDto:
      description: 'A node in the filter tree: either a leaf condition or a nested group'
      oneOf:
      - $ref: '#/components/schemas/FilterConditionDto'
      - $ref: '#/components/schemas/FilterGroupDto'