GEOCitation Agents API

The agents API from GEOCitation — 9 operation(s) for agents.

Operations 10

POST /v1/agents/output-aggregator/run Lancer le Graphe 3 Output Engine sur un audit Graphe 2 déjà terminé #
POST /v1/agents/fan-query/run-group Multi-mot-clé : un run fan-query par mot-clé, regroupés sous un run parent #
GET /v1/agents/fan-query/runs Runs fan-query terminés pas encore utilisés par une campagne (reprise d'un… #
PATCH /v1/agents/fan-query/{audit_id}/queries Éditer/ajouter des queries sur un run fan-query terminé (human-in-the-loop) #
POST /v1/agents/fan-query/import Importer ses propres queries sans génération (crée un run fan-query terminé) #
POST /v1/agents/{graph_name}/run Lancer un graphe LangGraph (ex: fan-query) #
POST /v1/agents/{graph_name}/run-batch Lancer N audits en une requête (bulk, ex: geo-query-audit) #
POST /v1/agents/{graph_name}/schedule Créer un déclenchement récurrent (Cloud Scheduler, ex: geo-query-audit) #
GET /v1/agents/{graph_name}/schedule Lister les déclenchements récurrents du compte #
DELETE /v1/agents/{graph_name}/schedule/{job_id} Supprimer un déclenchement récurrent #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/geocitation:geocitation-agents-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

geocitation-agents-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: GEOCitation Agents API
  description: Citation Rank Intelligence — Content Gap & Market Audit API
  version: 0.1.0
tags:
- name: Agents
paths:
  /v1/agents/output-aggregator/run:
    post:
      tags:
      - Agents
      summary: Lancer le Graphe 3 Output Engine sur un audit Graphe 2 déjà terminé
      operationId: run_output_aggregator_v1_agents_output_aggregator_run_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OutputAggregatorRunRequest'
        required: true
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OutputAggregatorRunResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /v1/agents/fan-query/run-group:
    post:
      tags:
      - Agents
      summary: 'Multi-mot-clé : un run fan-query par mot-clé, regroupés sous un run parent'
      operationId: run_fan_query_group_v1_agents_fan_query_run_group_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FanQueryGroupRunRequest'
        required: true
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FanQueryGroupRunResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /v1/agents/fan-query/runs:
    get:
      tags:
      - Agents
      summary: Runs fan-query terminés pas encore utilisés par une campagne (reprise d'un…
      operationId: list_fan_query_drafts_v1_agents_fan_query_runs_get
      security:
      - HTTPBearer: []
      parameters:
      - name: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          default: 1
          title: Page
      - name: page_size
        in: query
        required: false
        schema:
          type: integer
          maximum: 100
          minimum: 1
          default: 20
          title: Page Size
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DraftRunsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/agents/fan-query/{audit_id}/queries:
    patch:
      tags:
      - Agents
      summary: Éditer/ajouter des queries sur un run fan-query terminé (human-in-the-loop)
      operationId: patch_fan_query_queries_v1_agents_fan_query__audit_id__queries_patch
      security:
      - HTTPBearer: []
      parameters:
      - name: audit_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Audit Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FanQueryPatchRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                title: Response Patch Fan Query Queries V1 Agents Fan Query  Audit Id  Queries Patch
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/agents/fan-query/import:
    post:
      tags:
      - Agents
      summary: Importer ses propres queries sans génération (crée un run fan-query terminé)
      operationId: import_fan_query_v1_agents_fan_query_import_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FanQueryImportRequest'
        required: true
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuditCreateResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /v1/agents/{graph_name}/run:
    post:
      tags:
      - Agents
      summary: 'Lancer un graphe LangGraph (ex: fan-query)'
      operationId: run_agent_graph_v1_agents__graph_name__run_post
      security:
      - HTTPBearer: []
      parameters:
      - name: graph_name
        in: path
        required: true
        schema:
          type: string
          title: Graph Name
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentRunRequest'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuditCreateResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/agents/{graph_name}/run-batch:
    post:
      tags:
      - Agents
      summary: 'Lancer N audits en une requête (bulk, ex: geo-query-audit)'
      operationId: run_agent_graph_batch_v1_agents__graph_name__run_batch_post
      security:
      - HTTPBearer: []
      parameters:
      - name: graph_name
        in: path
        required: true
        schema:
          type: string
          title: Graph Name
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchRunRequest'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchRunResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/agents/{graph_name}/schedule:
    post:
      tags:
      - Agents
      summary: 'Créer un déclenchement récurrent (Cloud Scheduler, ex: geo-query-audit)'
      operationId: create_agent_schedule_v1_agents__graph_name__schedule_post
      security:
      - HTTPBearer: []
      parameters:
      - name: graph_name
        in: path
        required: true
        schema:
          type: string
          title: Graph Name
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScheduleCreateRequest'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - Agents
      summary: Lister les déclenchements récurrents du compte
      operationId: list_agent_schedules_v1_agents__graph_name__schedule_get
      security:
      - HTTPBearer: []
      parameters:
      - name: graph_name
        in: path
        required: true
        schema:
          type: string
          title: Graph Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleListResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/agents/{graph_name}/schedule/{job_id}:
    delete:
      tags:
      - Agents
      summary: Supprimer un déclenchement récurrent
      operationId: delete_agent_schedule_v1_agents__graph_name__schedule__job_id__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: graph_name
        in: path
        required: true
        schema:
          type: string
          title: Graph Name
      - name: job_id
        in: path
        required: true
        schema:
          type: string
          title: Job Id
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    FanQueryPatchRequest:
      properties:
        edits:
          items:
            $ref: '#/components/schemas/FanQueryEditItem'
          type: array
          title: Edits
        additions:
          items:
            $ref: '#/components/schemas/FanQueryAdditionItem'
          type: array
          title: Additions
        deletions:
          items:
            type: integer
          type: array
          maxItems: 32767
          title: Deletions
      type: object
      title: FanQueryPatchRequest
      description: 'PATCH human-in-the-loop entre Graphe 1 et Graphe 2 (sprint refonte

        3-graphes, 2026-10-03+). edits/additions optionnels indépendamment, mais

        au moins un des trois doit être non vide.'
    DraftRun:
      properties:
        audit_id:
          type: string
          format: uuid
          title: Audit Id
        keyword:
          type: string
          title: Keyword
        language:
          type: string
          title: Language
        country:
          type: string
          title: Country
        created_at:
          type: string
          format: date-time
          title: Created At
        queries_count:
          type: integer
          title: Queries Count
        queries_by_engine:
          additionalProperties:
            type: integer
          type: object
          title: Queries By Engine
      type: object
      required:
      - audit_id
      - keyword
      - language
      - country
      - created_at
      - queries_count
      title: DraftRun
      description: 'Run fan-query terminé qu''aucune campagne n''utilise encore (reprise d''un

        brouillon, sans relancer la génération).'
    FanQueryImportItem:
      properties:
        query:
          type: string
          maxLength: 500
          minLength: 1
          title: Query
        engine:
          type: string
          enum:
          - gemini
          - chatgpt
          - perplexity
          - ai_mode
          title: Engine
          default: gemini
        category:
          type: string
          title: Category
          default: custom
      type: object
      required:
      - query
      title: FanQueryImportItem
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    OutputAggregatorRunResponse:
      properties:
        audit_id:
          type: string
          format: uuid
          title: Audit Id
        status:
          type: string
          title: Status
          default: accepted
      type: object
      required:
      - audit_id
      title: OutputAggregatorRunResponse
      description: 'Pas de nouvelle ligne audits créée (décision Karim 2026-10-02) — on

        renvoie l''audit_id source tel quel, le client poll GET /v1/audits/{id}/

        status sur ce même id (comme pour un audit classique). `status` ici est

        toujours ''accepted'' (202) — pas le statut SQL de l''audit, qui va presque

        immédiatement repasser par ''running'' côté run_graph().'
    FanQueryAdditionItem:
      properties:
        query:
          type: string
          maxLength: 500
          minLength: 1
          title: Query
        engine:
          type: string
          enum:
          - gemini
          - chatgpt
          - perplexity
          - ai_mode
          title: Engine
          default: gemini
        category:
          type: string
          title: Category
          default: custom
      type: object
      required:
      - query
      title: FanQueryAdditionItem
      description: 'Query 100% custom fournie par l''utilisateur — id généré par le système

        (continuité stricte de la séquence existante, jamais de réutilisation d''un

        id libéré).'
    SupportedCountry:
      type: string
      enum:
      - BE
      - CA
      - CH
      - DE
      - ES
      - FR
      - GB
      - JP
      - MA
      - SN
      - US
      title: SupportedCountry
      description: 'Sprint Country-Production (2026-04-21) + Sprint SPR (2026-04-23) :

        10 pays Decodo Residential supportés E2E via endpoints dédiés

        (fr.decodo.com, ma.decodo.com, ...).


        Cette enum est INLINE pour garder le runtime backend autonome (pas de dépendance

        sur lab/ qui n''est ni copié dans le Dockerfile ni accessible quand le build context

        est `backend/`). La source de vérité opérationnelle reste lab/config/countries.yaml,

        consommée par l''orchestrator + page_collector. Drift detection : test_country_matrix.py

        charge le YAML et vérifie l''égalité keys(YAML) == set(SupportedCountry).


        Sprint SPR : T3.9 résolu — CH/MA/SN natifs Decodo Residential (ch.decodo.com:29000,

        ma.decodo.com:40000, sn.decodo.com:49000).


        Sprint N04 V2 J4 D1 (2026-05-14) — extension worldwide JP (jp.decodo.com:30000).'
    AgentRunRequest:
      properties:
        keyword:
          type: string
          maxLength: 200
          minLength: 2
          title: Keyword
        language:
          allOf:
          - $ref: '#/components/schemas/Language'
          default: en
        country:
          allOf:
          - $ref: '#/components/schemas/SupportedCountry'
          default: US
        engines:
          items:
            type: string
            enum:
            - gemini
            - chatgpt
            - perplexity
            - ai_mode
          type: array
          minItems: 1
          title: Engines
        source_fan_query_run_id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Source Fan Query Run Id
        fan_query_id:
          anyOf:
          - type: integer
            maximum: 32767.0
            minimum: 1.0
          - type: 'null'
          title: Fan Query Id
        fan_query_text:
          anyOf:
          - type: string
          - type: 'null'
          title: Fan Query Text
        user_url:
          anyOf:
          - type: string
          - type: 'null'
          title: User Url
        competitor_urls:
          items:
            type: string
          type: array
          maxItems: 20
          title: Competitor Urls
        include_eeat:
          type: boolean
          title: Include Eeat
          default: false
        include_onpage:
          type: boolean
          title: Include Onpage
          default: false
        include_semantic:
          type: boolean
          title: Include Semantic
          default: true
        include_sentiment:
          type: boolean
          title: Include Sentiment
          default: false
        queries_per_engine:
          anyOf:
          - additionalProperties:
              type: integer
            type: object
          - type: 'null'
          title: Queries Per Engine
        measure_engines:
          anyOf:
          - items:
              type: string
              enum:
              - gemini
              - chatgpt
              - gemini_web
              - chatgpt_web
              - perplexity_web
              - ai_mode_web
            type: array
          - type: 'null'
          title: Measure Engines
      type: object
      required:
      - keyword
      title: AgentRunRequest
    ScheduleCreateRequest:
      properties:
        campaign_id:
          type: string
          format: uuid
          title: Campaign Id
        fan_query_ids:
          items:
            type: integer
          type: array
          maxItems: 500
          title: Fan Query Ids
        frequency_preset:
          anyOf:
          - type: string
            enum:
            - daily
            - twice_daily
            - weekly
            - bi_weekly
            - monthly
            - custom
          - type: 'null'
          title: Frequency Preset
        cron_expression:
          anyOf:
          - type: string
            maxLength: 100
            minLength: 1
          - type: 'null'
          title: Cron Expression
        include_eeat:
          type: boolean
          title: Include Eeat
          default: false
        include_onpage:
          type: boolean
          title: Include Onpage
          default: false
        include_semantic:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Include Semantic
        include_sentiment:
          type: boolean
          title: Include Sentiment
          default: false
        api_key:
          type: string
          minLength: 1
          title: Api Key
      type: object
      required:
      - campaign_id
      - api_key
      title: ScheduleCreateRequest
      description: 'Déclenchement récurrent (Sprint 3 scheduler_lab, 2026-09-30) — crée un

        job Cloud Scheduler qui appellera run-batch à la fréquence donnée, avec

        ce même lot de fan_query_ids et ces mêmes flags figés.'
    BatchRunRequest:
      properties:
        source_fan_query_run_id:
          type: string
          format: uuid
          title: Source Fan Query Run Id
        fan_query_ids:
          items:
            type: integer
          type: array
          maxItems: 500
          minItems: 1
          title: Fan Query Ids
        include_eeat:
          type: boolean
          title: Include Eeat
          default: false
        include_onpage:
          type: boolean
          title: Include Onpage
          default: false
        include_semantic:
          type: boolean
          title: Include Semantic
          default: true
        include_sentiment:
          type: boolean
          title: Include Sentiment
          default: false
        user_url:
          anyOf:
          - type: string
          - type: 'null'
          title: User Url
        competitor_urls:
          items:
            type: string
          type: array
          maxItems: 20
          title: Competitor Urls
        measure_engines:
          anyOf:
          - items:
              type: string
              enum:
              - gemini
              - chatgpt
              - gemini_web
              - chatgpt_web
              - perplexity_web
              - ai_mode_web
            type: array
          - type: 'null'
          title: Measure Engines
      type: object
      required:
      - source_fan_query_run_id
      - fan_query_ids
      title: BatchRunRequest
      description: 'Déclenchement en masse (Phase 4 bulk, sprint Chantiers 2+3 fusionnés,

        2026-09-30) — un seul appel lance N audits geo-query-audit à partir d''un

        lot de fan_query_id choisis dans un run fan-query déjà terminé. Sélection

        et lancement sont le même geste : pas d''état "approved" persisté séparément.'
    OutputAggregatorRunRequest:
      properties:
        audit_id:
          type: string
          format: uuid
          title: Audit Id
      type: object
      required:
      - audit_id
      title: OutputAggregatorRunRequest
      description: 'Déclenchement du Graphe 3 "Output Engine" (2026-10-02) — pas de

        keyword : opère sur un audit_id du Graphe 2 (geo-query-audit) déjà

        status=''completed''. AgentRunRequest (keyword obligatoire) ne peut pas

        être réutilisé tel quel (confirmé Phase 1), d''où ce schéma dédié,

        volontairement minimal.'
    BatchRunResponse:
      properties:
        audits:
          items:
            $ref: '#/components/schemas/BatchAuditItem'
          type: array
          title: Audits
        measurement_items:
          items:
            $ref: '#/components/schemas/BatchMeasurementItem'
          type: array
          title: Measurement Items
      type: object
      required:
      - audits
      title: BatchRunResponse
    BatchMeasurementItem:
      properties:
        item_id:
          type: string
          format: uuid
          title: Item Id
        fan_query_id:
          type: integer
          title: Fan Query Id
        engine:
          type: string
          title: Engine
        status:
          type: string
          title: Status
      type: object
      required:
      - item_id
      - fan_query_id
      - engine
      - status
      title: BatchMeasurementItem
      description: 'Élément de mesure mis en file par le collecteur (drapeau BRIGHTDATA_COLLECTOR_ENABLED) : l''audit n''existe qu''à la

        réception de la mesure, `audits` reste donc vide à la réponse du lancement.'
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    FanQueryGroupRunResponse:
      properties:
        audit_id:
          type: string
          format: uuid
          title: Audit Id
        status:
          $ref: '#/components/schemas/AuditStatus'
        created_at:
          type: string
          format: date-time
          title: Created At
        runs:
          items:
            $ref: '#/components/schemas/GroupRunItem'
          type: array
          title: Runs
      type: object
      required:
      - audit_id
      - status
      - created_at
      - runs
      title: FanQueryGroupRunResponse
      description: '`audit_id` = le run PARENT : c''est lui qu''on suit (GET .../status, qui

        expose `runs[]` pour le détail par mot-clé), qu''on édite (PATCH queries) et

        qu''on utilise comme source de campagne une fois terminé.'
    Language:
      type: string
      enum:
      - fr
      - en
      title: Language
    AuditStatus:
      type: string
      enum:
      - pending
      - running
      - completed
      - failed
      - cancelled
      title: AuditStatus
    AuditCreateResponse:
      properties:
        audit_id:
          type: string
          format: uuid
          title: Audit Id
        status:
          $ref: '#/components/schemas/AuditStatus'
        created_at:
          type: string
          format: date-time
          title: Created At
        stream_url:
          type: string
          title: Stream Url
      type: object
      required:
      - audit_id
      - status
      - created_at
      - stream_url
      title: AuditCreateResponse
    FanQueryGroupRunRequest:
      properties:
        keywords:
          items:
            type: string
          type: array
          maxItems: 10
          minItems: 2
          title: Keywords
        language:
          allOf:
          - $ref: '#/components/schemas/Language'
          default: en
        country:
          allOf:
          - $ref: '#/components/schemas/SupportedCountry'
          default: US
        engines:
          items:
            type: string
            enum:
            - gemini
            - chatgpt
            - perplexity
            - ai_mode
          type: array
          minItems: 1
          title: Engines
        queries_per_engine:
          anyOf:
          - additionalProperties:
              type: integer
            type: object
          - type: 'null'
          title: Queries Per Engine
        user_url:
          anyOf:
          - type: string
          - type: 'null'
          title: User Url
        competitor_urls:
          items:
            type: string
          type: array
          maxItems: 20
          title: Competitor Urls
      type: object
      required:
      - keywords
      title: FanQueryGroupRunRequest
      description: 'Multi-mot-clé (sprint cockpit, 2026-10-15, D1=B) : un run fan-query par

        mot-clé, lancés en parallèle avec les mêmes moteurs / volume / pays /

        langue, regroupés sous un run PARENT dont les queries sont fusionnées avec

        des ids continus à la fin. Les autres champs de AgentRunRequest (engines,

        queries_per_engine) sont validés comme pour un run simple.'
    FanQueryImportRequest:
      properties:
        keyword:
          type: string
          maxLength: 200
          minLength: 2
          title: Keyword
        language:
          allOf:
          - $ref: '#/components/schemas/Language'
          default: en
        country:
          allOf:
          - $ref: '#/components/schemas/SupportedCountry'
          default: US
        queries:
          items:
            $ref: '#/components/schemas/FanQueryImportItem'
          type: array
          maxItems: 32767
          minItems: 1
          title: Queries
      type: object
      required:
      - keyword
      - queries
      title: FanQueryImportRequest
      description: 'Cas 3 (2026-10-04) — l''utilisateur fournit ses propres queries, sans

        aucune génération LLM. Crée directement un run fan-query à l''état

        completed, utilisable ensuite comme n''importe quel run (PATCH, campagne,

        run-batch). `keyword` sert de libellé du run (colonne audits.keyword).'
    DraftRunsResponse:
      properties:
        runs:
          items:
            $ref: '#/components/schemas/DraftRun'
          type: array
          title: Runs
        total:
          type: integer
          title: Total
      type: object
      required:
      - runs
      - total
      title: DraftRunsResponse
    GroupRunItem:
      properties:
        audit_id:
          type: string
          format: uuid
          title: Audit Id
        keyword:
          type: string
          title: Keyword
        position:
          type: integer
          title: Position
      type: object
      required:
      - audit_id
      - keyword
      - position
      title: GroupRunItem
    ScheduleListItem:
      properties:
        job_id:
          type: string
          title: Job Id
        campaign_id:
          type: string
          format: uuid
          title: Campaign Id
        fan_query_ids:
          items:
            type: integer
          type: array
          title: Fan Query Ids
        cron_expression:
          type: string
          title: Cron Expression
        include_semantic:
          type: boolean
          title: Include Semantic
        include_eeat:
          type: boolean
          title: Include Eeat
        include_onpage:
          type: boolean
          title: Include Onpage
        include_sentiment:
          type: boolean
          title: Include Sentiment
          default: false
        created_at:
          type: string
          title: Created At
        real_campaign_id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Real Campaign Id
        frequency_preset:
          anyOf:
          - type: string
          - type: 'null'
          title: Frequency Preset
      type: object
      required:
      - job_id
      - campaign_id
      - fan_query_ids
      - cron_expression
      - include_semantic
      - include_eeat
      - include_onpage
      - created_at
      title: ScheduleListItem
    BatchAuditItem:
      properties:
        audit_id:
          type: string
          format: uuid
          title: Audit Id
        fan_query_id:
          type: integer
          title: Fan Query Id
        status:
          $ref: '#/components/schemas/AuditStatus'
      type: object
      required:
      - audit_id
      - fan_query_id
      - status
      title: BatchAuditItem
    FanQueryEditItem:
      properties:
        id:
          type: integer
          maximum: 32767.0
          minimum: 1.0
          title: Id
        query:
          type: string
          maxLength: 500
          minLength: 1
          title: Query
      type: object
      required:
      - id
      - query
      title: FanQueryEditItem
      description: Correction du texte d'une query déjà générée — id conservé tel quel.
    ScheduleResponse:
      properties:
        job_id:
          type: string
          title: Job Id
        campaign_id:
          type: string
          format: uuid
          title: Campaign Id
        cron_expression:
          type: string
          title: Cron Expression
        created_at:
          type: string
          title: Created At
        real_campaign_id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Real Campaign Id
        frequency_preset:
          anyOf:
          - type: string
          - type: 'null'
          title: Frequency Preset
      type: object
      required:
      - job_id
      - campaign_id
      - cron_expression
      - created_at
      title: ScheduleResponse
    ScheduleListResponse:
      properties:
        schedules:
          items:
            $ref: '#/components/schemas/ScheduleListItem'
          type: array
          title: Schedules
      type: object
      required:
      - schedules
      title: ScheduleListResponse
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer
x-provenance:
  method: harvested
  publisher: GEOCitation
  source: https://api.geocitation.io/openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)