> ## Documentation Index
> Fetch the complete documentation index at: https://developers.fhsc.com.vn/llms.txt
> Use this file to discover all available pages before exploring further.

# Chi tiết 1 bài tin tức tài chính toàn cầu

> Chi tiết đầy đủ 1 bài tin tức theo `id`. Response kế thừa toàn bộ field
của item trong danh sách kèm thêm `content` (nội dung đầy đủ bài báo).

Trả về `404` với `error_code: "404"` nếu bài viết không tồn tại.




## OpenAPI

````yaml /openapi.yaml get /market/financial-data/global-news/{id}
openapi: 3.1.0
info:
  title: Finhay Securities Open API
  version: 0.2.0-preview.3
  description: |
    Đặc tả chính thức của Finhay Securities Open API, dùng chung cho SDK
    codegen, Redoc docs, và (sau này) mock server / contract test.

    ## Authentication — 2 tier

    - **Tier 1 — chỉ cần API key**: các endpoint đọc dữ liệu thị trường
      (`GET /market/**`, `GET /trading/market/**`). Gửi kèm header
      `X-FH-APIKEY` là đủ.
    - **Tier 2 — HMAC signing**: các endpoint liên quan đến account /
      trading / user. Gửi kèm 4 header `X-FH-APIKEY` + `X-FH-TIMESTAMP` +
      `X-FH-NONCE` + `X-FH-SIGNATURE`; thêm `X-FH-BODYHASH` khi request có
      body. Chi tiết thuật toán xem extension `x-finhay-signing` ở root
      spec hoặc phần README.

    ## Bootstrap flow

    Gọi 2 endpoint tag **Khởi tạo** (`GET /users/v1/users/me` và
    `GET /users/v1/users/{userId}/sub-accounts`) **1 lần khi khởi tạo
    client** để lấy thông tin `user_id` và `subAccountId`. Mọi endpoint thuộc
    tag **Tổng tài sản / Tiểu khoản / Danh mục đầu tư / Sổ lệnh / Lãi-lỗ /
    Quyền cổ đông** đều cần 2 giá trị này để truyền vào path parameter.
  contact: {}
servers:
  - url: https://open-api.fhsc.com.vn
    description: Production
security:
  - FinhayApiKey: []
tags:
  - name: Khởi tạo
    description: >-
      Khởi tạo client — lấy `user_id` và `subAccountId`. Gọi 1 lần khi khởi tạo
      SDK rồi cache lại.
  - name: Dữ liệu giao dịch
    description: >-
      Giá stock realtime và lịch sử OHLCV (dạng columnar, phục vụ charting /
      time-series).
  - name: Phân tích cơ bản
    description: >-
      Chỉ số tài chính cơ bản của doanh nghiệp — chỉ số tổng quan, phân tích
      theo kỳ và báo cáo tài chính chuẩn (income statement / balance sheet /
      cash flow).
  - name: Tin tức-sự kiện
    description: >-
      Sự kiện doanh nghiệp (cổ tức, quyền mua, ĐHCĐ, …), tin tức stock, tin tức
      tài chính toàn cầu (forex / commodities / economic-indicators /
      stock-market / cryptocurrency) và báo cáo khuyến nghị từ analyst.
  - name: Kinh tế vĩ mô
    description: >-
      Chỉ số kinh tế vĩ mô (CPI, PMI, PCE, GDP, …) và lãi suất tiền gửi ngân
      hàng.
  - name: Hàng hoá
    description: >-
      Hàng hoá và tài sản thay thế — vàng, bạc (spot / chart / theo nhà cung
      cấp) và crypto trending.
  - name: Tổng hợp đa loại
    description: >-
      Endpoint composite tổng hợp cross-domain (vàng / bạc / crypto / FX / lãi
      suất / US index) trong 1 call. Nên dùng endpoint chuyên biệt nếu chỉ cần 1
      loại.
  - name: Quỹ mở
    description: >-
      Quỹ mở (open-ended funds) — danh sách quỹ, công ty quản lý, NAV history,
      holdings, ranking và benchmark cross-fund.
  - name: Tổng tài sản
    description: >-
      Tổng quan tài sản cấp user — cross-product (stock, fund, bond, hay0) kèm
      cash, debt, PnL.
  - name: Tiểu khoản
    description: Thông tin tiểu khoản — số dư, margin, dư nợ và ngân hàng liên kết.
  - name: Danh mục đầu tư
    description: Danh mục stock đang nắm giữ kèm giá realtime và PnL theo vị thế.
  - name: Sổ lệnh
    description: >-
      Quản lý lệnh — sổ lệnh trong ngày, danh sách đầy đủ hoặc chi tiết theo
      `orderId`.
  - name: Lãi-lỗ
    description: PnL và analytics cá nhân — lãi / lỗ trong ngày tổng hợp theo user.
  - name: Quyền cổ đông
    description: Quyền cổ đông (cổ tức, quyền mua, bỏ phiếu, …) của tiểu khoản.
  - name: Phiên giao dịch
    description: >-
      Hạ tầng trading — trạng thái phiên giao dịch và order type khả dụng của
      mỗi exchange.
  - name: Thực thi lệnh
    description: |
      ⚠️ Nhóm endpoint này đang ở giai đoạn **preview**.

      Đặt / sửa / huỷ lệnh trên sàn — write operation nhạy cảm, yêu cầu
      Tier 2 HMAC đầy đủ + `X-FH-BODYHASH` + `X-FH-2FA-TOKEN` (daily 2FA
      session).
paths:
  /market/financial-data/global-news/{id}:
    get:
      tags:
        - Tin tức-sự kiện
      summary: Chi tiết 1 bài tin tức tài chính toàn cầu
      description: |
        Chi tiết đầy đủ 1 bài tin tức theo `id`. Response kế thừa toàn bộ field
        của item trong danh sách kèm thêm `content` (nội dung đầy đủ bài báo).

        Trả về `404` với `error_code: "404"` nếu bài viết không tồn tại.
      operationId: corporateGetGlobalNewsDetail
      parameters:
        - name: id
          in: path
          required: true
          description: ID bài báo lấy từ endpoint danh sách (`corporateGetGlobalNews`).
          schema:
            type: integer
            example: 12
      responses:
        '200':
          description: >-
            Trả về `data` chứa toàn bộ field của item trong danh sách +
            `content` (nội dung đầy đủ).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GlobalNewsDetailResponse'
              example:
                error_code: '0'
                message: success
                data:
                  id: 12
                  title: Fed signals rate hold at next meeting
                  url: https://example.com/news/fed-rate-hold
                  description: >-
                    Fed officials signaled the federal funds rate will likely
                    remain unchanged…
                  provider: Reuters
                  published_at: '2026-04-22T08:30:00Z'
                  category: economic-indicators
                  content: >
                    Federal Reserve officials are leaning toward keeping the
                    federal funds

                    rate unchanged at their upcoming meeting, several
                    policymakers signaled

                    this week. The shift comes as inflation data continues to
                    come in…
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
      x-codeSamples:
        - lang: bash
          label: cURL
          source: |
            curl -H "X-FH-APIKEY: $FINHAY_API_KEY" \
              "https://open-api.fhsc.com.vn/market/financial-data/global-news/12"
components:
  schemas:
    GlobalNewsDetailResponse:
      allOf:
        - $ref: '#/components/schemas/EnvelopeBase'
        - type: object
          required:
            - data
          properties:
            data:
              $ref: '#/components/schemas/GlobalNewsDetail'
    EnvelopeBase:
      type: object
      description: |
        Các field chung của envelope trong mọi response của Finhay API.

        - `error_code` là `"0"` (string) khi thành công, mã khác `"0"` khi lỗi.
        - `message` là thông điệp ngắn từ server.
      properties:
        error_code:
          type: string
          description: '`"0"` khi thành công, khác `"0"` khi lỗi.'
          example: '0'
        message:
          type: string
          description: Thông điệp trạng thái dễ đọc.
          example: success
    GlobalNewsDetail:
      type: object
      description: |
        Chi tiết bài báo tin tức tài chính toàn cầu — kế thừa toàn bộ field của
        `GlobalNewsListItem`, bổ sung `content` (nội dung đầy đủ bài báo).
      allOf:
        - $ref: '#/components/schemas/GlobalNewsListItem'
        - type: object
          properties:
            content:
              type:
                - string
                - 'null'
              description: Nội dung đầy đủ bài báo (nullable).
    ErrorBody:
      type: object
      description: Body của response khi 4xx / 5xx.
      properties:
        error_code:
          type: string
          description: >-
            Mã lỗi khác `"0"` (ví dụ `AUTH_SIGNATURE_INVALID`,
            `RATE_LIMIT_EXCEEDED`, …).
          example: '400'
        message:
          type: string
          description: Thông điệp lỗi (tiếng Anh, từ server).
          example: Invalid parameter
      required:
        - error_code
        - message
    GlobalNewsListItem:
      type: object
      description: 1 item tin tức tài chính toàn cầu trong response danh sách.
      properties:
        id:
          type: integer
          description: ID bài báo — dùng để gọi endpoint chi tiết.
          example: 12
        title:
          type: string
          description: Tiêu đề bài báo.
        url:
          type: string
          description: URL bài báo gốc tại nguồn.
        description:
          type:
            - string
            - 'null'
          description: Tóm tắt ngắn (nullable).
        provider:
          type:
            - string
            - 'null'
          description: Tên nguồn / nhà cung cấp (nullable).
        published_at:
          type: string
          format: date-time
          description: Thời điểm xuất bản (ISO 8601).
        category:
          $ref: '#/components/schemas/GlobalNewsCategory'
      required:
        - id
        - title
        - url
        - published_at
        - category
    GlobalNewsCategory:
      type: string
      description: >
        Phân loại tin tức tài chính toàn cầu
        (`/market/financial-data/global-news`).


        | Giá trị | Ý nghĩa |

        |---------|---------|

        | `forex` | Ngoại hối / tỷ giá |

        | `commodities` | Hàng hoá (vàng, bạc, dầu, …) |

        | `economic-indicators` | Chỉ số kinh tế (CPI, GDP, PMI, …) |

        | `stock-market` | Thị trường chứng khoán toàn cầu |

        | `cryptocurrency` | Tiền số |
      enum:
        - forex
        - commodities
        - economic-indicators
        - stock-market
        - cryptocurrency
      x-enum-varnames:
        - FOREX
        - COMMODITIES
        - ECONOMIC_INDICATORS
        - STOCK_MARKET
        - CRYPTOCURRENCY
  responses:
    BadRequest:
      description: Request không hợp lệ — thiếu hoặc sai tham số.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
          example:
            error_code: '400'
            message: Invalid parameter
    Unauthorized:
      description: Không xác thực — thiếu, sai hoặc không hợp lệ chữ ký / API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
          example:
            error_code: '401'
            message: Invalid signature
    NotFound:
      description: >-
        Tài nguyên không tồn tại — `error_code` mô tả cụ thể loại tài nguyên
        không tìm thấy.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
          example:
            error_code: '404'
            message: Not found
    RateLimited:
      description: >-
        Vượt giới hạn rate limit. Chờ đến thời điểm `X-RateLimit-Reset` rồi thử
        lại.
      headers:
        X-RateLimit-Reset:
          $ref: '#/components/headers/XRateLimitReset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
          example:
            error_code: '429'
            message: Too many requests
    InternalError:
      description: Lỗi server nội bộ.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
          example:
            error_code: '500'
            message: Internal server error
  headers:
    XRateLimitReset:
      description: |
        Unix timestamp (giây) — thời điểm window rate limit reset. Client nhận
        `429 Too Many Requests` nên chờ đến thời điểm này rồi retry.
      schema:
        type: integer
        format: int64
        example: 1713441600
  securitySchemes:
    FinhayApiKey:
      type: apiKey
      in: header
      name: X-FH-APIKEY
      description: >
        API key dài hạn của client. Cấu hình 1 lần lúc khởi tạo; có thể wire
        thẳng

        vào static setter của SDK tự-gen. Đi kèm với `FINHAY_API_SECRET` —
        secret

        này chỉ dùng ở phía client để tính `X-FH-SIGNATURE`, **không** bao giờ

        gửi qua mạng.

````