BO
Principes
- Les documents sont peu nombreux, donc le endpoint retourne tous les documents sans le contenu.
- Le filtrage et recherche sont effectués sur le BO.
- Un filtrage sur
isDeletedest appliqué sur le BO, par défaut on affiche les documents non supprimés.
Types généraux
enum DocumentType {
PDF
LINK
MARKDOWN
HTML
}FileMedia
Endpoints API
GET One media
// GET /bo/medias/:id -> FileMediaAdmin
interface FileMediaAdmin {
id: string
name: string
mimeType: string
size: number
createdAt: Date
updatedAt: Date
}// GET /bo/medias -> 200 Binary// GET /bo/medias/:id/download -> 200 BinaryUpload One media
// POST /bo/medias (File multipart) -> 201 FileMediaAdminDelete One media
// DELETE /bo/medias/:id -> 204Tags
Endpoints API
GET All tags
// GET /bo/tags-categories -> 200 TagCategoryAdmin[]
interface TagCategoryAdmin {
id: string
name: string
tags: TagAdmin[]
createdAt: Date
updatedAt: Date
}
interface TagAdmin {
id: string
name: string
categoryId: string
createdAt: Date
updatedAt: Date
}Create Tags and categories
// POST /bo/tags-categories (TagCategoryCreate) -> 201 TagCategoryAdmin
interface TagCategoryCreate {
id: string
name: string
}// POST /bo/tags (TagCreate) -> 201 TagAdmin
interface TagCreate {
id: string
name: string
categoryId: string
}Edit Tags and categories
// PATCH /bo/tags-categories/:id (TagCategoryUpdate) -> 200 TagCategoryAdmin
interface TagCategoryCreate {
name: string
}// PATCH /bo/tags/:id (TagUpdate) -> 200 TagAdmin
interface TagCreate {
name: string
}Delete Tags and categories
// DELETE /bo/tags-categories/:id -> 204// DELETE /bo/tags/:id -> 204Listing
Endpoints API
GET All Documents
// GET /bo/documents -> 200 DocumentAdminShort[]
interface DocumentAdminShort {
id: string
title: string
type: DocumentType
url: string?
tagsIds: string[]
createdAt: Date
updatedAt: Date
}Règles de gestion
- Le BO récupère tous les documents.
- Le filtrage par tags est réalisé localement et plusieurs tags peuvent être mixés.
- Le filtrage est appliqué avec un
ORau sein d'une même catégorie de tags, puis unANDentre les catégories. - Le filtrage par recherche libre est effectué sur le titre et le nom des tags.
Detail
Endpoints API
Create Document
// POST /bo/documents (DocumentCreate) -> 201 DocumentAdmin
interface DocumentCreate {
title: string
tagsIds: string[]
}
interface DocumentCreatePDF extends DocumentCreate {
type: PDF
fileId: string
}
interface DocumentCreateLink extends DocumentCreate {
type: LINK
url: string
}
interface DocumentCreateContent extends DocumentCreate {
type: MARKDOWN | HTML
content: string
sources: string[]
imagesIds: string[]
}Update Document
// PATCH /bo/documents/:id (DocumentUpdate) -> 200 DocumentAdmin
interface DocumentUpdate {
title: string
tagsIds: string[]
}
interface DocumentUpdatePDF extends DocumentUpdate {
type: PDF
fileId: string
}
interface DocumentUpdateLink extends DocumentUpdate {
type: LINK
url: string
}
interface DocumentUpdateContent extends DocumentUpdate {
type: MARKDOWN | HTML
content: string
sources: string[]
imagesIds: string[]
}Delete Document
// DELETE /bo/documents/:id -> 204Ce endpoint change la valeur de isDeleted à true.
GET Document Detail
// GET /bo/documents/:id/detail -> DocumentAdmin
type DocumentAdmin {
id: string
title: string
type: DocumentType
url: string?
tagsIds: string[]
content: string?
sources: string[]
file?: { id: string, name: string }
createdAt: Date
updatedAt: Date
}GET Document File
Appel la route publique de téléchargement
Règles de gestion
- Le type de document ne peut pas être changé après création.