feat: update articles filter and fields

This commit is contained in:
hanif salafi 2025-10-08 07:52:29 +07:00
parent fb6c8ca592
commit 5258f20df1
9 changed files with 298 additions and 154 deletions

View File

@ -7,39 +7,41 @@ import (
) )
type Articles struct { type Articles struct {
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"` ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
Title string `json:"title" gorm:"type:varchar"` Title string `json:"title" gorm:"type:varchar"`
Slug string `json:"slug" gorm:"type:varchar"` Slug string `json:"slug" gorm:"type:varchar"`
Description string `json:"description" gorm:"type:varchar"` Description string `json:"description" gorm:"type:varchar"`
CategoryId int `json:"category_id" gorm:"type:int4"` CategoryId int `json:"category_id" gorm:"type:int4"`
HtmlDescription string `json:"html_description" gorm:"type:varchar"` HtmlDescription string `json:"html_description" gorm:"type:varchar"`
TypeId int `json:"type_id" gorm:"type:int4"` TypeId int `json:"type_id" gorm:"type:int4"`
Tags string `json:"tags" gorm:"type:varchar"` Tags string `json:"tags" gorm:"type:varchar"`
ThumbnailName *string `json:"thumbnail_name" gorm:"type:varchar"` ThumbnailName *string `json:"thumbnail_name" gorm:"type:varchar"`
ThumbnailPath *string `json:"thumbnail_path" gorm:"type:varchar"` ThumbnailPath *string `json:"thumbnail_path" gorm:"type:varchar"`
PageUrl *string `json:"page_url" gorm:"type:varchar"` PageUrl *string `json:"page_url" gorm:"type:varchar"`
CreatedById *uint `json:"created_by_id" gorm:"type:int4"` CreatedById *uint `json:"created_by_id" gorm:"type:int4"`
AiArticleId *int `json:"ai_article_id" gorm:"type:int4"` AiArticleId *int `json:"ai_article_id" gorm:"type:int4"`
CommentCount *int `json:"comment_count" gorm:"type:int4;default:0"` CommentCount *int `json:"comment_count" gorm:"type:int4;default:0"`
ShareCount *int `json:"share_count" gorm:"type:int4;default:0"` ShareCount *int `json:"share_count" gorm:"type:int4;default:0"`
ViewCount *int `json:"view_count" gorm:"type:int4;default:0"` ViewCount *int `json:"view_count" gorm:"type:int4;default:0"`
StatusId *int `json:"status_id" gorm:"type:int4"` StatusId *int `json:"status_id" gorm:"type:int4"`
OldId *uint `json:"old_id" gorm:"type:int4"` OldId *uint `json:"old_id" gorm:"type:int4"`
NeedApprovalFrom *int `json:"need_approval_from" gorm:"type:int4"` NeedApprovalFrom *int `json:"need_approval_from" gorm:"type:int4"`
HasApprovedBy *string `json:"has_approved_by" gorm:"type:varchar"` HasApprovedBy *string `json:"has_approved_by" gorm:"type:varchar"`
WorkflowId *uint `json:"workflow_id" gorm:"type:int4"` WorkflowId *uint `json:"workflow_id" gorm:"type:int4"`
CurrentApprovalStep *int `json:"current_approval_step" gorm:"type:int4;default:0"` // 0=not submitted, 1+=approval step CurrentApprovalStep *int `json:"current_approval_step" gorm:"type:int4;default:0"` // 0=not submitted, 1+=approval step
// New fields for no-approval support // New fields for no-approval support
BypassApproval *bool `json:"bypass_approval" gorm:"type:bool;default:false"` // true = skip approval process BypassApproval *bool `json:"bypass_approval" gorm:"type:bool;default:false"` // true = skip approval process
ApprovalExempt *bool `json:"approval_exempt" gorm:"type:bool;default:false"` // true = permanently exempt from approval ApprovalExempt *bool `json:"approval_exempt" gorm:"type:bool;default:false"` // true = permanently exempt from approval
IsPublish *bool `json:"is_publish" gorm:"type:bool;default:false"` IsPublish *bool `json:"is_publish" gorm:"type:bool;default:false"`
IsBanner *bool `json:"is_banner" gorm:"type:bool;default:false"` IsBanner *bool `json:"is_banner" gorm:"type:bool;default:false"`
PublishedAt *time.Time `json:"published_at" gorm:"type:timestamp"` PublishedAt *time.Time `json:"published_at" gorm:"type:timestamp"`
IsDraft *bool `json:"is_draft" gorm:"type:bool;default:false"` IsDraft *bool `json:"is_draft" gorm:"type:bool;default:false"`
DraftedAt *time.Time `json:"drafted_at" gorm:"type:timestamp"` DraftedAt *time.Time `json:"drafted_at" gorm:"type:timestamp"`
PublishSchedule *string `json:"publish_schedule" gorm:"type:varchar"` PublishSchedule *string `json:"publish_schedule" gorm:"type:varchar"`
ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"` Source *string `json:"source" gorm:"type:varchar"`
IsActive *bool `json:"is_active" gorm:"type:bool;default:true"` CustomCreatorName *string `json:"custom_creator_name" gorm:"type:varchar"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"` ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"` IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
} }

View File

@ -69,16 +69,20 @@ func (_i *articlesController) All(c *fiber.Ctx) error {
} }
reqContext := request.ArticlesQueryRequestContext{ reqContext := request.ArticlesQueryRequestContext{
Title: c.Query("title"), Title: c.Query("title"),
Description: c.Query("description"), Description: c.Query("description"),
Tags: c.Query("tags"), Tags: c.Query("tags"),
Category: c.Query("category"), Category: c.Query("category"),
CategoryId: c.Query("categoryId"), CategoryId: c.Query("categoryId"),
TypeId: c.Query("typeId"), TypeId: c.Query("typeId"),
StatusId: c.Query("statusId"), StatusId: c.Query("statusId"),
IsPublish: c.Query("isPublish"), IsPublish: c.Query("isPublish"),
IsDraft: c.Query("isDraft"), IsDraft: c.Query("isDraft"),
IsBanner: c.Query("isBanner"), IsBanner: c.Query("isBanner"),
CustomCreatorName: c.Query("customCreatorName"),
Source: c.Query("source"),
StartDate: c.Query("startDate"),
EndDate: c.Query("endDate"),
} }
req := reqContext.ToParamRequest() req := reqContext.ToParamRequest()
req.Pagination = paginate req.Pagination = paginate

View File

@ -1,8 +1,6 @@
package mapper package mapper
import ( import (
"github.com/google/uuid"
"github.com/rs/zerolog"
"web-medols-be/app/database/entity" "web-medols-be/app/database/entity"
articleCategoriesMapper "web-medols-be/app/module/article_categories/mapper" articleCategoriesMapper "web-medols-be/app/module/article_categories/mapper"
articleCategoriesRepository "web-medols-be/app/module/article_categories/repository" articleCategoriesRepository "web-medols-be/app/module/article_categories/repository"
@ -13,6 +11,9 @@ import (
articleFilesResponse "web-medols-be/app/module/article_files/response" articleFilesResponse "web-medols-be/app/module/article_files/response"
res "web-medols-be/app/module/articles/response" res "web-medols-be/app/module/articles/response"
usersRepository "web-medols-be/app/module/users/repository" usersRepository "web-medols-be/app/module/users/repository"
"github.com/google/uuid"
"github.com/rs/zerolog"
) )
func ArticlesResponseMapper( func ArticlesResponseMapper(
@ -76,6 +77,8 @@ func ArticlesResponseMapper(
IsPublish: articlesReq.IsPublish, IsPublish: articlesReq.IsPublish,
PublishedAt: articlesReq.PublishedAt, PublishedAt: articlesReq.PublishedAt,
IsActive: articlesReq.IsActive, IsActive: articlesReq.IsActive,
Source: articlesReq.Source,
CustomCreatorName: articlesReq.CustomCreatorName,
CreatedAt: articlesReq.CreatedAt, CreatedAt: articlesReq.CreatedAt,
UpdatedAt: articlesReq.UpdatedAt, UpdatedAt: articlesReq.UpdatedAt,
ArticleFiles: articleFilesArr, ArticleFiles: articleFilesArr,

View File

@ -140,6 +140,21 @@ func (_i *articlesRepository) GetAll(clientId *uuid.UUID, userLevelId *uint, req
if req.CreatedById != nil { if req.CreatedById != nil {
query = query.Where("articles.created_by_id = ?", req.CreatedById) query = query.Where("articles.created_by_id = ?", req.CreatedById)
} }
if req.Source != nil && *req.Source != "" {
source := strings.ToLower(*req.Source)
query = query.Where("LOWER(articles.source) = ?", strings.ToLower(source))
}
if req.CustomCreatorName != nil && *req.CustomCreatorName != "" {
customCreatorName := strings.ToLower(*req.CustomCreatorName)
query = query.Where("LOWER(articles.custom_creator_name) LIKE ?", "%"+strings.ToLower(customCreatorName)+"%")
}
if req.StartDate != nil {
query = query.Where("DATE(articles.created_at) >= ?", req.StartDate.Format("2006-01-02"))
}
if req.EndDate != nil {
query = query.Where("DATE(articles.created_at) <= ?", req.EndDate.Format("2006-01-02"))
}
// Count total records // Count total records
query.Count(&count) query.Count(&count)

View File

@ -13,112 +13,130 @@ type ArticlesGeneric interface {
} }
type ArticlesQueryRequest struct { type ArticlesQueryRequest struct {
Title *string `json:"title"` Title *string `json:"title"`
Description *string `json:"description"` Description *string `json:"description"`
CategoryId *uint `json:"categoryId"` CategoryId *uint `json:"categoryId"`
Category *string `json:"category"` Category *string `json:"category"`
TypeId *int `json:"typeId"` TypeId *int `json:"typeId"`
Tags *string `json:"tags"` Tags *string `json:"tags"`
CreatedById *int `json:"createdById"` CreatedById *int `json:"createdById"`
StatusId *int `json:"statusId"` StatusId *int `json:"statusId"`
IsBanner *bool `json:"isBanner"` IsBanner *bool `json:"isBanner"`
IsPublish *bool `json:"isPublish"` IsPublish *bool `json:"isPublish"`
IsDraft *bool `json:"isDraft"` IsDraft *bool `json:"isDraft"`
Pagination *paginator.Pagination `json:"pagination"` Source *string `json:"source"`
CustomCreatorName *string `json:"customCreatorName"`
StartDate *time.Time `json:"startDate"`
EndDate *time.Time `json:"endDate"`
Pagination *paginator.Pagination `json:"pagination"`
} }
type ArticlesCreateRequest struct { type ArticlesCreateRequest struct {
Title string `json:"title" validate:"required"` Title string `json:"title" validate:"required"`
Slug string `json:"slug" validate:"required"` Slug string `json:"slug" validate:"required"`
Description string `json:"description" validate:"required"` Description string `json:"description" validate:"required"`
HtmlDescription string `json:"htmlDescription" validate:"required"` HtmlDescription string `json:"htmlDescription" validate:"required"`
CategoryIds string `json:"categoryIds" validate:"required"` CategoryIds string `json:"categoryIds" validate:"required"`
TypeId int `json:"typeId" validate:"required"` TypeId int `json:"typeId" validate:"required"`
Tags string `json:"tags" validate:"required"` Tags string `json:"tags" validate:"required"`
AiArticleId *int `json:"aiArticleId"` AiArticleId *int `json:"aiArticleId"`
CreatedAt *string `json:"createdAt"` CreatedAt *string `json:"createdAt"`
CreatedById *uint `json:"createdById"` CreatedById *uint `json:"createdById"`
IsPublish *bool `json:"isPublish"` IsPublish *bool `json:"isPublish"`
IsDraft *bool `json:"isDraft"` IsDraft *bool `json:"isDraft"`
OldId *uint `json:"oldId"` OldId *uint `json:"oldId"`
Source *string `json:"source"`
CustomCreatorName *string `json:"customCreatorName"`
} }
func (req ArticlesCreateRequest) ToEntity() *entity.Articles { func (req ArticlesCreateRequest) ToEntity() *entity.Articles {
return &entity.Articles{ return &entity.Articles{
Title: req.Title, Title: req.Title,
Slug: req.Slug, Slug: req.Slug,
Description: req.Description, Description: req.Description,
HtmlDescription: req.HtmlDescription, HtmlDescription: req.HtmlDescription,
TypeId: req.TypeId, TypeId: req.TypeId,
Tags: req.Tags, Tags: req.Tags,
AiArticleId: req.AiArticleId, AiArticleId: req.AiArticleId,
IsPublish: req.IsPublish, IsPublish: req.IsPublish,
IsDraft: req.IsDraft, IsDraft: req.IsDraft,
OldId: req.OldId, OldId: req.OldId,
Source: req.Source,
CustomCreatorName: req.CustomCreatorName,
} }
} }
type ArticlesUpdateRequest struct { type ArticlesUpdateRequest struct {
Title string `json:"title" validate:"required"` Title string `json:"title" validate:"required"`
Slug string `json:"slug" validate:"required"` Slug string `json:"slug" validate:"required"`
Description string `json:"description" validate:"required"` Description string `json:"description" validate:"required"`
HtmlDescription string `json:"htmlDescription" validate:"required"` HtmlDescription string `json:"htmlDescription" validate:"required"`
CategoryIds string `json:"categoryIds" validate:"required"` CategoryIds string `json:"categoryIds" validate:"required"`
TypeId int `json:"typeId" validate:"required"` TypeId int `json:"typeId" validate:"required"`
Tags string `json:"tags" validate:"required"` Tags string `json:"tags" validate:"required"`
CreatedAt *string `json:"createdAt"` CreatedAt *string `json:"createdAt"`
CreatedById *uint `json:"createdById"` CreatedById *uint `json:"createdById"`
AiArticleId *int `json:"aiArticleId"` AiArticleId *int `json:"aiArticleId"`
IsPublish *bool `json:"isPublish"` IsPublish *bool `json:"isPublish"`
IsDraft *bool `json:"isDraft"` IsDraft *bool `json:"isDraft"`
StatusId *int `json:"statusId"` StatusId *int `json:"statusId"`
Source *string `json:"source"`
CustomCreatorName *string `json:"customCreatorName"`
} }
func (req ArticlesUpdateRequest) ToEntity() *entity.Articles { func (req ArticlesUpdateRequest) ToEntity() *entity.Articles {
if req.CreatedById == nil { if req.CreatedById == nil {
return &entity.Articles{ return &entity.Articles{
Title: req.Title, Title: req.Title,
Slug: req.Slug, Slug: req.Slug,
Description: req.Description, Description: req.Description,
HtmlDescription: req.HtmlDescription, HtmlDescription: req.HtmlDescription,
TypeId: req.TypeId, TypeId: req.TypeId,
Tags: req.Tags, Tags: req.Tags,
StatusId: req.StatusId, StatusId: req.StatusId,
AiArticleId: req.AiArticleId, AiArticleId: req.AiArticleId,
IsPublish: req.IsPublish, IsPublish: req.IsPublish,
IsDraft: req.IsDraft, IsDraft: req.IsDraft,
UpdatedAt: time.Now(), Source: req.Source,
CustomCreatorName: req.CustomCreatorName,
UpdatedAt: time.Now(),
} }
} else { } else {
return &entity.Articles{ return &entity.Articles{
Title: req.Title, Title: req.Title,
Slug: req.Slug, Slug: req.Slug,
Description: req.Description, Description: req.Description,
HtmlDescription: req.HtmlDescription, HtmlDescription: req.HtmlDescription,
TypeId: req.TypeId, TypeId: req.TypeId,
Tags: req.Tags, Tags: req.Tags,
StatusId: req.StatusId, StatusId: req.StatusId,
CreatedById: req.CreatedById, CreatedById: req.CreatedById,
AiArticleId: req.AiArticleId, AiArticleId: req.AiArticleId,
IsPublish: req.IsPublish, IsPublish: req.IsPublish,
IsDraft: req.IsDraft, IsDraft: req.IsDraft,
UpdatedAt: time.Now(), Source: req.Source,
CustomCreatorName: req.CustomCreatorName,
UpdatedAt: time.Now(),
} }
} }
} }
type ArticlesQueryRequestContext struct { type ArticlesQueryRequestContext struct {
Title string `json:"title"` Title string `json:"title"`
Description string `json:"description"` Description string `json:"description"`
CategoryId string `json:"categoryId"` CategoryId string `json:"categoryId"`
Category string `json:"category"` Category string `json:"category"`
TypeId string `json:"typeId"` TypeId string `json:"typeId"`
Tags string `json:"tags"` Tags string `json:"tags"`
CreatedById string `json:"createdById"` CreatedById string `json:"createdById"`
IsBanner string `json:"isBanner"` IsBanner string `json:"isBanner"`
IsPublish string `json:"isPublish"` IsPublish string `json:"isPublish"`
IsDraft string `json:"isDraft"` IsDraft string `json:"isDraft"`
StatusId string `json:"statusId"` StatusId string `json:"statusId"`
Source string `json:"source"`
CustomCreatorName string `json:"customCreatorName"`
StartDate string `json:"startDate"`
EndDate string `json:"endDate"`
} }
func (req ArticlesQueryRequestContext) ToParamRequest() ArticlesQueryRequest { func (req ArticlesQueryRequestContext) ToParamRequest() ArticlesQueryRequest {
@ -179,13 +197,29 @@ func (req ArticlesQueryRequestContext) ToParamRequest() ArticlesQueryRequest {
request.CreatedById = &createdById request.CreatedById = &createdById
} }
} }
if source := req.Source; source != "" {
request.Source = &source
}
if customCreatorName := req.CustomCreatorName; customCreatorName != "" {
request.CustomCreatorName = &customCreatorName
}
if startDateStr := req.StartDate; startDateStr != "" {
if startDate, err := time.Parse("2006-01-02", startDateStr); err == nil {
request.StartDate = &startDate
}
}
if endDateStr := req.EndDate; endDateStr != "" {
if endDate, err := time.Parse("2006-01-02", endDateStr); err == nil {
request.EndDate = &endDate
}
}
return request return request
} }
// SubmitForApprovalRequest represents the request for submitting an article for approval // SubmitForApprovalRequest represents the request for submitting an article for approval
type SubmitForApprovalRequest struct { type SubmitForApprovalRequest struct {
WorkflowId *uint `json:"workflow_id" validate:"omitempty,min=1"` WorkflowId *uint `json:"workflow_id" validate:"omitempty,min=1"`
Message *string `json:"message" validate:"omitempty,max=500"` Message *string `json:"message" validate:"omitempty,max=500"`
} }

View File

@ -7,31 +7,33 @@ import (
) )
type ArticlesResponse struct { type ArticlesResponse struct {
ID uint `json:"id"` ID uint `json:"id"`
Title string `json:"title"` Title string `json:"title"`
Slug string `json:"slug"` Slug string `json:"slug"`
Description string `json:"description"` Description string `json:"description"`
HtmlDescription string `json:"htmlDescription"` HtmlDescription string `json:"htmlDescription"`
CategoryId int `json:"categoryId"` CategoryId int `json:"categoryId"`
CategoryName string `json:"categoryName"` CategoryName string `json:"categoryName"`
TypeId int `json:"typeId"` TypeId int `json:"typeId"`
Tags string `json:"tags"` Tags string `json:"tags"`
ThumbnailUrl string `json:"thumbnailUrl"` ThumbnailUrl string `json:"thumbnailUrl"`
PageUrl *string `json:"pageUrl"` PageUrl *string `json:"pageUrl"`
CreatedById *uint `json:"createdById"` CreatedById *uint `json:"createdById"`
CreatedByName *string `json:"createdByName"` CreatedByName *string `json:"createdByName"`
ShareCount *int `json:"shareCount"` ShareCount *int `json:"shareCount"`
ViewCount *int `json:"viewCount"` ViewCount *int `json:"viewCount"`
CommentCount *int `json:"commentCount"` CommentCount *int `json:"commentCount"`
AiArticleId *int `json:"aiArticleId"` AiArticleId *int `json:"aiArticleId"`
OldId *uint `json:"oldId"` OldId *uint `json:"oldId"`
StatusId *int `json:"statusId"` StatusId *int `json:"statusId"`
IsBanner *bool `json:"isBanner"` IsBanner *bool `json:"isBanner"`
IsPublish *bool `json:"isPublish"` IsPublish *bool `json:"isPublish"`
PublishedAt *time.Time `json:"publishedAt"` PublishedAt *time.Time `json:"publishedAt"`
IsActive *bool `json:"isActive"` IsActive *bool `json:"isActive"`
CreatedAt time.Time `json:"createdAt"` Source *string `json:"source"`
UpdatedAt time.Time `json:"updatedAt"` CustomCreatorName *string `json:"customCreatorName"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
ArticleFiles []*articleFilesResponse.ArticleFilesResponse `json:"files"` ArticleFiles []*articleFilesResponse.ArticleFilesResponse `json:"files"`
ArticleCategories []*articleCategoriesResponse.ArticleCategoriesResponse `json:"categories"` ArticleCategories []*articleCategoriesResponse.ArticleCategoriesResponse `json:"categories"`

View File

@ -6839,11 +6839,21 @@ const docTemplate = `{
"name": "createdById", "name": "createdById",
"in": "query" "in": "query"
}, },
{
"type": "string",
"name": "customCreatorName",
"in": "query"
},
{ {
"type": "string", "type": "string",
"name": "description", "name": "description",
"in": "query" "in": "query"
}, },
{
"type": "string",
"name": "endDate",
"in": "query"
},
{ {
"type": "boolean", "type": "boolean",
"name": "isBanner", "name": "isBanner",
@ -6859,6 +6869,16 @@ const docTemplate = `{
"name": "isPublish", "name": "isPublish",
"in": "query" "in": "query"
}, },
{
"type": "string",
"name": "source",
"in": "query"
},
{
"type": "string",
"name": "startDate",
"in": "query"
},
{ {
"type": "integer", "type": "integer",
"name": "statusId", "name": "statusId",
@ -16591,6 +16611,9 @@ const docTemplate = `{
"createdById": { "createdById": {
"type": "integer" "type": "integer"
}, },
"customCreatorName": {
"type": "string"
},
"description": { "description": {
"type": "string" "type": "string"
}, },
@ -16609,6 +16632,9 @@ const docTemplate = `{
"slug": { "slug": {
"type": "string" "type": "string"
}, },
"source": {
"type": "string"
},
"tags": { "tags": {
"type": "string" "type": "string"
}, },
@ -16644,6 +16670,9 @@ const docTemplate = `{
"createdById": { "createdById": {
"type": "integer" "type": "integer"
}, },
"customCreatorName": {
"type": "string"
},
"description": { "description": {
"type": "string" "type": "string"
}, },
@ -16659,6 +16688,9 @@ const docTemplate = `{
"slug": { "slug": {
"type": "string" "type": "string"
}, },
"source": {
"type": "string"
},
"statusId": { "statusId": {
"type": "integer" "type": "integer"
}, },

View File

@ -6828,11 +6828,21 @@
"name": "createdById", "name": "createdById",
"in": "query" "in": "query"
}, },
{
"type": "string",
"name": "customCreatorName",
"in": "query"
},
{ {
"type": "string", "type": "string",
"name": "description", "name": "description",
"in": "query" "in": "query"
}, },
{
"type": "string",
"name": "endDate",
"in": "query"
},
{ {
"type": "boolean", "type": "boolean",
"name": "isBanner", "name": "isBanner",
@ -6848,6 +6858,16 @@
"name": "isPublish", "name": "isPublish",
"in": "query" "in": "query"
}, },
{
"type": "string",
"name": "source",
"in": "query"
},
{
"type": "string",
"name": "startDate",
"in": "query"
},
{ {
"type": "integer", "type": "integer",
"name": "statusId", "name": "statusId",
@ -16580,6 +16600,9 @@
"createdById": { "createdById": {
"type": "integer" "type": "integer"
}, },
"customCreatorName": {
"type": "string"
},
"description": { "description": {
"type": "string" "type": "string"
}, },
@ -16598,6 +16621,9 @@
"slug": { "slug": {
"type": "string" "type": "string"
}, },
"source": {
"type": "string"
},
"tags": { "tags": {
"type": "string" "type": "string"
}, },
@ -16633,6 +16659,9 @@
"createdById": { "createdById": {
"type": "integer" "type": "integer"
}, },
"customCreatorName": {
"type": "string"
},
"description": { "description": {
"type": "string" "type": "string"
}, },
@ -16648,6 +16677,9 @@
"slug": { "slug": {
"type": "string" "type": "string"
}, },
"source": {
"type": "string"
},
"statusId": { "statusId": {
"type": "integer" "type": "integer"
}, },

View File

@ -465,6 +465,8 @@ definitions:
type: string type: string
createdById: createdById:
type: integer type: integer
customCreatorName:
type: string
description: description:
type: string type: string
htmlDescription: htmlDescription:
@ -477,6 +479,8 @@ definitions:
type: integer type: integer
slug: slug:
type: string type: string
source:
type: string
tags: tags:
type: string type: string
title: title:
@ -502,6 +506,8 @@ definitions:
type: string type: string
createdById: createdById:
type: integer type: integer
customCreatorName:
type: string
description: description:
type: string type: string
htmlDescription: htmlDescription:
@ -512,6 +518,8 @@ definitions:
type: boolean type: boolean
slug: slug:
type: string type: string
source:
type: string
statusId: statusId:
type: integer type: integer
tags: tags:
@ -5814,9 +5822,15 @@ paths:
- in: query - in: query
name: createdById name: createdById
type: integer type: integer
- in: query
name: customCreatorName
type: string
- in: query - in: query
name: description name: description
type: string type: string
- in: query
name: endDate
type: string
- in: query - in: query
name: isBanner name: isBanner
type: boolean type: boolean
@ -5826,6 +5840,12 @@ paths:
- in: query - in: query
name: isPublish name: isPublish
type: boolean type: boolean
- in: query
name: source
type: string
- in: query
name: startDate
type: string
- in: query - in: query
name: statusId name: statusId
type: integer type: integer