Console API

Console API به شما اجازه می دهد تا وظایف مدیریتی یک وبلاگ را انجام دهید. این همان API است که ما به صورت داخلی در کنسول استفاده می کنیم. می‌توانید از آن برای خودکار کردن برخی کارها یا حتی ساختن یک مینی کنسول کاملاً جدید توسط خودتان استفاده کنید.

تماس با API

  • مسیر پایه API : https://blog.taptik.ir/api/console/v0/blog/{subdomain}
  • یک کلید Console API از کنسول ایجاد کنید و آن را به عنوان هدر X-API-KEY ارسال کنید.
  • نقاط پایانی Console API از روش های HTTP زیر استفاده می کنند.
    • GET - برای دریافت داده ها، معمولاً مجموعه ای از منابع
    • POST - برای ایجاد یک منبع
    • PATCH - به روز رسانی جزئی یا کامل یک منبع
    • DELETE - برای حذف یک منبع
  • مشابه Data API، Console API همیشه یک شی یا آرایه ای از اشیاء را در قالب JSON برمی گرداند.
  • پارامترهای درخواست را می توان به عنوان JSON (توصیه می شود) یا به طور معمول پارامترهای درخواست (در پرس و جو یا بدنه HTTP ) تنظیم کرد.
  • در این مستندات، اشیاء، پارامترهای درخواست و پاسخ ها به صورت نوشته می شوند Typescript رابط ها به منظور مختصر کردن اعلان های نوع.

دسته بندی ها

Console API نقاط پایانی زیادی دارد و بر اساس «منابعی» که می‌خواهید به آن دسترسی داشته باشید یا مدیریت کنید، طبقه‌بندی می‌شود. اکثر دسته ها عملیات CRUD دارند اما برخی ممکن است نقاط پایانی بیشتری برای وظایف خاص داشته باشند. این اشیا در داخل Category تعریف می شوند. همچنین توجه داشته باشید که اشیاء Console API با اشیاء Data API متفاوت هستند.

پرش به هر دسته:

وبلاگ

نقاط پایانی:

  • GET /blog - داده های وبلاگ را دریافت کنید
  • PATCH /blog - به روز رسانی داده های وبلاگ
  • POST /blog/variant - یک نوع وبلاگ ایجاد کنید
  • PATCH /blog/variant - یک نوع وبلاگ را به روز کنید

اشیاء:

دریافت داده های وبلاگ

GET /blog

type Request = {};
type Response = Blog;

به روز رسانی داده های وبلاگ

PATCH /blog

type Request = Partial<Blog>; // except id and variants
type Response = Blog;

یک نوع وبلاگ ایجاد کنید

POST /blog/variant

type Request = {
	language_id: number;
};
type Response = BlogVariant;

یک نوع وبلاگ را به روز کنید

PATCH /blog/variant

type Request = {
	language_id: number;
	name?: string;
	description?: string;
};
type Response = BlogVariant;

پست ها و صفحات

نقاط پایانی:

  • GET /posts - دریافت پست
  • GET /pages - دریافت صفحات
  • POST /post - یک پست/صفحه ایجاد کنید
  • GET /post/{id} - یک پست/صفحه دریافت کنید
  • PATCH /post/{id} - یک پست/صفحه را به روز کنید
  • DELETE /post/{id} - یک پست/صفحه را حذف کنید
  • POST /post/{id}/variant - یک نوع پست ایجاد کنید
  • PATCH /post/{id}/variant - یک نوع پست را به روز کنید
  • POST /post/{id}/variant/publish - یک نوع پست را منتشر کنید
  • POST /post/{id}/variant/unpublish - یک نوع پست را لغو انتشار کنید
  • DELETE /post/{id}/variant - یک نوع پست را حذف کنید
  • PATCH /post/{id}/tags - به روز رسانی برچسب های پست
  • PATCH /post/{id}/authors - نویسندگان پست را به روز کنید

اشیاء:

دریافت پست ها

دریافت پست با فیلترینگ پارامترهای فیلتر مشابه پارامترهای کنسول هستند. یک PostListItem سبک وزن را در هر پست، به جای پست کامل برمی‌گرداند - GET /post/{id} را برای پست کامل واکشی کنید.

GET /posts

type Request = {
	status?: 'featured' | 'published' | 'draft' | 'scheduled';
	author_id?: number;
	tag_id?: number;
	start_timestamp?: number; // unix timestamp
	end_timestamp?: number; // unix timestamp
	search?: string;
	language_id?: number; // defaults to the blog's primary language
	limit?: number; // default 50, max 100
	offset?: number;
};
type Response = PostListItem[];

صفحات را دریافت کنید

همان شکل سبک PostListItem مانند GET /posts.

GET /pages

type Request = {};
type Response = PostListItem[];

یک پست/صفحه ایجاد کنید

یک پست پیش نویس خالی ایجاد کنید. یک نوع پست از زبان اصلی وبلاگ ایجاد خواهد شد.

POST /post

type Request = {
	is_page?: boolean; // default to false
};
type Response = Post;

یک پست/صفحه دریافت کنید

GET /post/{id}

type Request = {};
type Response = Post;

یک پست/صفحه را به روز کنید

PATCH /post/{id}

type Request = {
	is_featured?: boolean;
	featured_image_url?: string | null;
	canonical_url?: string | null;
	code_head?: string | null;
	code_foot?: string | null;
	published_at?: number | null; // unix timestamp
};
type Response = Post;

یک پست/صفحه را حذف کنید

DELETE /post/{id}

type Request = {};
type Response = {};

یک نوع پست ایجاد کنید

POST /post/{id}/variant

type Request = {
	language_id: number;
};
type Response = PostVariant;

یک نوع پست را به روز کنید

PATCH /post/{id}/variant

type Request = {
	language_id: number;
	slug?: string; // max 255 chars
	content?: string | null;
	content_unsaved?: string | null;
	title?: string | null; // max 255 chars
	description?: string | null; // max 255 chars
};
type Response = PostVariant;

content و content_unsaved باید در ProseMirror باشد JSON قالب ببینید ProseMirror را دریافت کنید JSON نقطه پایانی برای تبدیل HTML به ProseMirror JSON.

یک نوع پست را منتشر کنید

POST /post/{id}/variant/publish

type Request = {
	language_id: number;
};
type Response = PostVariant;

یک نوع پست را منتشر می کند. اگر گونه‌ای اسلگ نداشته باشد، یکی از آن‌ها به‌طور خودکار از عنوان تولید می‌شود. اگر پست دارای زمان published_at نباشد، اکنون تنظیم شده است. به محدوده posts.publish.own نیاز دارد.

لغو انتشار یک نوع پست

POST /post/{id}/variant/unpublish

type Request = {
	language_id: number;
};
type Response = PostVariant;

وضعیت نوع را به draft برمی گرداند. روی هر دو نوع منتشر شده و برنامه ریزی شده کار می کند. به محدوده posts.publish.own نیاز دارد.

یک نوع پست را حذف کنید

DELETE /post/{id}/variant

type Request = {
	language_id: number;
};
type Response = {};

به روز رسانی برچسب های پست

PATCH /post/{id}/tags

type Request = {
	ids: number[]; // tag IDs
};
type Response = {};

نویسندگان پست را به روز کنید

PATCH /post/{id}/authors

type Request = {
	ids: number[]; // author (user) IDs
};
type Response = {};

برچسب‌ها

نقاط پایانی:

  • GET /tags - برچسب ها را دریافت یا جستجو کنید
  • POST /tag - یک برچسب ایجاد کنید
  • PATCH /tag/{id} - یک برچسب را به روز کنید
  • DELETE /tag/{id} - یک برچسب را حذف کنید
  • POST /tag/{id}/variant - یک نوع برچسب ایجاد کنید
  • PATCH /tag/{id}/variant - یک نوع برچسب را به روز کنید
  • DELETE /tag/{id}/variant - یک نوع برچسب را حذف کنید

اشیاء:

برچسب ها را دریافت یا جستجو کنید

برچسب‌ها را فهرست می‌کند و به صورت اختیاری با نام (زبان اصلی) جستجو می‌کند.

GET /tags

type Request = {
	limit?: number; // default 50, max 100
	offset?: number;
	search?: string; // filters tags by name (primary language)
};
type Response = Tag[];

یک برچسب ایجاد کنید

POST /tag

type Request = {
	name: string; // name for the primary language variant
	is_private: boolean; // default false
};
type Response = Tag;

یک برچسب را به روز کنید

PATCH /tag/{id}

type Request = {
	is_private?: boolean;
	slug?: string;
	code_head?: string | null;
	code_foot?: string | null;
};
type Response = Tag;

یک برچسب را حذف کنید

DELETE /tag/{id}

type Request = {};
type Response = {};

یک نوع برچسب ایجاد کنید

POST /tag/{id}/variant

type Request = {
	language_id: number;
};

یک نوع برچسب را به روز کنید

PATCH /tag/{id}/variant

type Request = {
	language_id: number;
	name?: string;
	description?: string | null;
};

یک نوع برچسب را حذف کنید

DELETE /tag/{id}/variant

type Request = {
	language_id: number;
};

کاربران

نقاط پایانی:

  • GET /users - کاربران را جذب کنید
  • GET /users/search - جستجوی کاربران
  • POST /user - یک کاربر ایجاد کنید
  • POST /user/guest - یک کاربر مهمان ایجاد کنید
  • PATCH /user/{id} - یک کاربر را به روز کنید
  • DELETE /user/{id} - حذف یک کاربر
  • POST /user/{id}/variant - یک نوع کاربری ایجاد کنید
  • PATCH /user/{id}/variant - یک نوع کاربری را به روز کنید
  • DELETE /user/{id}/variant - یک نوع کاربری را حذف کنید

اشیاء:

کاربران را دریافت کنید

GET /users

type Request = {
	offset?: number;
};
type Response = User[];

جستجوی کاربران

کاربران را بر اساس نام جستجو می کند.

GET /users/search

type Request = {
	search: string;
};
type Response = User[];

یک کاربر ایجاد کنید

POST /user

type Request = {
	username_or_email: string;
	role: 'owner' | 'admin' | 'editor' | 'writer' | 'contributor';
};
type Response = User;

یک کاربر مهمان ایجاد کنید

POST /user/guest

type Request = {
	name: string;
};
type Response = User;

یک کاربر را به روز کنید

PATCH /user/{id}

type Request = {
	hyvor_user_id?: number;
	role?: 'owner' | 'admin' | 'editor' | 'writer' | 'contributor';
	status: 'active' | 'blocked';
	slug: string;
	email?: string;
	website_url?: string;
	picture_url?: string;
	social_facebook?: string;
	social_twitter?: string;
	social_linkedin?: string;
	social_youtube?: string;
	social_tiktok?: string;
	social_instagram?: string;
	social_github?: string;
};
type Response = User;

حذف یک کاربر

DELETE /user/{id}

type Request = {};
type Response = {};

یک نوع کاربری ایجاد کنید

POST /user/{id}/variant

type Request = {};
type Response = UserVariant;

یک نوع کاربری را به روز کنید

PATCH /user/{id}/variant

type Request = {
	name?: string;
	bio?: string;
	location?: string;
};
type Response = UserVariant;

یک نوع کاربری را حذف کنید

DELETE /user/{id}/variant

type Request = {};
type Response = {};

رسانه

نقاط پایانی:

  • GET /media - دریافت رسانه
  • POST /media - یک رسانه ایجاد کنید
  • POST /media/from-url - ایجاد یک رسانه از URL
  • DELETE /media/{id} - یک پیمایش را حذف کنید
  • GET /media/unsplash/search - دریافت رسانه از unsplash
  • PATCH /media - وصله رسانه

اشیاء:

دریافت رسانه

GET /media

type Request = {
	limit: number;
	offset: number;
	search?: string;
	extensions?: string[];
	type?: string;
};
type Response = Media[];

یک رسانه ایجاد کنید

POST /media

type Request = {
	file: File;
	post_id: number;
};
type Response = Media;

یک رسانه از URL ایجاد کنید

POST /media/from-url

type Request = {
	url: string;
	post_id?: number;
};
type Response = Media;

حذف یک رسانه

DELETE /media/{id}

type Request = {};
type Response = {};

یک رسانه را وصله کنید

PATCH /media/{id}

type Request = Partial<Media>;
type Response = Media;

نقاط پایانی:

  • GET /navigations - ناوبری را دریافت کنید
  • PATCH /navigations/sort - ناوبری مرتب سازی را به روز کنید
  • POST /navigation - یک ناوبری ایجاد کنید
  • PATCH /navigation/{id} - به روز رسانی یک ناوبری
  • DELETE /navigation/{id} - یک پیمایش را حذف کنید
  • POST /navigation/{id}/variant - یک نوع ناوبری ایجاد کنید
  • PATCH /navigation/{id}/variant - یک نوع ناوبری را به روز کنید
  • DELETE /navigation/{id}/variant - یک نوع ناوبری را حذف کنید

اشیاء:

ناوبری را دریافت کنید

GET /navigations

type Request = {};
type Response = Navigation[];

ناوبری مرتب سازی را به روز کنید

PATCH /navigations/sort

type Request = {
	ids?: number[];
};
type Response = {};

یک ناوبری ایجاد کنید

POST /navigation

type Request = {
	url: string;
	name: string;
	type: 'header' | 'footer';
};
type Response = Navigation;

یک ناوبری را به روز کنید

PATCH /navigation/{id}

type Request = {
	url: string;
	type: 'header' | 'footer';
};
type Response = Navigation;

یک ناوبری را حذف کنید

DELETE /navigation/{id}

type Request = {};
type Response = {};

یک نوع ناوبری ایجاد کنید

POST /navigation/{id}/variant

type Request = {
	language_id: number;
	name?: string;
};
type Response = NavigationVariant;

یک نوع پیمایش را به روز کنید

PATCH /navigation/{id}/variant

type Request = {
	language_id: number;
	name: string;
};
type Response = NavigationVariant;

یک نوع ناوبری را حذف کنید

DELETE /navigation/{id}/variant

type Request = {
	language_id: number;
};
type Response = {};

زبان

نقاط پایانی:

  • GET /languages - دریافت زبان
  • POST /language - ایجاد یک زبان
  • PATCH /language/{id} - یک زبان را به روز کنید
  • DELETE /language/{id} - یک زبان را حذف کنید

اشیاء:

دریافت زبان ها

GET /languages

type Request = {};
type Response = Languages[];

زبان ایجاد کنید

POST /language

type Request = {
	code: string; // max 12 chars
	name: string; // max 255 chars
	direction: 'ltr' | 'rtl';
};
type Response = Language;

یک زبان را به روز کنید

PATCH /language/{id}

type Request = {
	code: string; // max 12 chars
	name: string; // max 255 chars
	direction: 'ltr' | 'rtl';
};
type Response = Language;

یک زبان را حذف کنید

DELETE /language/{id}

type Request = {};
type Response = {};

تغییر مسیر

نقاط پایانی:

  • GET /redirects - تغییر مسیرها را دریافت کنید
  • POST /redirect - یک تغییر مسیر ایجاد کنید
  • PATCH /redirect/{id} - تغییر مسیر را به روز کنید
  • DELETE /redirect/{id} - یک تغییر مسیر را حذف کنید

اشیاء:

تغییر مسیرها را دریافت کنید

GET /redirects

type Request = {
	search?: string;
	limit?: number;
	offset?: number;
};
type Response = Redirect[];

یک تغییر مسیر ایجاد کنید

POST /redirect

type Request = {
	dynamic: boolean;
	path: string;
	to: string;
	type: 'temporary' | 'permanent';
};
type Response = Redirect;

تغییر مسیر را به روز کنید

PATCH /redirect/{id}

type Request = {
	path?: string;
	to?: string;
	type?: 'temporary' | 'permanent';
};
type Response = Redirect;

یک تغییر مسیر را حذف کنید

DELETE /redirect/{id}

type Request = {};
type Response = {};

وب هوک

نقاط پایانی:

  • GET /webhooks - دریافت وب هوک
  • POST /webhook - ایجاد یک وب هوک
  • PATCH /webhook/{id} - یک وب هوک را به روز کنید
  • DELETE /webhook/{id} - یک وب هوک را حذف کنید

اشیاء:

دریافت وب هوک

GET /webhooks

type Request = {};
type Response = Webhook[];

یک وب هوک ایجاد کنید

POST /webhook

type Request = {
	url: string;
	events: 'cache.single' | 'cache.templates' | 'cache.all'[];
};
type Response = Webhook;

یک وب هوک را به روز کنید

PATCH /webhook/{id}

type Request = {
	url?: string;
	events?: 'cache.single' | 'cache.templates' | 'cache.all'[];
};
type Response = Webhook;

یک وب هوک را حذف کنید

DELETE /webhook/{id}

type Request = {};
type Response = {};

فایل های پوسته

نقاط پایانی:

  • GET /theme/files - دریافت فایل های پوسته
  • POST /theme/file - یک فایل پوسته ایجاد کنید
  • PATCH /theme/file/{id} - یک فایل پوسته را به روز کنید
  • DELETE /theme/file/{id} - یک فایل پوسته را حذف کنید

اشیاء:

دریافت فایل های پوسته

GET /theme/files

type Request = {};
type Response = FileObject[];

یک فایل پوسته ایجاد کنید

POST /theme/file

type Request = {
	folder: 'templates' | 'assets' | 'styles' | 'lang';
	name: string;
	content?: string;
	file: File;
};
type Response = FileObject;

یک فایل پوسته را به روز کنید

PATCH /theme/file/{id}

type Request = {
	name?: string;
	content?: string;
};
type Response = FileObject;

یک فایل پوسته را حذف کنید

DELETE /theme/file/{id}

type Request = {};
type Response = {};

خروجی

نقاط پایانی:

  • GET /exports - خروجی را دریافت کنید
  • POST /export - یک خروجی ایجاد کنید

اشیاء:

خروجی داشته باشید

GET /exports

type Request = {};
type Response = ExportObject[];

خروجی ایجاد کنید

POST /export

type Request = {};
type Response = ExportObject;

نقاط پایانی:

  • POST /link-analysis/check-urls - پیوند نوع پست را بررسی کنید
  • PATCH /link-analysis/ignore-link - پیوند را نادیده بگیرید
  • GET /link-analysis/stats - آمار پیوندها را دریافت کنید
  • GET /link-analysis/links - پیوندها را دریافت کنید
  • GET /link-analysis/checks - چک دریافت کنید
  • POST /link-analysis/check - یک چک ایجاد کنید

اشیاء:

پیوند نوع پست را بررسی کنید

POST /link-analysis/check-urls

type Request = {
	post_variant_id: number;
	urls: string[];
	force?: boolean;
};
type Response = LinkObject[];

PATCH /link-analysis/ignore-link

type Request = {
	post_variant_id: number;
	urls: string[];
	status: boolean;
};
type Response = LinkObject;

GET /link-analysis/stats

type Request = {};
type Response = {
	counts: number;
};

GET /link-analysis/links

type Request = {
	type?: 'ok' | 'broken' | 'ignored' | 'redirected';
	limit?: number;
	offset?: number;
};
type Response = LinkObject[];

چک دریافت کنید

GET /link-analysis/checks

type Request = {
	limit?: number;
	offset?: number;
};
type Response = CheckObject[];

چک ایجاد کنید

POST /link-analysis/check

type Request = {};
type Response = CheckObject;

مسیر

نقاط پایانی:

  • GET /routes - مسیرها را دریافت کنید
  • POST /route - یک مسیر ایجاد کنید
  • PATCH /route/{id} - یک مسیر را به روز کنید
  • DELETE /route/{id} - یک مسیر را حذف کنید

اشیاء:

مسیرها را دریافت کنید

GET /routes

type Request = {};
type Response = Route[];

یک مسیر ایجاد کنید

POST /route

type Request = {
	name: string;
	match: string;
	template: string;
	post_filter?: string;
	content_type?: string;
};
type Response = Route;

یک مسیر را به روز کنید

PATCH /route/{id}

type Request = {
	name: string;
	match: string;
	template: string;
	post_filter?: string;
	content_type?: string;
};
type Response = Route;

یک مسیر را حذف کنید

DELETE /route/{id}

type Request = {};
type Response = {};

متفرقه

نقاط پایانی:

  • GET /misc/themes - همه پوسته ها را دریافت کنید
  • GET /misc/prosemirror/json - Prosemirror json را دریافت کنید
  • DELETE /blog/cache - کش وبلاگ را حذف کنید
  • DELETE /blog - وبلاگ را حذف کنید

همه پوسته ها را دریافت کنید

GET /misc/themes

type Request = {};
type Response = Theme[];

Prosemirror JSON را از HTML دریافت کنید

GET /misc/prosemirror/json

type Request = {
	html: string;
};
type Response = {
	json: string;
};

کش وبلاگ را حذف کنید

DELETE /blog/cache

type Request = {
	type: 'all' | 'template' | 'paths';
	paths?: string[];
};
type Response = {};

وبلاگ را حذف کنید

نرم افزار وبلاگ را حذف می کند. وبلاگ و داده های آن 30 روز بعد برای همیشه حذف می شوند. به محدوده blog.delete نیاز دارد.

DELETE /blog

type Request = {};
type Response = {};

اشیاء

شی وبلاگ

interface Blog {
	id: number;
	created_at: number;
	is_blocked: boolean;
	subdomain: string;
	type: 'default' | 'dev';
	hosting_at: 'subdomain' | 'domain' | 'self';
	hosting_domain: string | null;
	hosting_url: string | null;

	embeddable: boolean;
	embedding_domains: string | null;

	logo_url: string | null;
	cover_url: string | null;

	social_facebook: string | null;
	social_twitter: string | null;
	social_linkedin: string | null;
	social_youtube: string | null;
	social_tiktok: string | null;
	social_instagram: string | null;
	social_github: string | null;

	code_head: string | null;
	code_foot: string | null;

	seo_indexing: boolean;
	seo_robots_txt: string | null;
	seo_external_links_follow: 'follow' | 'nofollow';
	comments_code: string | null;
	newsletter_code: string | null;

	color_modes: 'light' | 'dark' | 'both';
	color_mode_default: 'light' | 'dark' | 'os';

	syntax_on: boolean;
	syntax_line_numbers: boolean;
	syntax_theme: string | null;

	flashload: boolean;
	variants: BlogVariant[];
}

شیء BlogVariant

interface BlogVariant {
	language_id: number;
	name: string | null;
	description: string | null;
}

ارسال شی

interface Post {
	id: number;
	preview_id: string;
	created_at: number;
	updated_at: number;
	published_at: number | null;

	is_featured: boolean;
	is_page: boolean;

	featured_image_url: string | null;
	canonical_url: string | null;
	code_head: string | null;
	code_foot: string | null;

	variant_statuses: {
		id: number;
		language_id: number;
		status: 'draft' | 'published' | 'scheduled';
	}[];

	tags: Tag[];
	authors: User[];
}

variant_statuses فقط به شما می گوید که یک پست دارای کدام زبان است و وضعیت آنها. GET /post/{id}?variant_language_code=... را واکشی کنید تا شیء کامل PostVariant (محتوا، عنوان، فیلدهای SEO و غیره) را برای یک زبان دریافت کنید.

شی PostVariant

interface PostVariant {
	language_id: number;

	slug: string | null;
	status: 'draft' | 'published' | 'scheduled';
	url: string;

	content: string | null;
	content_unsaved: string | null;
	title: string | null;
	description: string | null;
}

شی PostListItem

بازگشت توسط GET /posts و GET /pages. خلاصه ای سبک وزن برای هر پست: slug, url, title، و link_analysis منعکس کننده نوع زبان درخواستی (یا اصلی وبلاگ) و tags/authors فقط نام زبان اصلی آنهاست. واکشی GET /post/{id} برای کامل ارسال کنید شی، از جمله برچسب ها و نویسندگان.

interface PostListItem {
	id: number;
	created_at: number;
	updated_at: number;
	published_at: number | null;

	is_featured: boolean;
	is_page: boolean;

	slug: string | null;
	url: string | null;
	title: string | null;
	link_analysis: Record<string, number>;

	variant_statuses: {
		language_id: number;
		status: 'draft' | 'published' | 'scheduled';
	}[];

	tags: string[]; // tag names, primary language
	authors: string[]; // author names, primary language
}

شیء را تگ کنید

interface Tag {
	id: number;
	created_at: number;
	updated_at: number;
	is_private: boolean;
	slug: string;
	posts_count: number;
	code_head: string | null;
	code_foot: string | null;

	variants: TagVariant[];
}

شیء TagVariant

interface TagVariant {
	language_id: number;
	url: string | null;
	name: string | null;
	description: string | null;
}

شی کاربر

interface User {
	id: number;
	created_at: number;
	updated_at: number;

	hyvor_user_id: number | null;

	status: 'invited' | 'active' | 'blocked';
	role: 'owner' | 'admin' | 'editor' | 'writer' | 'contributor';
	slug: string;
	posts_count: number;
	email: string;

	picture_url: string | null;
	website_url: string | null;

	social_facebook: string | null;
	social_twitter: string | null;
	social_linkedin: string | null;
	social_youtube: string | null;
	social_tiktok: string | null;
	social_instagram: string | null;
	social_github: string | null;

	variants: UserVariant[];
}

شی UserVariant

interface UserVariant {
	language_id: number;
	url: string;
	name: string | null;
	bio: string | null;
	location: string | null;
}

شی رسانه

interface Media {
	id: number;
	uploaded_at: number;
	name: string;
	url: string;
	original_name: string;
	extension: string;
}
interface Navigation {
	id: number;
	created_at: number;
	url: string;
	type: NavigationType;
	sort: number;
	variants: NavigationVariant[];
}
interface NavigationVariant {
	language_id: number;
	name: string | null;
}

شیء زبان

interface Language {
	id: number;
	code: string;
	name: string;
	is_primary: boolean;
}

تغییر مسیر شی

interface Redirect {
	id: number;
	created_at: number;
	path: string;
	to: string;
	type: 'temporary' | 'permanent';
}

Object Webhook

interface Webhook {
	id: number;
	url: string;
	events: string[];
	secret: string;
}

شی مسیر

interface Route {
	id: number;
	created_at: number;
	name: string;
	match: string;
	template: string;
	posts_filter: string | null;
	content_type: string | null;
	is_enabled: boolean;
}

شی فایل

interface FileObject {
	id: number;
	name: string;
	content: string | null;
	folder: 'templates' | 'assets' | 'styles' | 'lang';
}

خروجی شی

interface Export {
	id: number;
	createdf_at: number;
	format: 'hyvor_blogs' | 'wordpress';
	status: 'pending' | 'completed' | 'failed';
	url: string | null;
	error?: string;
}

موضوع پوسته

interface Theme {
	id: number;
	type: 'original' | 'ported';
	name: string;
}
interface LinkObject {
	id: number;
	url: string;
	full_url: string;
	status_code: number;
	status_type: 'ok' | 'broken' | 'redirect' | 'ignored';
	ignored: boolean;
	post_id: number;
	post_variant_id: number;
	post_variant_language_id: number;
	post_variant_title: string;
}

Object را بررسی کنید

interface CheckObject {
	id: number;
	created_at: number;
	status: 'pending' | 'completed' | 'failed';
	error: string | null;
	post_count: number;
	post_variants_count: number;
	page_count: number;
	page_variants_count: number;
	links_total_count: number;
	links_ok_count: number;
	links_broken_count: number;
	links_redirect_count: number;
	links_ignored_count: number;
}