---
title: "Get Asset Full"
method: GET
path: "/api/asset/{symbol}/full"
tags: ["market"]
---

# Get Asset Full

`GET /api/asset/{symbol}/full`

## Request

- Base URL: `https://api.halalterminal.com`
- URL: `https://api.halalterminal.com/api/asset/{symbol}/full`
- Auth: API key in header `X-API-Key`

Get a comprehensive view of an asset combining multiple data sources.

Returns a unified response containing the live quote, Shariah screening
result, and static database record for the given symbol.

**curl example**:
```bash
curl -X GET "http://localhost:8000/api/asset/AAPL/full"
```

**Python requests example**:
```python
import requests
resp = requests.get("http://localhost:8000/api/asset/AAPL/full")
asset = resp.json()
```

## Path parameters

- `symbol` string, required: Ticker symbol, e.g. AAPL.

## Response `200`

Aggregated asset view with quote, screening, and database data

- AssetFullResponse
  - `symbol` string, required: Ticker symbol
  - `quote` QuoteResponse
    - `symbol` string, required: Ticker symbol
    - `name` string, required: Company or asset name
    - `price` number, required: Last traded price, in `currency`
    - `currency` string, nullable: Currency the venue quotes this instrument in, ISO code. Sub-unit venues are folded into their parent, so a London line reports GBP and a price in pounds. Null when the upstream did not say.
    - `change` number, required: Absolute price change since previous close
    - `changePercent` number, required: Percentage price change since previous close
    - `volume` integer, required: Trading volume for the current session
    - `high` number, required: Session high price
    - `low` number, required: Session low price
    - `open` number, required: Session opening price
    - `previousClose` number, required: Previous session closing price
    - `marketCap` number, nullable: Market capitalization, in `currency`
    - `peRatio` number, nullable: Price-to-earnings ratio (trailing twelve months)
    - `dividendYield` number, nullable: Annual dividend yield as a decimal
    - `beta` number, nullable: Beta coefficient relative to the market
    - `disclaimers` Disclaimer[], nullable: Attached by middleware; see /api/disclaimers.
      - `id` string, required: Stable category identifier — safe for clients to dedupe and cache on.
      - `version` string, required: ISO-8601 date of the most recent edit to `text`. Advances whenever the wording changes, even for typo fixes.
      - `lang` string: BCP-47 language tag for `text`. Today always 'en'; reserved for future i18n.
      - `severity` string, required: Grouping hint for UIs. 'religious' for fatwa/scholar caveats; 'data' for data-freshness, sourcing, or coverage caveats.
      - `text` string, required: Short inline disclaimer text.
      - `url` string, required: Canonical legal page URL (deep-linked to the relevant section).
  - `screening` ScreeningResultResponse
    - `symbol` string, required
    - `name` string, nullable: Issuer / fund display name.
    - `asset_type` string, nullable: Asset class label derived during screening: 'Equity', 'ETF', 'ClosedEndFund', 'REIT', etc. Drives downstream methodology dispatch.
    - `last_checked_at` union
      - string, date-time
      - string
    - `is_stale` boolean, nullable: True when `last_checked_at` is older than the 7-day refresh policy (SCREENING_STALENESS_HOURS, default 168). The platform re-screens cached results nightly, most-requested symbols first.
    - `is_compliant` boolean, nullable: Overall Shariah compliance verdict (True = compliant under at least one methodology)
    - `shariah_compliance_status` 'compliant' | 'non_compliant' | 'insufficient_data', nullable: Canonical string mirror of `is_compliant` in lowercase vocabulary (matches the ETF response and `MethodologyVerdict`). Synthesized by the service normalizer if absent on cached rows.
    - `business_screen_pass` boolean, nullable: Whether the company's primary business activities are permissible
    - `business_screen_reason` string, nullable: Human-readable explanation for the business screen verdict
    - `financial_screen_pass` boolean, nullable: Whether the company passes all financial ratio thresholds
    - `error` string, nullable
    - `error_message` string, nullable
    - `sector` string, nullable
    - `industry` string, nullable
    - `country` string, nullable
    - `website` string, nullable
    - `long_business_summary` string, nullable
    - `total_assets` number, nullable
    - `total_debt` number, nullable
    - `cash_and_equivalents` number, nullable
    - `accounts_receivable` number, nullable
    - `total_revenue` number, nullable
    - `interest_income` number, nullable
    - `debt_to_assets_ratio` number, nullable: Total debt / total assets — must be below threshold (e.g. 33% for AAOIFI)
    - `cash_to_assets_ratio` number, nullable: Cash and equivalents / total assets
    - `accounts_receivable_to_assets_ratio` number, nullable: Accounts receivable / total assets
    - `interest_income_to_revenue_ratio` number, nullable: Interest income / total revenue — measures impermissible income proportion
    - `debt_to_market_cap_ratio` number, nullable: Total debt / market capitalization — the AAOIFI debt screen since June 2026, and an input to DJIM and S&P. Computed on the same capitalization the AAOIFI verdict was rendered against: spot market cap by default, or the trailing average when a trailing basis is in force for that screen.
    - `cash_to_market_cap_ratio` number, nullable
    - `receivables_to_market_cap_ratio` number, nullable
    - `liquidity_to_market_cap_ratio` number, nullable
    - `liquidity_to_assets_ratio` number, nullable
    - `purification_rate` number, nullable: Percentage of dividend income to purify (donate) due to impermissible revenue
    - `aaoifi_compliant` boolean, nullable: Pass/fail for AAOIFI (Shari'ah Standard 21). For ratio, basis and reason, see by_methodology.AAOIFI.
    - `djim_compliant` boolean, nullable: Pass/fail for the Dow Jones Islamic Market methodology. Detail in by_methodology.DJIM.
    - `ftse_compliant` boolean, nullable: Pass/fail for the FTSE Shariah methodology. Detail in by_methodology.FTSE.
    - `msci_compliant` boolean, nullable: Pass/fail for the MSCI Islamic methodology. Detail in by_methodology.MSCI.
    - `sp_compliant` boolean, nullable: Pass/fail for the S&P Shariah methodology. Detail in by_methodology.SP.
    - `methodology_summary` object, nullable: Mapping of methodology name to compliance verdict: true = compliant, false = non-compliant, null = insufficient data (see data_quality.methodologies_insufficient).
    - `by_methodology` object, nullable: Structured per-methodology block. Mirrors `methodology_summary` for the verdict but adds an `verified` audit flag and a `reason` string. Synthesized by the service normalizer if absent on cached rows.
    - `data_quality` DataQualityInfo: Diagnostic block reporting which raw fields were missing and which methodologies abstained as a result. Useful for surfacing 'we don't know yet' instead of conflating it with non-compliance.
      - `missing_fields` string[]: Field names absent from the upstream financials (e.g. 'total_debt', 'market_cap').
      - `quality_flags` string[]: Why a field was dropped by a data-quality guard rather than simply being absent upstream: 'source_divergence' (two independent figures disagree beyond tolerance), 'discontinuous_column' (a balance-sheet item jumped implausibly between consecutive reports), 'period_mismatch' (an annual numerator over a quarterly denominator), 'filed_figure_incomplete' (a regulatory filing omits a debt component). Distinguishes 'we refused to answer' from 'nobody reported it'.
      - `methodologies_insufficient` string[]: Methodologies that could not be scored. When this set contains every methodology, the aggregate `is_compliant` is null and `shariah_compliance_status` is `insufficient_data`.
    - `questionable_business` object, nullable: ADVISORY (does not affect the verdict): {flag, reasons} when the issuer's video-game portfolio includes simulated-gambling content (social casino, slots, poker). Video gaming itself passes the business screen; this flag marks the scholars-differ cases the way analyst-based screeners label them 'questionable'.
    - `ifi_exempt` boolean, nullable: True when the issuer is a certified Islamic financial institution (curated registry / regulated name markers): exempt from the conventional-finance exclusion and the accounting screens per the DJIM/MSCI/S&P IFI carve-outs. Null for ordinary issuers.
    - `business_income` object, nullable: ADVISORY (does not affect the verdict): per-segment revenue breakdown extracted from the issuer's latest 10-K, with each segment classified permissible / impermissible / questionable / unknown by a versioned rules map. Includes the combined impure ratio (interest + impermissible) and a separate with-questionable figure — the split where reputable screeners legitimately differ. Null when no segment analysis exists yet.
    - `fx_normalization` object, nullable: Present when the issuer reports financials in a different currency than its listing (ADR-style): {rate, from, to} used to convert the market-cap-ratio numerators into the listing currency. Null when no mismatch existed or no rate could be resolved (in which case MC-basis methodologies abstain).
    - `compliance_explanation` string, nullable: Plain-English summary of the compliance verdict: which methodologies pass, which fail, and which ratio tripped the failures. Empty for ticker_unknown or rows where the financial screen could not run.
    - `fundamentals_provenance` FundamentalsProvenance: Per-metric source attribution for the fundamentals behind a verdict. Each value is `sec` (SEC XBRL) or `yfinance`. Populated only when the SEC-XBRL financial provider screened the name; a screen result's `fundamentals_provenance` is null for yfinance-only screens.
      - `total_debt` string, required: Source of the total-debt figure: 'sec' or 'yfinance'.
      - `total_assets` string, required: Source of the total-assets figure.
      - `cash` string, required: Source of the cash-and-investments figure.
      - `receivables` string, required: Source of the accounts-receivable figure.
      - `total_revenue` string, required: Source of the total-revenue figure.
      - `interest_income` string, required: Source of the interest-income figure.
    - `return_on_equity` number, nullable
    - `net_profit_margin` number, nullable
    - `revenue_growth` number, nullable
    - `pe_ratio` number, nullable
    - `pb_ratio` number, nullable
    - `intrinsic_value` number, nullable
    - `dcf_upside_percentage` number, nullable: Upside/downside percentage based on DCF intrinsic value vs current price
    - `momentum_trend` string, nullable
    - `rsi_status` string, nullable
    - `current_ratio` number, nullable
    - `market_cap` number, nullable
    - `beta` number, nullable
    - `dividend_yield` number, nullable
    - `disposition` string, nullable: ETF-only. Non-verdict scholar-derived label: 'scholar_certified', 'data_quality_flag', 'contested', 'unrated'. See v2 cert spec §11.
    - `scholar_attestations` object[], nullable: ETF-only. List of scholar-board attestations; empty list when none on file.
    - `holdings_analysis` object, nullable: ETF-only. Aggregate holdings-based compliance metrics (compliant_weight, etc.).
    - `detail_url` string, nullable: ETF-only. Path to the richer first-class ETF endpoint (`/api/etf/{symbol}/screen`).
    - `disclaimers` Disclaimer[], nullable: Per-response disclaimers attached by the DisclaimerMiddleware. See `GET /api/disclaimers` for the full registry.
      - `id` string, required: Stable category identifier — safe for clients to dedupe and cache on.
      - `version` string, required: ISO-8601 date of the most recent edit to `text`. Advances whenever the wording changes, even for typo fixes.
      - `lang` string: BCP-47 language tag for `text`. Today always 'en'; reserved for future i18n.
      - `severity` string, required: Grouping hint for UIs. 'religious' for fatwa/scholar caveats; 'data' for data-freshness, sourcing, or coverage caveats.
      - `text` string, required: Short inline disclaimer text.
      - `url` string, required: Canonical legal page URL (deep-linked to the relevant section).
  - `database` DatabaseStockResponse
    - `symbol` string, required: Ticker symbol
    - `type` string, nullable: Asset type, e.g. equities, etfs, funds
    - `name` string, nullable: Company or asset name
    - `sector` string, nullable: Sector classification
    - `exchange` string, nullable: Exchange where the asset is listed
    - `country` string, nullable: Country of incorporation or domicile
  - `disclaimers` Disclaimer[], nullable: Attached by middleware; see /api/disclaimers.
    - `id` string, required: Stable category identifier — safe for clients to dedupe and cache on.
    - `version` string, required: ISO-8601 date of the most recent edit to `text`. Advances whenever the wording changes, even for typo fixes.
    - `lang` string: BCP-47 language tag for `text`. Today always 'en'; reserved for future i18n.
    - `severity` string, required: Grouping hint for UIs. 'religious' for fatwa/scholar caveats; 'data' for data-freshness, sourcing, or coverage caveats.
    - `text` string, required: Short inline disclaimer text.
    - `url` string, required: Canonical legal page URL (deep-linked to the relevant section).

## Other responses

- `401`: API key required or invalid
- `404`: Symbol not found in database
- `422`: Validation Error
- `429`: Quota exceeded

---

[API](https://skmtc.dev/halalterminal/apis/halal-terminal-api.md) · [All operations](https://skmtc.dev/halalterminal/apis/halal-terminal-api/llms.txt) · [OpenAPI document](https://skmtc.dev/halalterminal/apis/halal-terminal-api/revisions/78768b250943?raw)
