Dify · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Dify Service Annotations API

7 actions 7 updates phrasing extends openapi/dify-annotations-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Dify's API. It is a proposal applied on top of the contract, not a document Dify publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 7

$.info
$.paths['/apps/annotations'].get
$.paths['/apps/annotations'].post
$.paths['/apps/annotations/{annotation_id}'].put
$.paths['/apps/annotations/{annotation_id}'].delete
$.paths['/apps/annotation-reply/{action}'].post
$.paths['/apps/annotation-reply/{action}/status/{job_id}'].get

OpenAPI Overlay

Raw ↑
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
  title: API Evangelist conversational phrasing for Dify Service Annotations API
  version: 1.0.0
extends: openapi/dify-annotations-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-phrasing:
      method: generated
      generated: '2026-09-26'
      generator: build-phrasing.py
      label: Generated by API Evangelist
      operations: 6
- target: $.paths['/apps/annotations'].get
  update:
    x-apievangelist-phrasing:
      intent: List a chat app's annotations
      effect: read
      questions:
      - Which canned question-answer annotations does my Dify chatbot currently have?
      - Can I search my app's annotations for a keyword in the question or answer?
      - What is the most annotations I can pull back on one page?
      instructions:
      - text: List all the annotations saved on my chat app.
      - text: Find annotations whose question or answer mentions {keyword}.
        slots:
          keyword: query.keyword
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/annotations'].post
  update:
    x-apievangelist-phrasing:
      intent: Add a predefined question-answer annotation
      effect: write
      questions:
      - How do I make my chatbot always give a fixed answer to a specific question?
      - Can I add a new canned reply the app returns instead of generating one?
      instructions:
      - text: Add an annotation so the question {question} is answered with {answer}.
        slots:
          question: requestBody.question
          answer: requestBody.answer
      - text: 'Create a new canned reply: when users ask {question}, respond {answer}.'
        slots:
          question: requestBody.question
          answer: requestBody.answer
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/annotations/{annotation_id}'].put
  update:
    x-apievangelist-phrasing:
      intent: Edit an existing annotation's question and answer
      effect: write
      questions:
      - Can I change the answer on an annotation I already created?
      - How do I reword the question text of an existing canned reply?
      instructions:
      - text: Update annotation {annotation_id} to question {question} and answer {answer}.
        slots:
          annotation_id: path.annotation_id
          question: requestBody.question
          answer: requestBody.answer
      - text: Rewrite the existing annotation {annotation_id} so its answer becomes {answer} while keeping question {question}.
        slots:
          annotation_id: path.annotation_id
          answer: requestBody.answer
          question: requestBody.question
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/annotations/{annotation_id}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete an annotation and its hit history
      effect: destructive
      questions:
      - What happens to an annotation's hit history when I remove it?
      - Can I get rid of a canned reply my chatbot no longer should give?
      instructions:
      - text: Delete annotation {annotation_id}.
        slots:
          annotation_id: path.annotation_id
      - text: Remove the canned reply {annotation_id} from my chat app permanently.
        slots:
          annotation_id: path.annotation_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/annotation-reply/{action}'].post
  update:
    x-apievangelist-phrasing:
      intent: Turn annotation reply on or off for an app
      effect: write
      questions:
      - How do I switch on annotation reply so my app answers from saved annotations?
      - Which embedding model and similarity threshold does annotation reply matching use?
      - Can I disable annotation reply without deleting my annotations?
      instructions:
      - text: '{action} annotation reply using embedding model {embedding_model_name} from {embedding_provider_name} with a match threshold of {score_threshold}.'
        slots:
          action: path.action
          embedding_model_name: requestBody.embedding_model_name
          embedding_provider_name: requestBody.embedding_provider_name
          score_threshold: requestBody.score_threshold
      - text: Enable annotation reply on my chatbot with {embedding_provider_name} embeddings model {embedding_model_name} and threshold {score_threshold}.
        slots:
          embedding_provider_name: requestBody.embedding_provider_name
          embedding_model_name: requestBody.embedding_model_name
          score_threshold: requestBody.score_threshold
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/annotation-reply/{action}/status/{job_id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Check an annotation reply setup job's progress
      effect: read
      questions:
      - Has the job that enables annotation reply finished yet?
      - Where can I see whether turning annotation reply off completed or failed?
      instructions:
      - text: Check the status of annotation reply job {job_id} for the {action} action.
        slots:
          job_id: path.job_id
          action: path.action
      - text: Tell me if the annotation reply {action} job {job_id} is done.
        slots:
          action: path.action
          job_id: path.job_id
      method: generated
      generated: '2026-09-26'