API Evangelist enhancements for the NewTqnia Daily Digest API

11 actions 11 updates security extends ../openapi/newtqnia-daily-digest-api.yaml
Derived by API Evangelist Built from the contracts NewTqnia | Technology News, AI and Innovation publishes. NewTqnia | Technology News, AI and Innovation did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

responsesx-notex-attributionx-documentationx-llms-txtx-mcp-serverx-day-boundary-timezonex-empty-result-behavior

Targets 7

$.info
$.paths['/v1/news/today'].get
$.paths['/v1/news/latest'].get
$.components
$.components.schemas.Article.properties.url
$.components.schemas.Digest
$.servers

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the NewTqnia Daily Digest API
  version: 1.0.0
extends: ../openapi/newtqnia-daily-digest-api.yaml
x-generated: '2026-08-28'
x-method: derived
x-source: >-
  Derived from live probes of https://api.newtqnia.com and https://newtqnia.com/mcp, the
  developer documentation at https://newtqnia.com/en/developers, and the served OAuth
  discovery documents. Every action below records something the provider genuinely does
  but does not state in its contract. The original spec is never mutated.
actions:

- target: $.info
  description: Record the required attribution licence condition and the API's own docs.
  update:
    x-attribution:
      required: true
      text: Powered by NewTqnia
      url: https://newtqnia.com
      terms: https://newtqnia.com/en/terms
      note: >-
        Terms section 9 requires a visible "Powered by NewTqnia" link and preservation of
        the returned article URLs. The condition is also carried inside every response as
        the `attribution` object.
    x-documentation: https://newtqnia.com/en/developers
    x-llms-txt: https://newtqnia.com/llms.txt

- target: $.info
  description: >-
    Declare the sibling MCP surface, which reaches four content types the REST contract
    does not expose.
  update:
    x-mcp-server:
      endpoint: https://newtqnia.com/mcp
      transport: streamable-http
      auth: [api-key, oauth2-pkce]
      tools: [server_status, get_recent_news, get_news_by_id, get_timeline_by_id, search_terminology, search_explainers]
      crosswalk: ../mcp/newtqnia-tool-crosswalk.yml

- target: $.paths['/v1/news/today'].get
  description: >-
    Record the Asia/Dubai day boundary as an explicit machine-readable semantic - an agent
    computing "today" in its own timezone will disagree with this operation.
  update:
    x-day-boundary-timezone: Asia/Dubai
    x-empty-result-behavior: >-
      Returns a 200 with an empty articles array when nothing has been published today;
      callers wanting guaranteed content should use getLatestNews.

- target: $.paths['/v1/news/today'].get
  description: Add the undocumented 404 response observed on the live API.
  update:
    responses:
      '404':
        description: >-
          Endpoint not found. Undocumented in the original contract but observed live.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Error'

- target: $.paths['/v1/news/latest'].get
  description: Add the undocumented 404 response observed on the live API.
  update:
    responses:
      '404':
        description: >-
          Endpoint not found. Undocumented in the original contract but observed live.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Error'

- target: $.paths['/v1/news/latest'].get
  description: Record that ETag/Cache-Control are emitted here too, as on getTodaysNews.
  update:
    x-response-headers-observed: [ETag, Cache-Control, X-RateLimit-Limit, X-RateLimit-Remaining, X-NewTqnia-Cache]

- target: $.components
  description: >-
    Add the error envelope the API actually returns. The original contract declares no
    error schema anywhere, so no generated client can parse a failure.
  update:
    schemas:
      Error:
        type: object
        required: [error]
        properties:
          error:
            type: object
            required: [code, message]
            properties:
              code:
                type: string
                description: Machine-readable slug, e.g. not_found.
              message:
                type: string
              documentation:
                type: string
                format: uri
        x-observed: 'GET https://api.newtqnia.com/v1/news/nope -> 404 application/json'

- target: $.components
  description: >-
    Declare the optional API key as a securityScheme. The original contract models it only
    as a header parameter, so a generator cannot see that an authenticated mode exists.
  update:
    securitySchemes:
      ApiKeyAuth:
        type: apiKey
        name: X-API-Key
        in: header
        description: >-
          Optional ntq_-prefixed personal key. Public endpoints remain accessible without
          it; supplying it associates usage with your account and verifies a website
          origin. Obtain one at https://newtqnia.com/en/connect.
      BearerAuth:
        type: http
        scheme: bearer
        description: The same ntq_ key sent as a bearer token.

- target: $.components.schemas.Article.properties.url
  description: Record that stripping the returned tracking parameters breaches the terms.
  update:
    x-preserve-verbatim: true
    x-note: >-
      Returned with utm_source=newtqnia_api&utm_medium=api&utm_campaign=daily_digest_api.
      Terms section 9 requires the returned URL be preserved as-is.

- target: $.components.schemas.Digest
  description: Record the `usage` object present in live responses but absent from the schema.
  update:
    x-additional-observed-properties:
      usage:
        type: object
        properties:
          notice:
            type: string
            example: Display "Powered by NewTqnia" with a visible link when presenting this content.
          terms_url:
            type: string
            format: uri

- target: $.servers
  description: >-
    Note which server is canonical, since both are declared and only one is the documented
    base.
  update:
    x-canonical: https://api.newtqnia.com
    x-note: >-
      https://newtqnia.com is declared as a legacy compatibility endpoint. The developer
      documentation names https://api.newtqnia.com/v1 as the base URL, and repair-api-bases
      confirms agreement across apis.yml, _original and servers[].