RoboAd - Digital Marketing Companion
RoboAd - Digital Marketing Companion · GPT-Aktionen
RoboAd
RoboAd Application Backend
GET /.well-known/ai-plugin.jsonAi Plugin ManifestGET /healthcheckCheck if the server is up and running.Returns a simple message if the server is up and running.
GET /changelogQuery changelogs for the plugin.Returns a list of changelogs for the plugin.
GET /test-streamingLong TaskPOST /landing-page/analysisAnalyze a landing page and return information about itThis end point accept a URL and analyze it to return information about it. Information will be used for generating ad copies and keywords.
GET /landing-page/analysisGet status of a url requestReturn information extracted about a url. This information is basis for generating ad copies and keywords.
POST /ad/generate-adGenerate ad copies for the provided url. User input will override the analysis result.GET /ad/Returns ads generated for the provided url.POST /keyword/keywordGenerate keywords for the provided url. User input will override the analysis result.GET /keyword/keywordReturn keywords linked to a urlGET /user/requestsReturn list of URLs user requestedPOST /feedback/user-feedbackShare user feedback with RoboAdSend user feedback to be shared with RoboAd.
GET /payment/subscriptionsReturn lists of available subscriptionsReturn lists of available subscriptions with their prices, names and descriptions. Prices are in cents.
POST /payment/payment-linkCreate Payment Link FuncGenerate a unique payment link for user to subscribe to the service
POST /payment/customer-portalCreate Customer Portal FuncGenerate a link for user to manage their subscription
Ursprüngliches API-Schema
{
"openapi": "3.1.0",
"info": {
"title": "RoboAd",
"description": "RoboAd Application Backend",
"version": "v1.2.0",
"x-logo": {
"url": "/static/images/roboad_logo.png"
}
},
"paths": {
"/.well-known/ai-plugin.json": {
"get": {
"summary": "Ai Plugin Manifest",
"operationId": "ai_plugin_manifest__well_known_ai_plugin_json_get",
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {}
}
}
}
}
}
},
"/healthcheck": {
"get": {
"summary": "Check if the server is up and running.",
"description": "Returns a simple message if the server is up and running.",
"operationId": "healthcheck",
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {}
}
}
}
}
}
},
"/changelog": {
"get": {
"tags": [
"plugin",
"changelog"
],
"summary": "Query changelogs for the plugin.",
"description": "Returns a list of changelogs for the plugin.",
"operationId": "changelog",
"parameters": [
{
"name": "version",
"in": "query",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Version"
}
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ChangelogSchema"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
},
"/test-streaming": {
"get": {
"tags": [
"test"
],
"summary": "Long Task",
"operationId": "test_streaming",
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {}
}
}
}
}
}
},
"/landing-page/analysis": {
"post": {
"tags": [
"landing-page",
"request"
],
"summary": "Analyze a landing page and return information about it",
"description": "This end point accept a URL and analyze it to return information about it. Information will be used for generating ad copies and keywords.",
"operationId": "landing_page_analyze_post_func",
"parameters": [
{
"name": "landing_page",
"in": "query",
"required": true,
"schema": {
"type": "string",
"format": "uri",
"minLength": 1,
"title": "Landing Page"
}
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/URLRequestSummarySchema"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
}
},
"get": {
"tags": [
"landing-page",
"request"
],
"summary": "Get status of a url request",
"description": "Return information extracted about a url. This information is basis for generating ad copies and keywords.",
"operationId": "landing_page_analyze_get_func",
"parameters": [
{
"name": "request_id",
"in": "query",
"required": true,
"schema": {
"type": "string",
"format": "uuid",
"title": "Request Id"
}
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/URLRequestSummarySchema"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
},
"/ad/generate-ad": {
"post": {
"tags": [
"ad",
"ad"
],
"summary": "Generate ad copies for the provided url. User input will override the analysis result.",
"operationId": "generate_ad_post_func",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResponsiveTextAdInputContentSchema"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResponsiveTextAdsSchema"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
},
"/ad/": {
"get": {
"tags": [
"ad",
"ad"
],
"summary": "Returns ads generated for the provided url.",
"operationId": "get_url_ads",
"parameters": [
{
"name": "landing_page",
"in": "query",
"required": true,
"schema": {
"type": "string",
"format": "uri",
"minLength": 1,
"title": "Landing Page"
}
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResponsiveTextAdsSchema"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
},
"/keyword/keyword": {
"post": {
"tags": [
"keyword",
"keyword"
],
"summary": "Generate keywords for the provided url. User input will override the analysis result.",
"operationId": "url_keywords_generate_post_func",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/KeywordInputSchema"
}
}
}
},
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/KeywordListSchema"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
}
},
"get": {
"tags": [
"keyword",
"keyword"
],
"summary": "Return keywords linked to a url",
"operationId": "url_keywords_generate_get_func",
"parameters": [
{
"name": "landing_page",
"in": "query",
"required": true,
"schema": {
"type": "string",
"format": "uri",
"minLength": 1,
"title": "Landing Page"
}
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/KeywordListSchema"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
},
"/user/requests": {
"get": {
"tags": [
"user",
"user"
],
"summary": "Return list of URLs user requested",
"operationId": "user_requests_get_func",
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"items": {
"anyOf": [
{
"type": "object"
},
{
"type": "null"
}
]
},
"type": "array",
"title": "Response User Requests Get Func"
}
}
}
}
}
}
},
"/feedback/user-feedback": {
"post": {
"tags": [
"feedback",
"feedback"
],
"summary": "Share user feedback with RoboAd",
"description": "Send user feedback to be shared with RoboAd.",
"operationId": "user_feedback_post_func",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserFeedbackSchema"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserFeedbackSchema"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
},
"/payment/subscriptions": {
"get": {
"tags": [
"payment"
],
"summary": "Return lists of available subscriptions",
"description": "Return lists of available subscriptions with their prices, names and descriptions. Prices are in cents.",
"operationId": "subscriptions",
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionsResponse"
}
}
}
}
}
}
},
"/payment/payment-link": {
"post": {
"tags": [
"payment"
],
"summary": "Create Payment Link Func",
"description": "Generate a unique payment link for user to subscribe to the service",
"operationId": "payment_link",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreatePaymentLinkRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Payment link generated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LinkResponse",
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"hint": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Hint",
"description": "Hint for model to provide descriptive response to user"
}
},
"type": "object",
"required": [
"url"
],
"title": "LinkResponse"
}
}
}
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden, failed to create payment link due to incorrect or missing credentials"
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/payment/customer-portal": {
"post": {
"tags": [
"payment"
],
"summary": "Create Customer Portal Func",
"description": "Generate a link for user to manage their subscription",
"operationId": "customer_portal",
"responses": {
"200": {
"description": "Link generated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LinkResponse",
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"hint": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Hint",
"description": "Hint for model to provide descriptive response to user"
}
},
"type": "object",
"required": [
"url"
],
"title": "LinkResponse"
}
}
}
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden, failed to create customer portal link due to incorrect or missing credentials"
},
"500": {
"description": "Internal Server Error"
}
}
}
}
},
"components": {
"schemas": {
"CTACategoryEnum": {
"type": "string",
"enum": [
"Learn More",
"Subscribe/Sign-Up",
"Purchase/Buy Now",
"Contact Us",
"Phone Call",
"Fill out Form",
"Download",
"Share/Refer",
"Feedback/Review",
"Join/Participate",
"Schedule/Book an Appointment",
"Visit In-Store or Location",
"Participate in a Survey/Poll",
"Upgrade",
"Follow or Engage on Social Media",
"Register for an Event",
"Claim an Offer/Discount",
"Renew or Re-engage"
],
"title": "CTACategoryEnum"
},
"CallToActionSchema": {
"properties": {
"category": {
"allOf": [
{
"$ref": "#/components/schemas/CTACategoryEnum"
}
],
"description": "The category of the CTA."
},
"name": {
"type": "string",
"title": "Name",
"description": "The actual CTA text."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description",
"description": "A brief description of what the CTA is intended to do."
},
"is_inferred": {
"type": "boolean",
"title": "Is Inferred",
"description": "true If CTA is inferred from overall content, false if explicit.",
"default": false
},
"text_excerpt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Text Excerpt",
"description": "An optional excerpt from the page where the CTA is derived from."
},
"suggested_action_verbs": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Suggested Action Verbs",
"description": "Suggested verbs to use in the CTA."
},
"related_entities": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/NamedEntitySchema"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Related Entities",
"description": "Related entities to the CTA."
}
},
"type": "object",
"required": [
"category",
"name",
"description"
],
"title": "CallToActionSchema"
},
"ChangeType": {
"type": "string",
"enum": [
"Added",
"Changed",
"Deprecated",
"Removed",
"Fixed",
"Security"
],
"title": "ChangeType"
},
"ChangelogItemSchema": {
"properties": {
"id": {
"type": "string",
"title": "Id",
"description": "Unique identifier for the changelog item."
},
"version": {
"type": "string",
"title": "Version",
"description": "Version of the release."
},
"timestamp": {
"type": "string",
"title": "Timestamp",
"description": "Timestamp of the update."
},
"change_type": {
"allOf": [
{
"$ref": "#/components/schemas/ChangeType"
}
],
"description": "Type of change."
},
"description": {
"type": "string",
"title": "Description",
"description": "Description of the change."
},
"contributors": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Contributors",
"description": "List of contributors for this change."
},
"links": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Links",
"description": "Relevant links such as issues, pull requests, or documentation."
}
},
"type": "object",
"required": [
"id",
"version",
"timestamp",
"change_type",
"description"
],
"title": "ChangelogItemSchema"
},
"ChangelogSchema": {
"properties": {
"changelogs": {
"items": {
"$ref": "#/components/schemas/ChangelogItemSchema"
},
"type": "array",
"title": "Changelogs",
"description": "List of updates for the project."
}
},
"type": "object",
"required": [
"changelogs"
],
"title": "ChangelogSchema"
},
"CreatePaymentLinkRequest": {
"properties": {
"price_id": {
"type": "string",
"title": "Price Id"
}
},
"type": "object",
"required": [
"price_id"
],
"title": "CreatePaymentLinkRequest"
},
"HTTPValidationError": {
"properties": {
"detail": {
"items": {
"$ref": "#/components/schemas/ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
},
"KeywordInputSchema": {
"properties": {
"url": {
"type": "string",
"title": "Url",
"description": "The URL of the page keywords are being generated for."
},
"language": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Language",
"description": "Language of the keywords.",
"default": "en"
},
"brands": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Brands",
"description": "List of brands that should be used in keywords.",
"default": []
},
"goals": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Goals",
"description": "The goals of the keyword, e.g. buying, contacting, etc.",
"default": []
},
"ctas": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Ctas",
"description": "The call to actions should be considered when generating keywords.",
"default": []
},
"usps": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Usps",
"description": "The unique selling propositions that should be considered when generating keywords.",
"default": []
},
"products_services": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Products Services",
"description": "products/services that should be considered when generating keywords.",
"default": []
}
},
"type": "object",
"required": [
"url"
],
"title": "KeywordInputSchema"
},
"KeywordIntentionEnum": {
"type": "string",
"enum": [
"informational",
"navigational",
"transactional"
],
"title": "KeywordIntentionEnum"
},
"KeywordListSchema": {
"properties": {
"keywords": {
"items": {
"$ref": "#/components/schemas/KeywordSchema"
},
"type": "array",
"title": "Keywords",
"description": "List of keywords",
"default": []
}
},
"type": "object",
"title": "KeywordListSchema"
},
"KeywordSchema": {
"properties": {
"text": {
"type": "string",
"title": "Text",
"description": "The text of the keyword"
},
"is_brand": {
"type": "boolean",
"title": "Is Brand",
"description": "Whether the keyword is a brand or not. True when the keyword containsthe brand name and False otherwise. It doesn't need to be an exact match.",
"default": false
},
"intention": {
"anyOf": [
{
"$ref": "#/components/schemas/KeywordIntentionEnum"
},
{
"type": "null"
}
],
"description": "Indicates whether keyword is informational, navigational or transactional. When a keyword is general,we categorize it as information. when it has some transactional component such as buying, or contacting,we categorize it as transactional. When it is about product or services in general, indicatinguser is searching for direction in their purchase cycle, we categorize it as navigational."
},
"sentiment": {
"anyOf": [
{
"$ref": "#/components/schemas/KeywordSentimentEnum"
},
{
"type": "null"
}
],
"description": "Indicates whether keyword should be used as keyword or as a negative keyword. Negative keyword is a keyword that looks like our keyword, but is not relevant to our business, product, service or goals.",
"default": "positive"
}
},
"type": "object",
"required": [
"text"
],
"title": "KeywordSchema",
"description": "Keywords should be relevant to the content of the page and the ad copy."
},
"KeywordSentimentEnum": {
"type": "string",
"enum": [
"positive",
"negative"
],
"title": "KeywordSentimentEnum"
},
"LinkResponse": {
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"hint": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Hint",
"description": "Hint for model to provide descriptive response to user"
}
},
"type": "object",
"required": [
"url"
],
"title": "LinkResponse"
},
"NamedEntitySchema": {
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "The name of the recognized entity."
},
"entity_type": {
"type": "string",
"title": "Entity Type",
"description": "The type of entity, accepted values: company, product, service, person, location, competitor, other."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description",
"description": "A brief description of the entity."
},
"text_excerpt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Text Excerpt",
"description": "An optional field, containing an excerpt from the page where the entity is derived from."
},
"url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Url",
"description": "An optional field, containing the URL of the entity."
}
},
"type": "object",
"required": [
"name",
"entity_type"
],
"title": "NamedEntitySchema"
},
"PriceInfo": {
"properties": {
"price_id": {
"type": "string",
"title": "Price Id"
},
"currency": {
"type": "string",
"title": "Currency"
},
"unit_amount": {
"type": "integer",
"title": "Unit Amount"
},
"recurring_interval": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Recurring Interval",
"description": "The interval of the recurring payment"
},
"metadata": {
"anyOf": [
{
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "object"
}
]
},
"type": "object"
},
{
"type": "null"
}
],
"title": "Metadata",
"default": {}
}
},
"type": "object",
"required": [
"price_id",
"currency",
"unit_amount"
],
"title": "PriceInfo"
},
"ProductInfo": {
"properties": {
"product_id": {
"type": "string",
"title": "Product Id"
},
"product_name": {
"type": "string",
"title": "Product Name"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description",
"description": "The description of the product"
},
"active": {
"type": "boolean",
"title": "Active"
},
"images": {
"items": {
"type": "string"
},
"type": "array",
"title": "Images"
},
"metadata": {
"anyOf": [
{
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "object"
}
]
},
"type": "object"
},
{
"type": "null"
}
],
"title": "Metadata",
"default": {}
},
"prices": {
"items": {
"$ref": "#/components/schemas/PriceInfo"
},
"type": "array",
"title": "Prices"
}
},
"type": "object",
"required": [
"product_id",
"product_name",
"active",
"images",
"prices"
],
"title": "ProductInfo"
},
"ResponsiveTextAdDescriptionSchema": {
"properties": {
"text": {
"type": "string",
"title": "Text",
"description": "Description of the ads, should be 90 characters or less, in regular case."
}
},
"type": "object",
"required": [
"text"
],
"title": "ResponsiveTextAdDescriptionSchema"
},
"ResponsiveTextAdInputContentSchema": {
"properties": {
"url": {
"type": "string",
"title": "Url",
"description": "The URL of the page ads are being generated for."
},
"named_entities": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/NamedEntitySchema"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Named Entities",
"description": "Entities that ads should focus on.",
"default": []
},
"language": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Language",
"description": "Language of the ads."
},
"keywords": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Keywords",
"description": "Keywords the ads should be optimized for.",
"default": []
},
"goals": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Goals",
"description": "The goals of the ads.",
"default": []
},
"tones": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Tones",
"description": "The tones of writing for the ads.",
"default": []
},
"ctas": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/CallToActionSchema"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Ctas",
"description": "The call to actions for the ads.",
"default": []
},
"usps": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Usps",
"description": "The unique selling propositions that need to be mentioned in the ads.",
"default": []
},
"products_services": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Products Services",
"description": "List of products/services that should ads target.",
"default": []
}
},
"type": "object",
"required": [
"url"
],
"title": "ResponsiveTextAdInputContentSchema"
},
"ResponsiveTextAdPathSchema": {
"properties": {
"text": {
"type": "string",
"title": "Text",
"description": "Paths used in the ads, should be 15 characters or less, in regular case. Do not include special characters or space."
}
},
"type": "object",
"required": [
"text"
],
"title": "ResponsiveTextAdPathSchema"
},
"ResponsiveTextAdSchema": {
"properties": {
"titles": {
"items": {
"$ref": "#/components/schemas/ResponsiveTextAdTitleSchema"
},
"type": "array",
"title": "Titles"
},
"descriptions": {
"items": {
"$ref": "#/components/schemas/ResponsiveTextAdDescriptionSchema"
},
"type": "array",
"title": "Descriptions"
},
"paths": {
"items": {
"$ref": "#/components/schemas/ResponsiveTextAdPathSchema"
},
"type": "array",
"title": "Paths"
}
},
"type": "object",
"required": [
"titles",
"descriptions",
"paths"
],
"title": "ResponsiveTextAdSchema",
"description": "We need at least 3 titles and 2 descriptions for each ad to be valid.\nTitles can match with each other randomly, so can descriptions.\nTitles and descriptions should convey similar meaning, tone and message."
},
"ResponsiveTextAdTitleSchema": {
"properties": {
"text": {
"type": "string",
"title": "Text",
"description": "Title of the ads, should be 25 characters or less, in Title Case"
}
},
"type": "object",
"required": [
"text"
],
"title": "ResponsiveTextAdTitleSchema"
},
"ResponsiveTextAdsSchema": {
"properties": {
"ads": {
"items": {
"$ref": "#/components/schemas/ResponsiveTextAdSchema"
},
"type": "array",
"title": "Ads"
}
},
"type": "object",
"required": [
"ads"
],
"title": "ResponsiveTextAdsSchema"
},
"SubscriptionsResponse": {
"properties": {
"subscriptions": {
"items": {
"$ref": "#/components/schemas/ProductInfo"
},
"type": "array",
"title": "Subscriptions"
}
},
"type": "object",
"required": [
"subscriptions"
],
"title": "SubscriptionsResponse"
},
"URLRequestSummarySchema": {
"properties": {
"url": {
"type": "string",
"title": "Url",
"description": "The URL of the page.",
"default": ""
},
"user_id": {
"type": "string",
"title": "User Id",
"description": "The ID of the user who requested the URL.",
"default": ""
},
"request_id": {
"type": "string",
"title": "Request Id",
"description": "Unique identifier for URL Request, automatically generated.",
"default": ""
},
"timestamp": {
"type": "string",
"format": "date-time",
"title": "Timestamp",
"description": "Timestamp when the request was made."
},
"languages": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Languages",
"description": "List of the languages of the URL.",
"default": []
},
"goals": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Goals",
"description": "Optional list of the goal of the URL.",
"default": []
},
"tones": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Tones",
"description": "Optional list of the tone of the URL.",
"default": []
},
"steps_progress": {
"anyOf": [
{
"type": "object"
},
{
"type": "null"
}
],
"title": "Steps Progress",
"description": "Status of the processes involved in the URL request."
},
"ctas": {
"anyOf": [
{
"items": {
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Ctas",
"description": "List of Call To Actions in the URL.",
"default": []
},
"usps": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Usps",
"description": "List of the Unique Selling Propositions in the URL.",
"default": []
},
"named_entities": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Named Entities",
"description": "List of the named entities in the URL.",
"default": []
},
"products_services": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Products Services",
"description": "List of the products/services on the URL.",
"default": []
},
"hints": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Hints",
"description": "Hint for the model to explain the results.",
"default": ""
}
},
"type": "object",
"title": "URLRequestSummarySchema"
},
"UserFeedbackSchema": {
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Comment",
"description": "The comment of the user"
},
"rating": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Rating",
"description": "The rating of the user",
"default": "Neutral"
},
"services_used": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Services Used",
"description": "List of services used by the user",
"default": []
},
"can_contact": {
"type": "boolean",
"title": "Can Contact",
"description": "Can we contact you for more information?",
"default": true
},
"url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Url",
"description": "The URL of the page user is giving feedback on"
}
},
"type": "object",
"title": "UserFeedbackSchema"
},
"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"
}
}
},
"servers": [
{
"url": "https://install2.roboad.app",
"description": "Production server"
}
]
}