> ## Documentation Index
> Fetch the complete documentation index at: https://docs.findtempo.co/llms.txt
> Use this file to discover all available pages before exploring further.

# List CRM field updates Tempo generated for visible organization deals

> Lists opportunity field updates Tempo proposed or wrote from source evidence, with the same filters and payload as the MCP list_deal_updates tool. Defaults match MCP: pending updates on open, non-renewal deals touched in the last 30 days, no-op proposals suppressed. Pass status=approved to read updates already applied to the CRM, deal_state=all to include closed deals, and max_days_since_update to widen the window. Comma-separated values are accepted for update_ids, field_ids, deal_types, and stages. Pending proposals are reviewed and approved in the Tempo app; this route never writes to the CRM.



## OpenAPI

````yaml /api-reference/openapi.json get /api/v1/deal-updates
openapi: 3.0.0
info:
  title: Tempo API
  description: >-
    The Tempo API gives you programmatic access to Tempo over HTTP.


    Authenticate with an API key passed as a Bearer token in the `Authorization`
    header.


    If you are building an AI agent rather than a traditional integration, the
    [MCP server](/integrations/mcp) exposes a richer surface and handles auth
    over OAuth.
  version: '1.0'
  contact: {}
servers:
  - url: https://findtempo.co
    description: Production
security: []
tags: []
paths:
  /api/v1/deal-updates:
    get:
      tags:
        - Public Read Tools
      summary: List CRM field updates Tempo generated for visible organization deals
      description: >-
        Lists opportunity field updates Tempo proposed or wrote from source
        evidence, with the same filters and payload as the MCP list_deal_updates
        tool. Defaults match MCP: pending updates on open, non-renewal deals
        touched in the last 30 days, no-op proposals suppressed. Pass
        status=approved to read updates already applied to the CRM,
        deal_state=all to include closed deals, and max_days_since_update to
        widen the window. Comma-separated values are accepted for update_ids,
        field_ids, deal_types, and stages. Pending proposals are reviewed and
        approved in the Tempo app; this route never writes to the CRM.
      operationId: PublicReadToolsController_listDealUpdates_v1
      parameters:
        - name: X-Acting-User
          in: header
          required: false
          description: >-
            Run the request as this organization member (user id or email). Omit
            to run as the organization. A value that is not a member returns
            403.
          schema:
            type: string
        - name: deal_id
          in: query
          required: false
          description: >-
            Restrict to one opportunity. With deal_id the cross-deal defaults
            (open, non-renewal, last 30 days) do not apply.
          schema:
            type: string
            format: uuid
        - name: status
          in: query
          required: false
          description: >-
            Omit for pending proposals; approved returns updates already written
            to the CRM.
          schema:
            type: string
            enum:
              - pending
              - approved
              - rejected
        - name: since
          in: query
          required: false
          description: Only updates changed on or after this date or date-time.
          schema:
            type: string
        - name: update_ids
          in: query
          required: false
          description: Exact update ids, comma-separated or repeated.
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: field_ids
          in: query
          required: false
          description: Exact field ids, comma-separated or repeated.
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: deal_state
          in: query
          required: false
          description: Cross-deal lists default to open.
          schema:
            type: string
            enum:
              - open
              - closed
              - all
        - name: deal_types
          in: query
          required: false
          description: CRM opportunity types, comma-separated or repeated.
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: exclude_renewals
          in: query
          required: false
          description: Cross-deal lists default to true.
          schema:
            type: boolean
        - name: stages
          in: query
          required: false
          description: CRM stage names, comma-separated or repeated.
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: max_days_since_update
          in: query
          required: false
          description: >-
            Only deals updated within this many days. Cross-deal lists default
            to 30.
          schema:
            type: integer
            minimum: 0
        - name: key_fields_only
          in: query
          required: false
          description: Only updates on fields marked as key fields.
          schema:
            type: boolean
        - name: suppress_no_op
          in: query
          required: false
          description: >-
            Hide proposals whose value equals the current CRM value. Defaults to
            true.
          schema:
            type: boolean
        - name: truncate
          in: query
          required: false
          description: Truncate long values and cited observations. Defaults to true.
          schema:
            type: boolean
        - name: limit
          in: query
          required: false
          description: Rows per page.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
        - name: offset
          in: query
          required: false
          description: Row offset; use next_offset from the previous page.
          schema:
            type: integer
            minimum: 0
      responses:
        '200':
          description: Deal updates returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DealUpdatesResponse'
        '400':
          description: Unknown or invalid query parameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
      security:
        - api-key: []
components:
  schemas:
    DealUpdatesResponse:
      type: object
      required:
        - deal_id
        - review_url
        - summary
        - page_total
        - matching_total
        - deal_total
        - updates
        - observations
        - artifacts
        - filters_applied
        - next_offset
      properties:
        deal_id:
          type: string
          nullable: true
          description: The deal_id filter, or null for a cross-deal list.
        review_url:
          type: string
          nullable: true
          description: >-
            Link to the deal's Updates tab in the Tempo app; null for a
            cross-deal list.
        summary:
          type: object
          required:
            - total
            - pending
            - approved
            - rejected
            - deals
          properties:
            total:
              type: integer
            pending:
              type: integer
            approved:
              type: integer
            rejected:
              type: integer
            deals:
              type: array
              items:
                $ref: '#/components/schemas/DealUpdatesDealSummary'
        page_total:
          type: integer
          description: Rows on this page.
        matching_total:
          type: integer
          description: Rows matching the filters across all pages.
        deal_total:
          type: integer
          description: Distinct deals on this page.
        updates:
          type: array
          items:
            $ref: '#/components/schemas/DealUpdate'
        observations:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/DealUpdateObservation'
          description: Cited observations keyed by observation_id.
        artifacts:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/DealUpdateArtifact'
          description: Cited artifacts keyed by artifact_id.
        filters_applied:
          type: array
          items:
            type: string
          description: Names of the default and explicit filters that shaped the result.
        next_offset:
          type: integer
          nullable: true
          description: Pass as offset for the next page; null on the last page.
    ErrorResponseDto:
      type: object
      properties:
        statusCode:
          type: integer
        message:
          oneOf:
            - type: string
            - type: array
              items:
                type: string
        error:
          type: string
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
      required:
        - statusCode
        - message
    DealUpdatesDealSummary:
      type: object
      required:
        - deal_id
        - deal_name
        - pending
        - approved
        - rejected
      properties:
        deal_id:
          type: string
        deal_name:
          type: string
        pending:
          type: integer
        approved:
          type: integer
        rejected:
          type: integer
    DealUpdate:
      type: object
      required:
        - id
        - update_id
        - deal_id
        - deal_name
        - field
        - field_id
        - field_api_name
        - field_is_updateable_in_crm
        - field_label_conflicts
        - proposed_value
        - current_value
        - current_value_full
        - proposed_value_display
        - current_value_display
        - reason
        - write_mode
        - final_value_preview
        - status
        - updated_at
        - sources
        - truncated
      properties:
        id:
          type: string
        update_id:
          type: string
          description: Same as id.
        deal_id:
          type: string
        deal_name:
          type: string
        field:
          type: string
          description: Field label.
        field_id:
          type: string
        field_api_name:
          type: string
          nullable: true
        field_is_updateable_in_crm:
          type: boolean
        field_label_conflicts:
          type: array
          items:
            type: string
          description: Other fields that share this label.
        proposed_value:
          type: string
        current_value:
          type: string
          nullable: true
          description: Current CRM value, truncated when truncate=true.
        current_value_full:
          type: string
          nullable: true
        proposed_value_display:
          type: string
          nullable: true
          description: >-
            Human-readable form of a reference-target value; null for other
            fields.
        current_value_display:
          type: string
          nullable: true
        reason:
          type: string
          nullable: true
          description: Why Tempo proposed the update.
        write_mode:
          type: string
          enum:
            - append
            - overwrite
            - unspecified
        final_value_preview:
          type: string
          nullable: true
          description: >-
            Merged value an append-mode update would write; null for other
            modes.
        status:
          type: string
          enum:
            - pending
            - approved
            - rejected
        updated_at:
          type: string
          format: date-time
        sources:
          type: array
          items:
            $ref: '#/components/schemas/DealUpdateSource'
        truncated:
          type: boolean
          description: True when a value or cited observation on this row was truncated.
    DealUpdateObservation:
      type: object
      required:
        - observation
        - type
        - artifact_id
        - source_quote
        - source_refs
      properties:
        observation:
          type: string
        type:
          type: string
        artifact_id:
          type: string
        source_quote:
          type: string
          nullable: true
        source_refs:
          type: array
          items:
            type: object
          description: Anchors into the artifact that support the observation.
    DealUpdateArtifact:
      type: object
      required:
        - title
        - type
        - date
      properties:
        title:
          type: string
          nullable: true
        type:
          type: string
        date:
          type: string
          nullable: true
    DealUpdateSource:
      type: object
      required:
        - observation_id
        - artifact_id
      properties:
        observation_id:
          type: string
          description: Key into the top-level observations map.
        artifact_id:
          type: string
          description: Key into the top-level artifacts map.
  securitySchemes:
    api-key:
      type: http
      scheme: bearer
      description: >-
        Your organization API key. Paste the key itself — the "Bearer " prefix
        is added for you.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.