---
title: "Propose Position Decision"
method: POST
path: "/position-decisions/proposals"
tags: ["position decisions"]
---

# Propose Position Decision

`POST /position-decisions/proposals`

## Request

- Base URL: `https://api.tickertrac.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.tickertrac.com/position-decisions/proposals`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

## Request body

- PositionDecisionProposalIn
  - `subject_type` 'company_thesis' | 'investment_theme', required
  - `subject_version` integer, required
  - `watchlist_id` integer, nullable
  - `shared_thesis_id` integer, nullable
  - `ticker` string, required
  - `action` 'opened' | 'added' | 'reduced' | 'closed' | 'reopened', required
  - `occurred_at` string, date-time, required
  - `rationale` string, nullable
  - `event_references` PositionDecisionEventReferenceIn[]
    - `kind` 'alert' | 'source_event' | 'theme_finding', required
    - `referent_id` integer, required
  - `execution_price` union
    - number
    - string
  - `execution_currency` string, nullable
  - `portfolio_weight_before_pct` union
    - number
    - string
  - `portfolio_weight_after_pct` union
    - number
    - string
  - `holding_change_pct` union
    - number
    - string
  - `supersedes_id` integer, nullable
  - `schema_version` 'position-decision-proposal-v1', required
  - `idempotency_key` string, uuid, required
  - `operation` 'propose_position_decision', required
  - `confirmation_policy` 'explicit_approval_required', required

## Response `200`

Successful Response

- PositionDecisionProposalOut
  - `schema_version` 'position-decision-proposal-v1', required
  - `idempotency_key` string, uuid, required
  - `operation` 'propose_position_decision', required
  - `confirmation_policy` 'explicit_approval_required', required
  - `subject_type` 'company_thesis' | 'investment_theme', required
  - `subject_version` integer, required
  - `subject_label` string, required
  - `watchlist_id` integer, nullable
  - `shared_thesis_id` integer, nullable
  - `ticker` string, required
  - `action` 'opened' | 'added' | 'reduced' | 'closed' | 'reopened', required
  - `occurred_at` string, date-time, required
  - `rationale` string, nullable
  - `events` PositionDecisionEventOut[]
    - `kind` 'alert' | 'source_event' | 'theme_finding', required
    - `referent_id` integer, required
    - `title` string, required
    - `occurred_at` string, date-time, required
    - `available_at` string, date-time, required
    - `source_url` string, nullable
    - `detail` string, nullable
    - `thesis_impact` 'strengthened' | 'weakened' | 'broken' | 'uncertain', nullable
    - `asserted_by_user` true
  - `price` PositionDecisionPriceOut, required
    - `basis` 'user_reported_execution' | 'market_reference' | 'unavailable', required
    - `amount` number, nullable
    - `currency` string, nullable
    - `reference_date` string, date, nullable
    - `source` string, nullable
    - `adjustment` 'splits', nullable
    - `coverage` 'current_symbol', nullable
  - `portfolio_weight_before_pct` number, nullable
  - `portfolio_weight_after_pct` number, nullable
  - `holding_change_pct` number, nullable
  - `supersedes_id` integer, nullable
  - `generated_at` string, date-time, required
  - `mutation_performed` false
  - `transcript_persisted` false
  - `provider_calls` 0
  - `model_calls` 0

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/tickertrac/apis/tickerrag-api.md) · [All operations](https://skmtc.dev/tickertrac/apis/tickerrag-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tickertrac/apis/tickerrag-api/revisions/3c7eb0f6425d?raw)
