Newscatcher Monitors API

Operations to create, operate and retrieve monitor results.

OpenAPI Specification

newscatcher-monitors-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Local News AggregationCount Monitors API
  description: 'The Local News API provides access to local news articles with location-specific filtering capabilities.


    ## Standard endpoints


    - `/search`: Search articles by keywords with simple location filtering ("City, State" format).

    - `/latest_headlines`: Retrieve recent articles for specified locations and time periods.

    - `/search_by`: Retrieve articles by URL, ID, or RSS GUID.

    - `/sources`: List available news sources.


    ## Advanced endpoints


    - `/search/advanced`: Search with structured GeoNames filtering.

    - `/latest_headlines/advanced`: Latest headlines with structured GeoNames filtering.


    ## Features


    - Multiple location detection methods including dedicated sources, proximity analysis, and AI extraction

    - Natural language processing for sentiment analysis and entity recognition on original content and English translations

    - Article clustering for topic analysis

    - English translations for non-English content

    '
  termsOfService: https://newscatcherapi.com/terms-of-service
  contact:
    name: Maksym Sugonyaka
    email: maksym@newscatcherapi.com
    url: https://www.newscatcherapi.com/book-a-demo
  version: 1.2.0
servers:
- url: https://local-news.newscatcherapi.com
  description: Local News API production server
security:
- ApiKeyAuth: []
tags:
- name: Monitors
  description: Operations to create, operate and retrieve monitor results.
  externalDocs:
    description: Automate recurring queries with scheduled jobs and webhook notifications.
    url: https://www.newscatcherapi.com/docs/web-search-api/guides-and-concepts/monitors
paths:
  /catchAll/monitors:
    get:
      tags:
      - Monitors
      summary: List monitors
      description: Returns all monitors created by the authenticated user.
      operationId: listMonitors
      parameters:
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/Search'
      - $ref: '#/components/parameters/Ownership'
      - $ref: '#/components/parameters/ProjectIdQuery'
      responses:
        '200':
          $ref: '#/components/responses/ListMonitorsResponse'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '422':
          $ref: '#/components/responses/ValidationError'
  /catchAll/monitors/create:
    post:
      tags:
      - Monitors
      summary: Create monitor
      description: Create a scheduled monitor based on a reference job.
      operationId: createMonitor
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMonitorRequestDto'
            example:
              reference_job_id: 5f0c9087-85cb-4917-b3c7-e5a5eff73a0c
              schedule: every day at 12 PM
              timezone: UTC
              backfill: true
              limit: 10
              webhook_ids:
              - a1b2c3d4-e5f6-7890-abcd-ef1234567890
      responses:
        '200':
          $ref: '#/components/responses/CreateMonitorResponse'
        '422':
          $ref: '#/components/responses/ValidationError'
  /catchAll/monitors/pull/{monitor_id}:
    get:
      tags:
      - Monitors
      summary: Get monitor results
      description: Retrieve aggregated results from all jobs executed by a monitor.
      operationId: pullMonitorResults
      parameters:
      - name: monitor_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Monitor identifier.
      responses:
        '200':
          $ref: '#/components/responses/PullMonitorResponse'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '422':
          $ref: '#/components/responses/ValidationError'
  /catchAll/monitors/{monitor_id}/jobs:
    get:
      tags:
      - Monitors
      summary: List monitor jobs
      description: Return all jobs executed by a monitor.
      operationId: listMonitorJobs
      parameters:
      - name: monitor_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Monitor identifier.
      - name: sort
        in: query
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
        description: Sort by start_date (asc or desc).
      responses:
        '200':
          $ref: '#/components/responses/ListMonitorJobsResponse'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '422':
          $ref: '#/components/responses/ValidationError'
  /catchAll/monitors/{monitor_id}/status:
    get:
      tags:
      - Monitors
      summary: Get monitor status history
      description: 'Returns the full execution history of a monitor as a list of status entries, ordered from newest to oldest.

        '
      operationId: getMonitorStatusHistory
      parameters:
      - name: monitor_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Monitor identifier.
      responses:
        '200':
          $ref: '#/components/responses/MonitorStatusHistoryResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NotFoundError'
  /catchAll/monitors/{monitor_id}/enable:
    post:
      tags:
      - Monitors
      summary: Enable monitor
      description: Resume scheduled job execution for a monitor.
      operationId: enableMonitor
      parameters:
      - name: monitor_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Monitor identifier.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnableMonitorRequestDto'
            example:
              backfill: true
      responses:
        '200':
          description: Monitor enabled successfully
          content:
            application/json:
              schema:
                type: object
                required:
                - success
                - message
                - monitor_id
                properties:
                  success:
                    type: boolean
                    description: True if the operation succeeded; false otherwise.
                    example: true
                  message:
                    type: string
                    description: Human-readable success message.
                    example: Monitor enabled successfully.
                  monitor_id:
                    type: string
                    format: uuid
                    description: ID of the enabled monitor.
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '422':
          $ref: '#/components/responses/ValidationError'
  /catchAll/monitors/{monitor_id}/disable:
    post:
      tags:
      - Monitors
      summary: Disable monitor
      description: Stop scheduled job execution for a monitor.
      operationId: disableMonitor
      parameters:
      - name: monitor_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Monitor identifier.
      responses:
        '200':
          description: Monitor disabled successfully
          content:
            application/json:
              schema:
                type: object
                required:
                - success
                - message
                - monitor_id
                properties:
                  success:
                    type: boolean
                    description: True if the operation succeeded; false otherwise.
                    example: true
                  message:
                    type: string
                    description: Human-readable success message.
                    example: Monitor disabled successfully.
                  monitor_id:
                    type: string
                    format: uuid
                    description: ID of the disabled monitor.
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '422':
          $ref: '#/components/responses/ValidationError'
  /catchAll/monitors/{monitor_id}:
    patch:
      tags:
      - Monitors
      summary: Update monitor
      description: Update the webhook configuration for an existing monitor.
      operationId: updateMonitor
      externalDocs:
        description: Learn about monitor configuration
        url: https://www.newscatcherapi.com/docs/web-search-api/how-to/configure-monitors
      parameters:
      - name: monitor_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Monitor identifier.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateMonitorRequestDto'
            example:
              webhook_ids:
              - a1b2c3d4-e5f6-7890-abcd-ef1234567890
      responses:
        '200':
          $ref: '#/components/responses/UpdateMonitorResponse'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '422':
          $ref: '#/components/responses/ValidationError'
    delete:
      tags:
      - Monitors
      summary: Delete monitor
      description: 'Soft-deletes a monitor. The monitor is flagged as deleted, stops

        executing scheduled jobs immediately, and no longer appears in list

        results.


        Only the monitor owner can delete a monitor. Returns `404` if the

        monitor is not found or does not belong to the authenticated user.


        Deleting an already-deleted monitor returns `200`.

        '
      operationId: deleteMonitor
      parameters:
      - name: monitor_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Monitor identifier.
      responses:
        '200':
          $ref: '#/components/responses/DeleteMonitorResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NotFoundError'
components:
  schemas:
    Citation:
      type: object
      required:
      - title
      - link
      - published_date
      properties:
        title:
          type: string
          description: The title of the source document.
          example: 'Exclusive: VulnCheck raises $25M funding to help companies patch software bugs'
        link:
          type: string
          format: uri
          description: URL to the source document.
          example: https://www.msn.com/en-us/money/other/exclusive-vulncheck-raises-25m-funding-to-help-companies-patch-software-bugs/ar-AA1WwdjW
        published_date:
          type: string
          format: date-time
          description: The publication date of the source document in ISO 8601 format (UTC timezone).
          example: '2026-02-17T14:01:05Z'
    MonitorListItemDto:
      type: object
      required:
      - monitor_id
      - reference_job_id
      - reference_job_query
      - enabled
      properties:
        monitor_id:
          type: string
          format: uuid
          description: Monitor identifier.
          example: 7f3a8b2c-1e4d-4a5b-9c8d-6e7f8a9b0c1d
        reference_job_id:
          type: string
          format: uuid
          description: Job identifier used as a reference for this monitor.
          example: 5f0c9087-85cb-4917-b3c7-e5a5eff73a0c
        reference_job_query:
          type: string
          description: Plain text query from the reference job.
          example: Series B funding rounds for SaaS startups
        enabled:
          type: boolean
          description: True if the monitor is currently active; false otherwise.
          example: true
        schedule:
          type: string
          description: Cron expression for monitor schedule.
          example: 0 12 * * *
        schedule_human_readable:
          type: string
          description: The monitor schedule in a plain text format.
          example: Every 24 hours
        timezone:
          type: string
          description: Timezone for schedule execution.
          example: UTC
        created_at:
          type: string
          format: date-time
          description: The date when the monitor was created.
          example: '2025-10-23T14:30:00Z'
        webhook:
          oneOf:
          - $ref: '#/components/schemas/WebhookDto'
          - type: 'null'
          description: Webhook configuration for this monitor, or null if not set.
        user_key:
          type: string
          description: Masked API key associated with this monitor.
          example: '***...a1b2'
        sharing_info:
          allOf:
          - $ref: '#/components/schemas/SharingInfo'
          description: 'Present when this monitor was shared with the authenticated user. Omitted when the user owns the monitor.

            '
    CreateMonitorRequestDto:
      type: object
      required:
      - reference_job_id
      - schedule
      properties:
        reference_job_id:
          type: string
          format: uuid
          description: 'Job ID to use as template for scheduled runs. Defines the query, validators, and enrichments used for each scheduled run.


            If [`backfill`](https://www.newscatcherapi.com/docs/web-search-api/api-reference/monitors/create-monitor#body-backfill) is true, the job''s `end_date` must be within the last 7 days.

            '
        schedule:
          type: string
          description: 'Monitor schedule in plain text format. Minimum frequency depends on your plan.

            '
          example: every day at 12 PM UTC
        timezone:
          type: string
          description: "The IANA timezone identifier used as the fallback when the `schedule` string does not include an explicit timezone.\n\nIf the schedule includes a timezone abbreviation (for example, `\"every day at 9am EST\"`), the parsed timezone takes priority and this value is ignored. \n"
          example: America/New_York
          default: UTC
        webhook_ids:
          type: array
          items:
            type: string
            format: uuid
          description: 'IDs of centralized webhooks to notify on each run completion.

            Passing IDs here is equivalent to calling

            `POST /catchAll/webhooks/{webhook_id}/resources` for each ID after creation.

            Maximum 5 per monitor.

            '
          example:
          - a1b2c3d4-e5f6-7890-abcd-ef1234567890
        limit:
          type: integer
          minimum: 10
          description: 'Maximum number of records per monitor run. If not provided, defaults to the plan limit.

            '
        backfill:
          type: boolean
          default: true
          description: "If true, fills the data gap between the reference job's `end_date` and the first scheduled run. The reference job's `end_date` must be within the last 7 days. \n\nIf false, no gap filling occurs and the first run uses the current cron window only — the reference job's age does not matter.\n"
        project_id:
          type: string
          format: uuid
          description: 'Project to assign this monitor to. The monitor appears in the project''s resource list after creation.

            '
          example: 60a85db4-78ec-4b78-876a-bc7d9cdadd04
    BaseRecord:
      type: object
      required:
      - record_id
      - record_title
      - enrichment
      properties:
        record_id:
          type: string
          description: Unique identifier for the record.
          example: '6983973854314692457'
        record_title:
          type: string
          description: Short title summarizing the record.
          example: VulnCheck Raises $25M Series B Funding
        enrichment:
          type: object
          description: "Structured data extracted from web pages. Schema is dynamically generated per job. Field names are chosen semantically to match the content.\n\n**Note:** The system always includes the `enrichment_confidence` field within the `enrichment` object, regardless of whether enrichments are generated or specified by you.\n\n For integration guidance, see [Dynamic schemas](https://www.newscatcherapi.com/docs/web-search-api/guides-and-concepts/dynamic-schemas)\n"
          properties:
            enrichment_confidence:
              type:
              - string
              - 'null'
              enum:
              - low
              - medium
              - high
              - null
              description: Overall confidence score for the enrichment extraction.
              example: high
          additionalProperties: {}
          example:
            enrichment_confidence: high
            funding_amount: 25000000
            funding_currency: USD
            funding_date: '2026-02-17'
            investee_company:
              source_text: VulnCheck
              confidence: 0.99
              metadata:
                name: VulnCheck
                domain_url: vulncheck.com
                domain_url_confidence: high
            investor_company:
              source_text: Sorenson Capital
              confidence: 0.99
              metadata:
                name: Sorenson Capital
                domain_url: null
                domain_url_confidence: null
            valuation: 25000000
            other_investors: National Grid Partners, Ten Eleven Ventures, In-Q-Tel
    MonitorCitation:
      allOf:
      - $ref: '#/components/schemas/Citation'
      - type: object
        required:
        - id
        - job_id
        - added_on
        properties:
          id:
            type: string
            description: Unique identifier of the document in the search index.
            example: 8760624448e9815f9fb4abd114c75e76
          job_id:
            type: string
            format: uuid
            description: Job ID that found this citation.
            example: 6269aa54-c332-4fff-8a65-0d4e82a365e8
          added_on:
            type: string
            format: date-time
            description: The date when the citation was added to the record in ISO 8601 format with UTC timezone.
            example: '2025-11-14T21:00:00Z'
      description: 'Citation with monitor-specific metadata. Used in monitor results and webhook payloads.

        Extends base citation with tracking information for job_id and timestamps.

        '
    ValidationErrorDetail:
      type: object
      properties:
        loc:
          type: array
          items:
            oneOf:
            - type: string
            - type: integer
          description: Location of the validation error
        msg:
          type: string
          description: Error message
        type:
          type: string
          description: Error type
    PullMonitorResponseDto:
      type: object
      required:
      - monitor_id
      - reference_job
      - status
      properties:
        monitor_id:
          type: string
          format: uuid
          description: Unique identifier for the monitor.
          example: 7f3a8b2c-1e4d-4a5b-9c8d-6e7f8a9b0c1d
        cron_expression:
          type: string
          description: 'The cron expression for a monitor schedule parsed from the text schedule you provide.


            Standard cron format (minute hour day month day-of-week).

            '
          example: 0 12 * * *
        timezone:
          type: string
          description: Timezone used for schedule execution.
          example: UTC
        reference_job:
          $ref: '#/components/schemas/ReferenceJob'
        run_info:
          type: object
          description: Execution time range for this monitor.
          properties:
            first_run:
              type: string
              format: date-time
              description: Timestamp of the first job execution.
              example: '2025-10-23T12:00:00Z'
            last_run:
              type: string
              format: date-time
              description: Timestamp of the most recent job execution.
              example: '2025-11-07T12:00:00Z'
        records:
          type: integer
          default: 0
          description: Total number of records collected across all monitor jobs.
          example: 487
        status:
          type: string
          description: Current monitor status or error message if monitor creation failed.
          example: Done
        all_records:
          type: array
          items:
            $ref: '#/components/schemas/MonitorRecord'
          description: 'Aggregated records from all jobs executed by this monitor. Each record includes structured data extracted from web sources with citations.

            '
        limit:
          type:
          - integer
          - 'null'
          description: Record limit applied to this monitor's jobs.
          example: 100
    ValidationErrorResponse:
      type: object
      properties:
        detail:
          type: array
          items:
            $ref: '#/components/schemas/ValidationErrorDetail'
    MonitorStatusEntry:
      type: object
      required:
      - status
      - created_at
      properties:
        status:
          type: string
          enum:
          - created
          - enable
          - disable
          - scheduled
          - dump
          description: "Type of lifecycle event.\n\n- `created`: Monitor was created.\n- `enable`: Monitor was enabled.\n- `disable`: Monitor was disabled.\n- `scheduled`: A job was triggered for execution.\n  `additional_information` contains `job_id`, `start_date`,\n  and `end_date`.\n- `dump`: Results were collected after a job completed.\n  `additional_information` contains `nb_existing_records`,\n  `nb_final_records`, and optionally `webhook`.\n"
        created_at:
          type: string
          format: date-time
          description: Timestamp of this event in ISO 8601 format with UTC timezone.
          example: '2026-02-05T12:04:00Z'
        additional_information:
          type:
          - object
          - 'null'
          description: "Event-specific metadata. `null` for `created`, `enable`, and `disable` events.\n\nFor `scheduled`:\n```json\n{\n  \"job_id\": \"c3d4e5f6-a7b8-9012-cdef-345678901234\",\n  \"start_date\": \"2026-02-04T12:00:00\",\n  \"end_date\": \"2026-02-05T12:00:00\"\n}\n```\n\nFor `dump`:\n```json\n{\n  \"nb_existing_records\": 408,\n  \"nb_final_records\": 28,\n  \"webhook\": {\n    \"success\": true,\n    \"status_code\": 200,\n    \"error_message\": null\n  }\n}\n```\nThe `webhook` key is only present if the monitor has a webhook configured.\n"
    SharingInfo:
      type: object
      description: 'Present on resources shared with the authenticated user by another

        organization member. Omitted entirely on resources the user owns.

        '
      required:
      - shared_at
      - permission
      - shared_by
      properties:
        shared_at:
          type: string
          format: date-time
          description: When the resource was shared.
          example: '2026-04-15T12:00:00Z'
        permission:
          type: string
          enum:
          - view
          - edit
          - manage
          description: Permission level granted to the recipient.
          example: view
        shared_by:
          type: string
          description: 'Display name of the user who shared the resource (first + last

            name). Falls back to email address, then user ID.

            '
          example: John Doe
    MonitorStatusHistoryResponseDto:
      type: object
      required:
      - success
      - monitor_id
      - total_statuses
      - statuses
      properties:
        success:
          type: boolean
          description: True if the request succeeded; false otherwise.
          example: true
        message:
          type:
          - string
          - 'null'
          description: Optional message. `null` on success.
        monitor_id:
          type:
          - string
          - 'null'
          format: uuid
          description: Monitor identifier. `null` on failure.
          example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
        total_statuses:
          type:
          - integer
          - 'null'
          description: Total number of status entries in the history.
          example: 39
        statuses:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/MonitorStatusEntry'
          description: Full status history, ordered newest to oldest.
    Error:
      type: object
      properties:
        detail:
          type: string
          description: Error message.
          example: Invalid API key
    CreateMonitorResponseDto:
      type: object
      required:
      - status
      properties:
        monitor_id:
          type:
          - string
          - 'null'
          format: uuid
          description: Monitor ID if successful, null if error.
        status:
          type: string
          description: Creation status or error message
          example: Monitor Created Successfully
    ListMonitorsResponseDto:
      type: object
      required:
      - total
      - page
      - page_size
      - total_pages
      - monitors
      properties:
        total:
          type: integer
          description: Total number of monitors for this user.
          example: 3
        page:
          type: integer
          description: Current page number.
          example: 1
        page_size:
          type: integer
          description: Number of monitors per page.
          example: 100
        total_pages:
          type: integer
          description: Total number of pages available.
          example: 1
        monitors:
          type: array
          items:
            $ref: '#/components/schemas/MonitorListItemDto'
          description: Array of monitor summaries.
    DeleteMonitorResponseDto:
      type: object
      required:
      - success
      - message
      - monitor_id
      properties:
        success:
          type: boolean
          description: True if the delete operation succeeded; false otherwise.
          example: true
        message:
          type:
          - string
          - 'null'
          description: Human-readable result message.
          example: Monitor deleted successfully.
        monitor_id:
          type:
          - string
          - 'null'
          format: uuid
          description: ID of the deleted monitor. `null` on failure.
          example: 7f3a8b2c-1e4d-4a5b-9c8d-6e7f8a9b0c1d
    UpdateMonitorRequestDto:
      type: object
      properties:
        webhook_ids:
          type: array
          items:
            type: string
            format: uuid
          description: "Updated list of centralized webhook IDs for this monitor. \n\nReplaces all existing webhook assignments. Pass an empty array `[]` to clear all assignments. Omit to leave existing assignments unchanged.\n"
          example:
          - a1b2c3d4-e5f6-7890-abcd-ef1234567890
        limit:
          type: integer
          minimum: 10
          description: Updated maximum number of records per monitor run.
    MonitorRecord:
      allOf:
      - $ref: '#/components/schemas/BaseRecord'
      - type: object
        required:
        - citations
        properties:
          citations:
            type: array
            items:
              $ref: '#/components/schemas/MonitorCitation'
            description: Source documents with monitor-specific metadata (job_id, added_on timestamps).
          added_on:
            type: string
            format: date-time
            description: The date when this record was first added to monitor results in ISO 8601 format with UTC timezone.
            example: '2025-11-14T21:00:00Z'
          updated_on:
            type: string
            format: date-time
            description: The date when this record was last updated in monitor results in ISO 8601 format with UTC timezone.
            example: '2025-11-14T21:00:00Z'
      description: 'Record with monitor-specific metadata. Used in monitor results and webhook payloads.


        Includes timestamps tracking when records were added and updated, and citations include job tracking.

        '
    UpdateMonitorResponseDto:
      type: object
      required:
      - monitor_id
      - status
      properties:
        monitor_id:
          type: string
          format: uuid
          description: Monitor identifier.
          example: 3fec5b07-8786-46d7-9486-d43ff67eccd4
        status:
          type: string
          description: Confirmation message.
          default: Monitor updated Successfully
          example: Monitor updated Successfully
    EnableMonitorRequestDto:
      type: object
      description: Optional request body for enabling a monitor.
      properties:
        backfill:
          type: boolean
          default: true
          description: "If true, fills the data gap between the last job's `end_date` and the first scheduled run after enabling. The last job's `end_date` must be within the last 7 days. \n\nIf false, no gap filling occurs and the first run uses the current cron window only — the last job's age does not matter.\n"
    MonitorJobItem:
      type: object
      required:
      - job_id
      - start_date
      - end_date
      properties:
        job_id:
          type: string
          format: uuid
          description: Unique identifier for this job execution.
        start_date:
          type: string
          format: date-time
          description: Start of the data collection time window for this job execution (based on monitor schedule) in ISO 8601 format with UTC timezone.
          example: '2025-11-14T21:00:00Z'
        end_date:
          type: string
          format: date-time
          description: End of the data collection time window for this job execution (based on monitor schedule) in ISO 8601 format with UTC timezone.
          example: '2025-11-15T00:00:00Z'
    OwnershipFilter:
      type: string
      enum:
      - all
      - own
      - shared
      default: all
      description: "Controls which resources are returned based on ownership.\n\n- `all`: Returns resources owned by the user and resources shared\n  with them (default, backward compatible).\n- `own`: Returns only resources created by the authenticated user.\n- `shared`: Returns only resources shared with the user by others.\n"
    WebhookDto:
      type: object
      required:
      - url
      properties:
        url:
          type: string
          format: uri
          description: Webhook endpoint URL.
        method:
          type: string
          enum:
          - POST
          - PUT
          default: POST
          description: HTTP method to use.
        headers:
          type: object
          additionalProperties:
            type: string
          description: HTTP headers to include in request.
        params:
          type: object
          description: Query string parameters.
        auth:
          type: array
          items:
            type: string
          minItems: 2
          maxItems: 2
          description: Basic auth credentials [username, password].
    ReferenceJob:
      type: object
      properties:
        query:
          type: string
          description: Plain text query from the reference job.
          example: Series B funding rounds for SaaS startups
        context:
          type: string
          description: Context provided with the reference job query.
          example: Focus on funding amount and company name
  responses:
    ListMonitorJobsResponse:
      description: List of monitor jobs
      content:
        application/json:
          schema:
            type: object
            required:
            - monitor_id
            - sort_order
            - total_jobs
            - jobs
            properties:
              monitor_id:
                type: string
                format: uuid
                description: Monitor identifier.
            

# --- truncated at 32 KB (37 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/newscatcher/refs/heads/main/openapi/newscatcher-monitors-api-openapi.yml