Ada · Schema

KnowledgeArticleResponse

Artificial IntelligenceCustomer ServiceChatbotsAutomationConversational AIHelp DeskCRMIntegrationKnowledge ManagementData ExportCanada

Properties

Name Type Description
id string A unique identifier for the article
name string The name or title of the article
content string The content of the article in markdown format
url stringnull The url of the article
knowledge_source_id stringnull The id of the `knowledge_source` the article belongs to
language object
tag_ids array A list of ids for the tags associated with the article
created string The date the article was created in Ada
updated string The date the article was last updated in Ada
external_created stringnull The date the article was created in the source system
external_updated stringnull The date the article was last updated in the source system
enabled boolean Whether the article should be referenced during response generation, defaults to `true`
metadata object A dictionary of arbitrary key,value pairs. This data is not used by Ada, but can be used by the client to store additional information about the article.
availability_rules object Availability rule controlling which articles the AI Agent can access during a conversation. `null` when no rule is set.
View JSON Schema on GitHub

JSON Schema

ada-knowledge-article-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/ada/main/json-schema/ada-knowledge-article-response-schema.json",
  "title": "KnowledgeArticleResponse",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/ada-knowledge-articles-api-openapi.yml#/components/schemas/KnowledgeArticleResponse",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "A unique identifier for the article"
    },
    "name": {
      "type": "string",
      "description": "The name or title of the article"
    },
    "content": {
      "type": "string",
      "description": "The content of the article in markdown format"
    },
    "url": {
      "type": [
        "string",
        "null"
      ],
      "format": "url",
      "description": "The url of the article"
    },
    "knowledge_source_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "The id of the `knowledge_source` the article belongs to"
    },
    "language": {
      "$ref": "#/$defs/ArticleLanguage"
    },
    "tag_ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "A list of ids for the tags associated with the article"
    },
    "created": {
      "type": "string",
      "format": "date-time",
      "description": "The date the article was created in Ada"
    },
    "updated": {
      "type": "string",
      "format": "date-time",
      "description": "The date the article was last updated in Ada"
    },
    "external_created": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time",
      "description": "The date the article was created in the source system"
    },
    "external_updated": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time",
      "description": "The date the article was last updated in the source system"
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the article should be referenced during response generation, defaults to `true`"
    },
    "metadata": {
      "oneOf": [
        {
          "$ref": "#/$defs/KnowledgeArticleResponseMetadata"
        },
        {
          "type": "null"
        }
      ],
      "description": "A dictionary of arbitrary key,value pairs.                     This data is not used by Ada, but can be used by the client to store additional information about                     the article."
    },
    "availability_rules": {
      "oneOf": [
        {
          "$ref": "#/$defs/AvailabilityRule"
        },
        {
          "type": "null"
        }
      ],
      "description": "Availability rule controlling which articles the AI Agent can access during a conversation. `null` when no rule is set."
    }
  },
  "required": [
    "id",
    "name",
    "content"
  ],
  "$defs": {
    "ArticleLanguage": {
      "type": "string",
      "enum": [
        "ar",
        "zh",
        "zh-tw",
        "da",
        "nl",
        "en",
        "fi",
        "fr",
        "de",
        "he",
        "hi",
        "id",
        "in",
        "it",
        "ja",
        "ko",
        "ms",
        "pt",
        "pa",
        "ru",
        "es",
        "sv",
        "tl",
        "ta",
        "th",
        "tr",
        "vi",
        "ht",
        "my",
        "km",
        "bg",
        "ro",
        "el",
        "hu",
        "pl",
        "cs",
        "et",
        "hr",
        "lt",
        "lv",
        "sl",
        "sk",
        "is",
        "be",
        "uk",
        "ca",
        "sq",
        "bs",
        "sr",
        "kk"
      ],
      "description": "The ISO 639-1 language code of the article, defaults to `en`",
      "title": "ArticleLanguage"
    },
    "AvailabilityRule": {
      "type": "object",
      "properties": {
        "match": {
          "$ref": "#/$defs/AvailabilityRuleMatch",
          "description": "Whether all conditions must pass (`all`) or any one condition must pass (`any`)."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AvailabilityRuleConditionsItems"
          },
          "description": "List of conditions or condition groups. Must contain at least one entry. Each entry is either a `Condition` object (with `variable`, `operator`, and optional `value`) or a `ConditionGroup` object (with its own `match` and nested `conditions` list)."
        }
      },
      "required": [
        "match",
        "conditions"
      ],
      "description": "A two-level tree of conditions that determines availability based on variable values during a conversation. The root group has a `match` combinator and a list of conditions or condition groups. A rule may contain at most 1000 conditions in total, counting every condition across the root and all nested condition groups.",
      "title": "AvailabilityRule"
    },
    "AvailabilityRuleCondition": {
      "type": "object",
      "properties": {
        "variable": {
          "$ref": "#/$defs/AvailabilityRuleConditionVariable",
          "description": "The variable to test, referenced by `id`. Look up the ids for your Agent through the variables endpoint. Not every variable can be used in a rule; referencing one that can't returns a `400`."
        },
        "operator": {
          "$ref": "#/$defs/AvailabilityRuleConditionOperator",
          "description": "The comparison operator. Unary operators (`is_set`, `is_not_set`) must not include a `value` field."
        },
        "value": {
          "$ref": "#/$defs/AvailabilityRuleConditionValue",
          "description": "The value to compare against. Omit for unary operators (`is_set`, `is_not_set`)."
        },
        "case_sensitive": {
          "type": "boolean",
          "description": "Whether the comparison is case-sensitive. Defaults to `false`. Only meaningful for the equality (`equals`, `does_not_equal`) and string (`starts_with`, `ends_with`, `contains`, `does_not_contain`) operators. Omitted from responses when `false`."
        }
      },
      "required": [
        "variable",
        "operator"
      ],
      "description": "A single condition comparing a variable to a value.",
      "title": "AvailabilityRuleCondition"
    },
    "AvailabilityRuleConditionGroup": {
      "type": "object",
      "properties": {
        "match": {
          "$ref": "#/$defs/AvailabilityRuleConditionGroupMatch",
          "description": "Whether all conditions must pass (`all`) or any one condition must pass (`any`)."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AvailabilityRuleCondition"
          },
          "description": "List of conditions inside this condition group. Must contain at least one entry."
        }
      },
      "required": [
        "match",
        "conditions"
      ],
      "description": "A nested group of conditions inside a rule's top-level `conditions` list. Condition groups may contain only `Condition` objects — further nesting is not supported.",
      "title": "AvailabilityRuleConditionGroup"
    },
    "AvailabilityRuleConditionGroupMatch": {
      "type": "string",
      "enum": [
        "all",
        "any"
      ],
      "description": "Whether all conditions must pass (`all`) or any one condition must pass (`any`).",
      "title": "AvailabilityRuleConditionGroupMatch"
    },
    "AvailabilityRuleConditionOperator": {
      "type": "string",
      "enum": [
        "equals",
        "does_not_equal",
        "greater_than",
        "less_than",
        "starts_with",
        "ends_with",
        "contains",
        "does_not_contain",
        "is_set",
        "is_not_set"
      ],
      "description": "The comparison operator. Unary operators (`is_set`, `is_not_set`) must not include a `value` field.",
      "title": "AvailabilityRuleConditionOperator"
    },
    "AvailabilityRuleConditionValue": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "number",
          "format": "double"
        },
        {
          "type": "boolean"
        }
      ],
      "description": "The value to compare against. Omit for unary operators (`is_set`, `is_not_set`).",
      "title": "AvailabilityRuleConditionValue"
    },
    "AvailabilityRuleConditionVariable": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The id of the variable."
        }
      },
      "required": [
        "id"
      ],
      "description": "The variable to test, referenced by `id`. Look up the ids for your Agent through the variables endpoint. Not every variable can be used in a rule; referencing one that can't returns a `400`.",
      "title": "AvailabilityRuleConditionVariable"
    },
    "AvailabilityRuleConditionsItems": {
      "oneOf": [
        {
          "$ref": "#/$defs/AvailabilityRuleCondition"
        },
        {
          "$ref": "#/$defs/AvailabilityRuleConditionGroup"
        }
      ],
      "title": "AvailabilityRuleConditionsItems"
    },
    "AvailabilityRuleMatch": {
      "type": "string",
      "enum": [
        "all",
        "any"
      ],
      "description": "Whether all conditions must pass (`all`) or any one condition must pass (`any`).",
      "title": "AvailabilityRuleMatch"
    },
    "KnowledgeArticleResponseMetadata": {
      "type": "object",
      "properties": {},
      "description": "A dictionary of arbitrary key,value pairs.                     This data is not used by Ada, but can be used by the client to store additional information about                     the article.",
      "title": "KnowledgeArticleResponseMetadata"
    }
  }
}

Work with this as data

Every JSON Schema 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 schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • 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 JSON Schema
curl "https://apis.io/api/v1/json-schemas/ada-knowledge-article-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?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.