neuwo-api
Version:
TypeScript/JavaScript SDK client for the Neuwo content classification API
145 lines • 6.19 kB
TypeScript
/**
* REST API client for Neuwo API.
*
* This module provides a client for analysis where content is provided directly as text.
*/
import { Article, GetAiTopicsResponse, SimilarArticle, TrainingTag } from "./models.js";
import type { GetAiTopicsParams, GetSimilarParams, TrainAiTopicsParams, UpdateArticleParams } from "./types.js";
/**
* Client for Neuwo REST API endpoints.
*
* REST endpoints operate over standard HTTP methods and use a REST API token passed as a query parameter.
* REST endpoints are designed for server-side integration where content is provided directly as text.
* The REST API serves publishers who want to enrich the data before publishing by analysing content.
*/
export declare class NeuwoRestClient {
private static readonly DEFAULT_TIMEOUT;
private readonly requestHandler;
/**
* Initialise the REST API client.
*
* @param config - Client configuration
* @param config.token - REST API authentication token
* @param config.baseUrl - Base URL for the API server
* @param config.timeout - Request timeout in seconds (default: 60)
*/
constructor(config: {
token: string;
baseUrl: string;
timeout?: number;
});
/**
* Retrieve AI-generated tags (raw response).
*
* Returns the raw HTTP response without parsing. Useful for custom processing or debugging.
*
* @returns Raw HTTP Response object
* @throws {ValueError} If content is invalid
* @throws {ValidationError} If parameters are invalid
* @throws {AuthenticationError} If token is invalid
* @throws {ForbiddenError} If token lacks permissions
* @throws {NeuwoAPIError} For other API errors
*/
getAiTopicsRaw(params: GetAiTopicsParams & {
format?: string;
}): Promise<Response>;
/**
* Retrieve AI-generated tags and classifications for text content.
*
* Sends text content to Neuwo's REST API to obtain AI-generated tag classifications
* including subject tags, brand safety, marketing categories (IAB taxonomies), and
* smart tags. Optionally saves the article in the database if documentId is provided.
*
* @returns GetAiTopicsResponse object containing tags, brand safety, marketing categories, and smart tags
* @throws {ValueError} If content is invalid
* @throws {ValidationError} If parameters are invalid
* @throws {AuthenticationError} If token is invalid
* @throws {ForbiddenError} If token lacks permissions
* @throws {NeuwoAPIError} For other API errors
*/
getAiTopics(params: GetAiTopicsParams): Promise<GetAiTopicsResponse>;
/**
* Find similar articles (raw response).
*
* Returns the raw HTTP response without parsing.
*
* @returns Raw HTTP Response object
* @throws {ValidationError} If parameters are invalid
* @throws {AuthenticationError} If token is invalid
* @throws {ForbiddenError} If token lacks permissions
* @throws {NeuwoAPIError} For other API errors
*/
getSimilarRaw(params: GetSimilarParams & {
format?: string;
}): Promise<Response>;
/**
* Find articles similar to the specified document.
*
* Returns a list of similar articles with metadata including articleID, headline,
* articleURL, imageURL, similarity score, publication date, and publication ID.
*
* @returns Array of SimilarArticle objects with article metadata and similarity scores
* @throws {ValidationError} If parameters are invalid
* @throws {AuthenticationError} If token is invalid
* @throws {ForbiddenError} If token lacks permissions
* @throws {NeuwoAPIError} For other API errors
*/
getSimilar(params: GetSimilarParams): Promise<SimilarArticle[]>;
/**
* Update article fields (raw response).
*
* Returns the raw HTTP response without parsing.
*
* @returns Raw HTTP Response object
* @throws {ValidationError} If parameters are invalid
* @throws {AuthenticationError} If token is invalid
* @throws {ForbiddenError} If token lacks permissions
* @throws {NeuwoAPIError} For other API errors
*/
updateArticleRaw(params: UpdateArticleParams & {
format?: string;
}): Promise<Response>;
/**
* Update article fields in the database.
*
* This endpoint can only be used with articles that were assigned a documentId
* when analysing with getAiTopics(). Only fields provided in the request
* will be updated. Returns the updated article with all fields.
*
* @returns Article object with all updated fields
* @throws {ValidationError} If parameters are invalid
* @throws {AuthenticationError} If token is invalid
* @throws {ForbiddenError} If token lacks permissions
* @throws {NeuwoAPIError} For other API errors
*/
updateArticle(params: UpdateArticleParams): Promise<Article>;
/**
* Save training tags for an article (raw response).
*
* Returns the raw HTTP response without parsing.
*
* @returns Raw HTTP Response object
* @throws {ValidationError} If tags array is empty or invalid
* @throws {AuthenticationError} If token is invalid
* @throws {ForbiddenError} If token lacks permissions
* @throws {NeuwoAPIError} For other API errors
*/
trainAiTopicsRaw(params: TrainAiTopicsParams & {
format?: string;
}): Promise<Response>;
/**
* Save training tags for an article.
*
* Saves a list of training tags for an article in the database.
* Returns all newly added TrainingTags (tags that weren't already in the database).
* If all tags already exist, returns an empty array.
*
* @returns Array of TrainingTag objects representing newly added tags
* @throws {ValidationError} If tags array is empty or invalid
* @throws {AuthenticationError} If token is invalid
* @throws {ForbiddenError} If token lacks permissions
* @throws {NeuwoAPIError} For other API errors
*/
trainAiTopics(params: TrainAiTopicsParams): Promise<TrainingTag[]>;
}
//# sourceMappingURL=rest-client.d.ts.map