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 isDeleted est 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 Binary

Upload One media

// POST /bo/medias (File multipart) -> 201 FileMediaAdmin

Delete One media

// DELETE /bo/medias/:id -> 204

Tags

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 -> 204

Listing

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 OR au sein d'une même catégorie de tags, puis un AND entre 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 -> 204

Ce 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.