neuwo-api
Version:
TypeScript/JavaScript SDK client for the Neuwo content classification API
279 lines • 10 kB
TypeScript
/**
* Data models for Neuwo API requests and responses.
*
* This module defines internal API interfaces (exact API structure) and
* exported SDK classes (JavaScript conventions) with transformation methods.
*/
interface ApiTagParent {
[key: string]: {
value: string;
URI?: string;
uri?: string;
};
}
interface ApiTag {
URI?: string;
uri?: string;
value: string;
score: string;
parents?: ApiTagParent[][];
}
interface ApiBrandSafetyTag {
BS_score?: string;
BS_indication?: "yes" | "no";
score?: string;
indication?: boolean;
}
interface ApiTaxonomyArticle {
ID: string;
label: string;
relevance: string;
}
interface ApiMarketingCategories {
iab_tier_1?: ApiTaxonomyArticle[];
iab_tier_2?: ApiTaxonomyArticle[];
iab_tier_3?: ApiTaxonomyArticle[];
iab_audience_tier_3?: ApiTaxonomyArticle[];
iab_audience_tier_4?: ApiTaxonomyArticle[];
iab_audience_tier_5?: ApiTaxonomyArticle[];
google_topics?: ApiTaxonomyArticle[];
Marketing_items?: ApiTaxonomyArticle[];
}
interface ApiSmartTag {
ID: string;
name: string;
}
interface ApiTrainingTag {
articleID: string;
tag: string;
addedDate: string;
}
interface ApiSimilarArticle {
articleID: string;
headline?: string;
articleURL?: string;
imageURL?: string;
score: number;
published?: string;
publicationID?: string;
}
/**
* Internal API response interface for Article data.
* Used for parsing JSON responses from the API.
*/
export interface ApiArticle {
articleID: string;
fetchDate: string;
published?: string;
headline?: string;
writer?: string;
category?: string;
content?: string;
summary?: string;
publicationID?: string;
articleURL?: string;
imageURL?: string;
includeInSim?: string | boolean;
}
/**
* Internal API response interface for GetAiTopics endpoint.
* Used for parsing JSON responses from the API.
*/
export interface ApiGetAiTopicsResponse {
tags?: ApiTag[];
brand_safety?: ApiBrandSafetyTag;
marketing_categories?: ApiMarketingCategories;
smart_tags?: ApiSmartTag[];
}
/**
* Tag parent in the ontology hierarchy.
*/
export declare class TagParent {
readonly level: string;
readonly value: string;
readonly uri: string;
/**
* @param level - Hierarchy level of the parent tag
* @param value - Display value of the parent tag
* @param uri - URI identifier for the parent tag
*/
constructor(level: string, value: string, uri: string);
static fromApiResponse(data: ApiTagParent): TagParent;
}
/**
* Subject tag with relevance score.
*/
export declare class Tag {
readonly uri: string;
readonly value: string;
readonly score: number;
readonly parents?: TagParent[][] | undefined;
/**
* @param uri - URI identifier for the tag
* @param value - Display value of the tag
* @param score - Relevance score (0-1)
* @param parents - Optional hierarchy of parent tags
*/
constructor(uri: string, value: string, score: number, parents?: TagParent[][] | undefined);
static fromApiResponse(data: ApiTag): Tag;
}
/**
* Brand safety classification.
*/
export declare class BrandSafetyTag {
readonly score: number;
readonly indication: "yes" | "no";
/**
* @param score - Brand safety score
* @param indication - Brand safety indication ("yes" for safe, "no" for unsafe)
*/
constructor(score: number, indication: "yes" | "no");
/**
* Whether the content is brand safe.
*/
get isSafe(): boolean;
static fromApiResponse(data: ApiBrandSafetyTag): BrandSafetyTag;
}
/**
* Taxonomy classification (IAB, Google Topics, etc.).
*/
export declare class TaxonomyArticle {
readonly id: string;
readonly label: string;
readonly relevance: number;
/**
* @param id - Unique identifier for the taxonomy category
* @param label - Human-readable label for the category
* @param relevance - Relevance score for this classification
*/
constructor(id: string, label: string, relevance: number);
static fromApiResponse(data: ApiTaxonomyArticle): TaxonomyArticle;
}
/**
* Marketing categories including IAB taxonomies and Google Topics.
*/
export declare class MarketingCategories {
readonly iabTier1: TaxonomyArticle[];
readonly iabTier2: TaxonomyArticle[];
readonly iabTier3: TaxonomyArticle[];
readonly iabAudienceTier3: TaxonomyArticle[];
readonly iabAudienceTier4: TaxonomyArticle[];
readonly iabAudienceTier5: TaxonomyArticle[];
readonly googleTopics: TaxonomyArticle[];
readonly marketingItems: TaxonomyArticle[];
/**
* @param iabTier1 - IAB Content Taxonomy tier 1 categories
* @param iabTier2 - IAB Content Taxonomy tier 2 categories
* @param iabTier3 - IAB Content Taxonomy tier 3 categories
* @param iabAudienceTier3 - IAB Audience Taxonomy tier 3 categories
* @param iabAudienceTier4 - IAB Audience Taxonomy tier 4 categories
* @param iabAudienceTier5 - IAB Audience Taxonomy tier 5 categories
* @param googleTopics - Google Topics API classifications
* @param marketingItems - Custom marketing category items
*/
constructor(iabTier1: TaxonomyArticle[], iabTier2: TaxonomyArticle[], iabTier3: TaxonomyArticle[], iabAudienceTier3: TaxonomyArticle[], iabAudienceTier4: TaxonomyArticle[], iabAudienceTier5: TaxonomyArticle[], googleTopics: TaxonomyArticle[], marketingItems: TaxonomyArticle[]);
static fromApiResponse(data: ApiMarketingCategories): MarketingCategories;
}
/**
* Smart tag classification.
*/
export declare class SmartTag {
readonly id: string;
readonly name: string;
/**
* @param id - Unique identifier for the smart tag
* @param name - Display name of the smart tag
*/
constructor(id: string, name: string);
static fromApiResponse(data: ApiSmartTag): SmartTag;
}
/**
* Training tag for model improvement.
*/
export declare class TrainingTag {
readonly articleId: string;
readonly tag: string;
readonly addedDate: Date;
/**
* @param articleId - Unique identifier of the article
* @param tag - Training tag value
* @param addedDate - Date when the training tag was added
*/
constructor(articleId: string, tag: string, addedDate: Date);
static fromApiResponse(data: ApiTrainingTag): TrainingTag;
}
/**
* Similar article result.
*/
export declare class SimilarArticle {
readonly articleId: string;
readonly score: number;
readonly headline?: string | undefined;
readonly articleUrl?: string | undefined;
readonly imageUrl?: string | undefined;
readonly published?: Date | undefined;
readonly publicationId?: string | undefined;
/**
* @param articleId - Unique identifier of the similar article
* @param score - Similarity score
* @param headline - Optional article headline
* @param articleUrl - Optional URL of the article
* @param imageUrl - Optional URL of the article image
* @param published - Optional publication date
* @param publicationId - Optional publication identifier
*/
constructor(articleId: string, score: number, headline?: string | undefined, articleUrl?: string | undefined, imageUrl?: string | undefined, published?: Date | undefined, publicationId?: string | undefined);
static fromApiResponse(data: ApiSimilarArticle): SimilarArticle;
}
/**
* Article metadata.
*/
export declare class Article {
readonly articleId: string;
readonly fetchDate: Date;
readonly published?: Date | undefined;
readonly headline?: string | undefined;
readonly writer?: string | undefined;
readonly category?: string | undefined;
readonly content?: string | undefined;
readonly summary?: string | undefined;
readonly publicationId?: string | undefined;
readonly articleUrl?: string | undefined;
readonly imageUrl?: string | undefined;
readonly includeInSim?: boolean | undefined;
/**
* @param articleId - Unique identifier of the article
* @param fetchDate - Date when the article was fetched
* @param published - Optional publication date
* @param headline - Optional article headline
* @param writer - Optional article author
* @param category - Optional article category
* @param content - Optional article content
* @param summary - Optional article summary
* @param publicationId - Optional publication identifier
* @param articleUrl - Optional URL of the article
* @param imageUrl - Optional URL of the article image
* @param includeInSim - Optional flag for similarity model inclusion
*/
constructor(articleId: string, fetchDate: Date, published?: Date | undefined, headline?: string | undefined, writer?: string | undefined, category?: string | undefined, content?: string | undefined, summary?: string | undefined, publicationId?: string | undefined, articleUrl?: string | undefined, imageUrl?: string | undefined, includeInSim?: boolean | undefined);
static fromApiResponse(data: ApiArticle): Article;
}
/**
* Complete AI topics response including tags, brand safety, and marketing categories.
*/
export declare class GetAiTopicsResponse {
readonly tags: Tag[];
readonly brandSafety: BrandSafetyTag;
readonly marketingCategories: MarketingCategories;
readonly smartTags: SmartTag[];
/**
* @param tags - List of subject tags with relevance scores
* @param brandSafety - Brand safety classification
* @param marketingCategories - Marketing categories including IAB and Google Topics
* @param smartTags - List of smart tag classifications
*/
constructor(tags: Tag[], brandSafety: BrandSafetyTag, marketingCategories: MarketingCategories, smartTags: SmartTag[]);
static fromApiResponse(data: ApiGetAiTopicsResponse): GetAiTopicsResponse;
}
export {};
//# sourceMappingURL=models.d.ts.map