changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "additionalProperties": {},
+ "properties": {
+ "aiSearch": {
+ "description": "on, or off until the first AI search step turns it on.",
+ "type": "string"
+ },
+ "answersCounted": {
+ "description": "Answers counted in the window's figures.",
+ "type": "number"
+ },
+ "audit": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "auditId": {
+ "description": "The audit's id.",
+ "type": "string"
+ },
+ "failure": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "code": {
+ "description": "A stable reason code, such as no_pages_found or audit_failed.",
+ "type": "string"
+ },
+ "message": {
+ "description": "The reason in plain words to pass on, with what to do next.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Why a failed audit stopped, in words to pass on; null otherwise."
+ },
+ "finishedAt": {
+ "description": "When it finished; null while running.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "pagesAudited": {
+ "description": "Pages read and scored so far.",
+ "type": "number"
+ },
+ "pagesFound": {
+ "description": "Pages found to audit.",
+ "type": "number"
+ },
+ "source": {
+ "description": "site or github.",
+ "type": "string"
+ },
+ "startedAt": {
+ "description": "When the audit started.",
+ "type": "string"
+ },
+ "status": {
+ "description": "running, completed or failed.",
+ "type": "string"
+ },
+ "target": {
+ "description": "The website URL or repository (owner/name/folder) audited.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "auditId",
+ "source",
+ "target",
+ "status",
+ "pagesFound",
+ "pagesAudited",
+ "startedAt",
+ "finishedAt",
+ "failure"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The latest content audit, or null; get_content_audit has its pages."
+ },
+ "company": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "domains": {
+ "description": "Every domain that counts as the company's own pages.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "name": {
+ "description": "The company's name as tracked in answers.",
+ "type": "string"
+ },
+ "website": {
+ "description": "The company profile website.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "website",
+ "domains"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The company being tracked; null when the company profile is missing."
+ },
+ "competitors": {
+ "description": "Each tracked competitor's figures, to compare with you.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "name": {
+ "description": "The tracked competitor's name.",
+ "type": "string"
+ },
+ "position": {
+ "description": "Average position when named (1 is named first); null when never named.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "sentiment": {
+ "description": "Average sentiment when named, 0 (negative) to 1 (positive); null when there are no answers to count.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "share": {
+ "description": "Share of voice: its mentions over all tracked companies' mentions, 0 to 1; null when there are no answers to count.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "visibility": {
+ "description": "Share of answers that name the company, 0 to 1; null when there are no answers to count.",
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "visibility",
+ "share",
+ "sentiment",
+ "position"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "costs": {
+ "additionalProperties": {},
+ "description": "What each paid AI search step costs now, in Energy.",
+ "properties": {
+ "checkEveryQuestionAbout": {
+ "description": "About the Energy a check of every tracked question costs.",
+ "type": "number"
+ },
+ "checkOneQuestionAbout": {
+ "description": "About the Energy one question costs to check once on the chosen engines.",
+ "type": "number"
+ },
+ "enginesUnavailable": {
+ "description": "Chosen engines checks leave out for now (not in any price).",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "githubAuditAtMost": {
+ "description": "Most Energy a GitHub content audit can cost.",
+ "type": "number"
+ },
+ "suggestQuestionsAbout": {
+ "description": "About the Energy suggest_ai_search_questions costs.",
+ "type": "number"
+ },
+ "websiteAuditAtMost": {
+ "description": "Most Energy a website content audit can cost.",
+ "type": "number"
+ },
+ "websiteScanAtMost": {
+ "description": "Most Energy start_website_scan can cost.",
+ "type": "number"
+ },
+ "whyUnavailable": {
+ "description": "Why those engines are left out; null when none are.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "checkOneQuestionAbout",
+ "checkEveryQuestionAbout",
+ "suggestQuestionsAbout",
+ "websiteScanAtMost",
+ "websiteAuditAtMost",
+ "githubAuditAtMost",
+ "enginesUnavailable",
+ "whyUnavailable"
+ ],
+ "type": "object"
+ },
+ "lastAnsweredAt": {
+ "description": "When the latest answer arrived (ISO time); null before any.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "message": {
+ "description": "Only when AI search is off: how to start it.",
+ "type": "string"
+ },
+ "opportunities": {
+ "additionalProperties": {},
+ "description": "What to do next to be named more.",
+ "properties": {
+ "gaps": {
+ "description": "Questions where competitors are named and the company is not (up to 10).",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "competitors": {
+ "description": "Competitors named instead of the company.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "answers": {
+ "description": "Answers that name it.",
+ "type": "number"
+ },
+ "name": {
+ "description": "A tracked competitor named instead.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "answers"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "missingOn": {
+ "description": "Engines whose answers name competitors but not the company.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "questionId": {
+ "description": "The question.",
+ "type": "string"
+ },
+ "sources": {
+ "description": "Third-party domains those answers cite.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "text": {
+ "description": "Its text.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "questionId",
+ "text",
+ "missingOn",
+ "competitors",
+ "sources"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "ownCited": {
+ "description": "The company's own pages the engines cite, most cited first (up to 10).",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "citations": {
+ "description": "Times it is cited.",
+ "type": "number"
+ },
+ "questions": {
+ "description": "Questions whose answers cite it.",
+ "type": "number"
+ },
+ "title": {
+ "description": "Its title; null when unknown.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "url": {
+ "description": "The company's own cited page.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "url",
+ "title",
+ "citations",
+ "questions"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "searches": {
+ "description": "What engines searched for on questions that leave the company out: content to write (up to 10).",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "engine": {
+ "description": "The engine that searched.",
+ "type": "string"
+ },
+ "query": {
+ "description": "What the engine searched for.",
+ "type": "string"
+ },
+ "questionId": {
+ "description": "The question being answered.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "questionId",
+ "query",
+ "engine"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "sources": {
+ "description": "Third-party pages to get listed on (up to 10).",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "category": {
+ "description": "Its category (ugc, review, reference, news or other).",
+ "type": "string"
+ },
+ "citations": {
+ "description": "Times it is cited.",
+ "type": "number"
+ },
+ "domain": {
+ "description": "A third-party domain cited in answers that leave the company out.",
+ "type": "string"
+ },
+ "example": {
+ "additionalProperties": {},
+ "description": "An example cited page.",
+ "properties": {
+ "title": {
+ "description": "That page's title; null when unknown.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "url": {
+ "description": "One cited page on the domain.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "url",
+ "title"
+ ],
+ "type": "object"
+ },
+ "questions": {
+ "description": "Questions whose answers cite it.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "domain",
+ "category",
+ "citations",
+ "questions",
+ "example"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "unanswered": {
+ "anyOf": [
+ {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "questionId": {
+ "description": "The question.",
+ "type": "string"
+ },
+ "text": {
+ "description": "Its text.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "questionId",
+ "text"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "With a content audit: tracked questions no audited page answers; null without an audit."
+ },
+ "weakPages": {
+ "anyOf": [
+ {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "locator": {
+ "description": "The page URL or repository file path.",
+ "type": "string"
+ },
+ "questionIds": {
+ "description": "Tracked questions it answers.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "score": {
+ "description": "Its audit score, 0 to 100.",
+ "type": "number"
+ },
+ "title": {
+ "description": "Its title; null when unknown.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "url": {
+ "description": "The page URL; null for repository files.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "locator",
+ "url",
+ "title",
+ "score",
+ "questionIds"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "With a content audit: pages that answer tracked questions but score poorly; null without an audit."
+ }
+ },
+ "required": [
+ "gaps",
+ "sources",
+ "searches",
+ "ownCited",
+ "unanswered",
+ "weakPages"
+ ],
+ "type": "object"
+ },
+ "questions": {
+ "description": "Each tracked question's standing.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "answers": {
+ "description": "Its current answers counted.",
+ "type": "number"
+ },
+ "branded": {
+ "description": "True when it names the company.",
+ "type": "boolean"
+ },
+ "competitorsNamed": {
+ "description": "Tracked competitors its answers name, most often first.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "answers": {
+ "description": "Answers that name it.",
+ "type": "number"
+ },
+ "name": {
+ "description": "The tracked competitor.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "answers"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "engines": {
+ "description": "Its standing on each engine.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "answers": {
+ "description": "Its current answers on this engine.",
+ "type": "number"
+ },
+ "engine": {
+ "description": "The engine.",
+ "type": "string"
+ },
+ "mentioned": {
+ "description": "How many of them name the company.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "engine",
+ "answers",
+ "mentioned"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "lastAnsweredAt": {
+ "description": "When it was last answered (ISO time); null before any.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "questionId": {
+ "description": "Pass to get_ai_search_question for its answers.",
+ "type": "string"
+ },
+ "text": {
+ "description": "The question as tracked.",
+ "type": "string"
+ },
+ "visibility": {
+ "description": "Share of its answers that name the company, 0 to 1; null with no answers.",
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "questionId",
+ "text",
+ "branded",
+ "answers",
+ "visibility",
+ "engines",
+ "competitorsNamed",
+ "lastAnsweredAt"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "settings": {
+ "additionalProperties": {},
+ "description": "How AI search runs.",
+ "properties": {
+ "brandAliases": {
+ "description": "Other names the company goes by.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "brandDomains": {
+ "description": "Other websites the company owns.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "competitors": {
+ "description": "Tracked competitors every answer is compared against.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "aliases": {
+ "description": "Other names it goes by in answers.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "domains": {
+ "description": "Websites it owns; citations of them count as its pages.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "name": {
+ "description": "The competitor's name as buyers know it.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "domains",
+ "aliases"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "country": {
+ "description": "Two-letter code of the country the engines answer for, such as US.",
+ "type": "string"
+ },
+ "dailyLimitUsd": {
+ "description": "Most all AI search steps may spend per UTC day, in US dollars of Energy.",
+ "type": "number"
+ },
+ "engines": {
+ "description": "The AI engines each check asks.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "frequency": {
+ "description": "How often checks repeat: weekly, daily or off.",
+ "type": "string"
+ },
+ "nextCheckAt": {
+ "description": "When the next automatic check runs (ISO time); null when none is scheduled.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "samples": {
+ "description": "Times each engine is asked each question per check.",
+ "type": "number"
+ },
+ "suggestions": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "competitors": {
+ "description": "Suggested competitors; track them with update_ai_search_settings competitors.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "aliases": {
+ "description": "Other names it goes by in answers.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "domains": {
+ "description": "Websites it owns; citations of them count as its pages.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "name": {
+ "description": "The competitor's name as buyers know it.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "domains",
+ "aliases"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "createdAt": {
+ "description": "When these were suggested (ISO time).",
+ "type": "string"
+ },
+ "questions": {
+ "description": "Suggested buyer questions; track the ones the customer wants with add_ai_search_questions.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "questions",
+ "competitors",
+ "createdAt"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The latest suggested questions and competitors from a website scan or suggest_ai_search_questions; null when none have been made."
+ }
+ },
+ "required": [
+ "engines",
+ "samples",
+ "frequency",
+ "nextCheckAt",
+ "dailyLimitUsd",
+ "competitors",
+ "brandAliases",
+ "brandDomains",
+ "country",
+ "suggestions"
+ ],
+ "type": "object"
+ },
+ "sources": {
+ "additionalProperties": {},
+ "description": "What the current answers cite.",
+ "properties": {
+ "categories": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "Citations per category: own, competitor, ugc, review, reference, news and other.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "citations": {
+ "description": "Total citations in the current answers.",
+ "type": "number"
+ },
+ "topDomains": {
+ "description": "The 10 most cited domains.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "category": {
+ "description": "Its category (own, competitor, ugc, review, reference, news or other).",
+ "type": "string"
+ },
+ "citations": {
+ "description": "Times it is cited.",
+ "type": "number"
+ },
+ "competitor": {
+ "description": "The tracked competitor that owns it; null otherwise.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "domain": {
+ "description": "The cited domain.",
+ "type": "string"
+ },
+ "engines": {
+ "description": "Engines that cite it.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "example": {
+ "additionalProperties": {},
+ "description": "An example cited page.",
+ "properties": {
+ "title": {
+ "description": "That page's title; null when unknown.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "url": {
+ "description": "One cited page on the domain.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "url",
+ "title"
+ ],
+ "type": "object"
+ },
+ "questions": {
+ "description": "Questions whose answers cite it.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "domain",
+ "category",
+ "competitor",
+ "citations",
+ "questions",
+ "engines",
+ "example"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "citations",
+ "categories",
+ "topDomains"
+ ],
+ "type": "object"
+ },
+ "spend": {
+ "additionalProperties": {},
+ "description": "Today's AI search spend against the daily limit.",
+ "properties": {
+ "answersInProgress": {
+ "description": "Answers still being asked.",
+ "type": "number"
+ },
+ "dailyLimitEnergy": {
+ "description": "Today's AI search limit in Energy.",
+ "type": "number"
+ },
+ "dailyLimitUsd": {
+ "description": "Today's AI search limit in US dollars.",
+ "type": "number"
+ },
+ "energyLeft": {
+ "description": "Energy the workspace has left; null when unreadable.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "fullCheckUsd": {
+ "description": "About what checking every question once now costs, in US dollars.",
+ "type": "number"
+ },
+ "todayEnergy": {
+ "description": "What AI search has charged today, in Energy.",
+ "type": "number"
+ },
+ "todayUsd": {
+ "description": "What AI search has charged today (UTC), in US dollars of Energy.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "todayUsd",
+ "dailyLimitUsd",
+ "todayEnergy",
+ "dailyLimitEnergy",
+ "answersInProgress",
+ "fullCheckUsd",
+ "energyLeft"
+ ],
+ "type": "object"
+ },
+ "website": {
+ "additionalProperties": {},
+ "description": "The latest website scan.",
+ "properties": {
+ "lastScanStopped": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "code": {
+ "description": "A stable reason code, such as website_unreadable or cap_reached.",
+ "type": "string"
+ },
+ "message": {
+ "description": "The reason in plain words to pass on, with what to do next.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Why the latest scan attempt stopped; null when it didn't."
+ },
+ "scan": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "country": {
+ "description": "Country whose Google results were checked.",
+ "type": "string"
+ },
+ "energyUsed": {
+ "description": "Energy the scan charged; null when not recorded.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "finishedAt": {
+ "description": "When it finished (ISO time).",
+ "type": "string"
+ },
+ "pagesFound": {
+ "description": "Pages its sitemap and homepage list.",
+ "type": "number"
+ },
+ "pagesRead": {
+ "description": "Main pages read.",
+ "type": "number"
+ },
+ "scanId": {
+ "description": "The scan's id.",
+ "type": "string"
+ },
+ "searches": {
+ "description": "The searches the site targets, with its Google position.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "googlePosition": {
+ "description": "The site's best position in Google's results read; null when not found.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "leaders": {
+ "description": "Up to three other domains on Google's first page.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "namesCompany": {
+ "description": "True when the search names the company.",
+ "type": "boolean"
+ },
+ "rankingUrl": {
+ "description": "The site's page holding that position; null when not found.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "resultsChecked": {
+ "description": "How many Google results were read; 0 when the search wasn't checked.",
+ "type": "number"
+ },
+ "search": {
+ "description": "A Google search the site is built to win.",
+ "type": "string"
+ },
+ "targetPage": {
+ "description": "The site's own page built for this search; null when none was found.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "search",
+ "leaders"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "site": {
+ "description": "The website read.",
+ "type": "string"
+ },
+ "stoppedEarly": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "code": {
+ "description": "A stable reason code, such as website_unreadable or cap_reached.",
+ "type": "string"
+ },
+ "message": {
+ "description": "The reason in plain words to pass on, with what to do next.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Why it stopped part way, keeping what it found; null when it finished."
+ },
+ "topics": {
+ "description": "Topics the site covers.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "scanId",
+ "site",
+ "finishedAt",
+ "pagesFound",
+ "pagesRead",
+ "topics",
+ "country",
+ "energyUsed",
+ "stoppedEarly",
+ "searches"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The latest finished scan; null before any."
+ },
+ "scanRunning": {
+ "description": "True while a website scan runs.",
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "scanRunning",
+ "lastScanStopped",
+ "scan"
+ ],
+ "type": "object"
+ },
+ "windowDays": {
+ "description": "Days of answers the figures cover (30 or 90).",
+ "type": "number"
+ },
+ "you": {
+ "additionalProperties": {},
+ "description": "The company's own figures.",
+ "properties": {
+ "byEngine": {
+ "additionalProperties": {
+ "additionalProperties": {},
+ "properties": {
+ "position": {
+ "description": "Average position when named (1 is named first); null when never named.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "sentiment": {
+ "description": "Average sentiment when named, 0 (negative) to 1 (positive); null when there are no answers to count.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "share": {
+ "description": "Share of voice: its mentions over all tracked companies' mentions, 0 to 1; null when there are no answers to count.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "visibility": {
+ "description": "Share of answers that name the company, 0 to 1; null when there are no answers to count.",
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "visibility",
+ "share",
+ "sentiment",
+ "position"
+ ],
+ "type": "object"
+ },
+ "description": "The same four figures for each engine, keyed by engine name.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "position": {
+ "description": "Average position when named (1 is named first); null when never named.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "sentiment": {
+ "description": "Average sentiment when named, 0 (negative) to 1 (positive); null when there are no answers to count.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "sentiments": {
+ "additionalProperties": {},
+ "description": "Counts of mentions by sentiment.",
+ "properties": {
+ "mixed": {
+ "description": "Answers that name it with mixed sentiment.",
+ "type": "number"
+ },
+ "negative": {
+ "description": "Answers that name it negatively.",
+ "type": "number"
+ },
+ "neutral": {
+ "description": "Answers that name it neutrally.",
+ "type": "number"
+ },
+ "positive": {
+ "description": "Answers that name the company positively.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "positive",
+ "neutral",
+ "negative",
+ "mixed"
+ ],
+ "type": "object"
+ },
+ "share": {
+ "description": "Share of voice: its mentions over all tracked companies' mentions, 0 to 1; null when there are no answers to count.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "trend": {
+ "description": "Weekly points of the figures, oldest first.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "date": {
+ "description": "The day (YYYY-MM-DD) the point is read on.",
+ "type": "string"
+ },
+ "position": {
+ "description": "Average position when named (1 is named first); null when never named.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "sentiment": {
+ "description": "Average sentiment when named, 0 (negative) to 1 (positive); null when there are no answers to count.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "share": {
+ "description": "Share of voice: its mentions over all tracked companies' mentions, 0 to 1; null when there are no answers to count.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "visibility": {
+ "description": "Share of answers that name the company, 0 to 1; null when there are no answers to count.",
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "date",
+ "visibility",
+ "share",
+ "sentiment",
+ "position"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "visibility": {
+ "description": "Share of answers that name the company, 0 to 1; null when there are no answers to count.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "weekChange": {
+ "additionalProperties": {},
+ "description": "Change in each figure over the last 7 days.",
+ "properties": {
+ "position": {
+ "description": "Change in average position over the last 7 days (negative is better); null when it can't be compared.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "sentiment": {
+ "description": "Change in sentiment over the last 7 days; null when it can't be compared.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "share": {
+ "description": "Change in share of voice over the last 7 days; null when it can't be compared.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "visibility": {
+ "description": "Change in visibility over the last 7 days; null when it can't be compared.",
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "visibility",
+ "share",
+ "sentiment",
+ "position"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "visibility",
+ "share",
+ "sentiment",
+ "position",
+ "weekChange",
+ "sentiments",
+ "byEngine",
+ "trend"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "aiSearch",
+ "windowDays",
+ "company",
+ "answersCounted",
+ "lastAnsweredAt",
+ "you",
+ "competitors",
+ "questions",
+ "sources",
+ "opportunities",
+ "spend",
+ "costs",
+ "settings",
+ "website",
+ "audit"
+ ],
+ "type": "object"
+}