openapi: 3.0.3
info:
title: 'E-JUSTICE API Documentation'
description: 'API de la plateforme nationale E-JUSTICE (RDC) : demande de documents officiels, paiement électronique et suivi des demandes.'
version: 1.0.0
servers:
-
url: 'https://e-justice-api.kodinet.cd'
tags:
-
name: Auth
description: 'Inscription, connexion et gestion du mot de passe.'
-
name: Account
description: "Compte et profil de l'utilisateur connecté."
-
name: Localisation
description: 'Référentiel géographique RDC : consultation (tous) et administration (admin).'
-
name: Documents
description: 'Catalogue des documents officiels et de leurs pièces requises.'
-
name: Applications
description: 'Ouverture, suivi et soumission des demandes du citoyen.'
-
name: Workflow
description: 'Traitement institutionnel des demandes par les organismes.'
-
name: Payments
description: 'Paiement des frais du document via KODIPAY.'
-
name: Signature
description: "Signature électronique du certificat par l'autorité (signNow)."
-
name: Certificates
description: 'Récupération du certificat signé par le citoyen.'
-
name: Verification
description: "Vérification publique de l'authenticité d'un certificat (QR)."
-
name: Administration
description: 'Actions des agents au guichet, pour le compte des citoyens.'
-
name: Dashboard
description: 'Statistiques agrégées du tableau de bord administratif.'
-
name: 'Encaissement guichet'
description: 'Règlement des frais en espèces au comptoir.'
-
name: Endpoints
description: ''
-
name: 'Personnes morales'
description: "Gestion des fiches d'identification des personnes morales."
components:
securitySchemes:
default:
type: http
scheme: bearer
description: "Obtenez un jeton via POST /api/v1/auth/login puis la vérification OTP. Envoyez-le dans l'en-tête Authorization: Bearer {token}."
security:
-
default: []
paths:
/api/v1/auth/register:
post:
summary: 'Inscrire un citoyen'
operationId: inscrireUnCitoyen
description: ''
parameters: []
responses: { }
tags:
- Auth
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
country_code:
type: string
description: 'Le texte de value ne peut pas contenir plus de 5 caractères.'
example: 'n'
phone_number:
type: string
description: 'Le texte de value ne peut pas contenir plus de 20 caractères.'
example: gzmiyvdljnikhway
email:
type: string
description: 'Le champ value doit être une adresse e-mail valide. Le texte de value ne peut pas contenir plus de 255 caractères.'
example: gilbert32@example.com
nullable: true
password:
type: string
description: 'Mot de passe. Au moins 8 caractères.'
example: Motdepasse1
password_confirmation:
type: string
description: 'Confirmation du mot de passe ; doit être identique à « password ».'
example: Motdepasse1
required:
- name
- country_code
- phone_number
- password
- password_confirmation
security: []
/api/v1/auth/verify:
post:
summary: 'Vérifier le compte avec le code OTP'
operationId: vrifierLeCompteAvecLeCodeOTP
description: ''
parameters: []
responses: { }
tags:
- Auth
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
identifier:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
code:
type: string
description: 'Le texte de value doit contenir 6 caractères.'
example: ngzmiy
required:
- identifier
- code
security: []
/api/v1/auth/resend:
post:
summary: 'Renvoyer le code de vérification'
operationId: renvoyerLeCodeDeVrification
description: ''
parameters: []
responses: { }
tags:
- Auth
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
identifier:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- identifier
security: []
/api/v1/auth/login:
post:
summary: 'Se connecter'
operationId: seConnecter
description: ''
parameters: []
responses: { }
tags:
- Auth
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
identifier:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
password:
type: string
description: ''
example: '|]|{+-'
device_name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: v
nullable: true
required:
- identifier
- password
security: []
/api/v1/auth/logout:
post:
summary: 'Se déconnecter'
operationId: seDconnecter
description: ''
parameters: []
responses: { }
tags:
- Auth
/api/v1/auth/password/forgot:
post:
summary: 'Demander un code de réinitialisation'
operationId: demanderUnCodeDeRinitialisation
description: ''
parameters: []
responses: { }
tags:
- Auth
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
identifier:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- identifier
security: []
/api/v1/auth/password/reset:
post:
summary: 'Réinitialiser le mot de passe'
operationId: rinitialiserLeMotDePasse
description: ''
parameters: []
responses: { }
tags:
- Auth
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
identifier:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
code:
type: string
description: 'Le texte de value doit contenir 6 caractères.'
example: ngzmiy
password:
type: string
description: 'Mot de passe. Au moins 8 caractères.'
example: Motdepasse1
password_confirmation:
type: string
description: 'Confirmation du mot de passe ; doit être identique à « password ».'
example: Motdepasse1
required:
- identifier
- code
- password
- password_confirmation
security: []
/api/v1/auth/password/change:
post:
summary: 'Changer le mot de passe'
operationId: changerLeMotDePasse
description: ''
parameters: []
responses: { }
tags:
- Auth
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
current_password:
type: string
description: ''
example: architecto
password:
type: string
description: 'Mot de passe. Au moins 8 caractères.'
example: Motdepasse1
password_confirmation:
type: string
description: 'Confirmation du mot de passe ; doit être identique à « password ».'
example: Motdepasse1
required:
- current_password
- password
- password_confirmation
/api/v1/user:
get:
summary: "Profil de l'utilisateur connecté"
operationId: profilDeLutilisateurConnect
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Account
/api/v1/account:
delete:
summary: 'Supprimer son compte (mot de passe requis)'
operationId: supprimerSonComptemotDePasseRequis
description: ''
parameters: []
responses: { }
tags:
- Account
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
password:
type: string
description: 'Mot de passe actuel, pour confirmer la suppression du compte.'
example: Motdepasse1
required:
- password
/api/v1/citizen:
get:
summary: 'Consulter mon profil citoyen'
operationId: consulterMonProfilCitoyen
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Account
put:
summary: 'Créer ou mettre à jour mon profil citoyen'
operationId: crerOuMettreJourMonProfilCitoyen
description: ''
parameters: []
responses: { }
tags:
- Account
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
last_name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
post_name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
first_name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: g
birth_date:
type: string
description: "Le champ value n'est pas une date valide. Le champ value doit être une date antérieure au today."
example: '2022-09-13'
birth_place:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
father_name:
type: string
description: 'Nom complet du père. Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'Mwamba Faraja Adolphe'
nullable: true
father_nationality:
type: string
description: 'Nationalité du père. Le texte de value ne peut pas contenir plus de 255 caractères.'
example: Congolaise
nullable: true
mother_name:
type: string
description: 'Nom complet de la mère. Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'Albertine Amani Emilie'
nullable: true
mother_nationality:
type: string
description: 'Nationalité de la mère. Le texte de value ne peut pas contenir plus de 255 caractères.'
example: Congolaise
nullable: true
tribe:
type: string
description: 'Tribu d’origine du requérant. Le texte de value ne peut pas contenir plus de 255 caractères.'
example: Luba
nullable: true
photo:
type: string
format: binary
description: 'Le champ value doit être une image. La taille du fichier de value ne peut pas dépasser 4096 kilo-octets.'
nullable: true
gender:
type: string
description: ''
example: female
enum:
- male
- female
nullable: true
marital_status:
type: string
description: ''
example: married
enum:
- single
- married
- divorced
- widowed
nullable: true
nationality:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: g
nullable: true
profession:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: z
nullable: true
national_id:
type: string
description: 'Numéro national d’identité de la personne (identifiant national). Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 01-90-06-15-12345-67
nullable: true
identity_document_type:
type: string
description: 'Type de pièce d’identité présentée (carte d’électeur, passeport, permis de conduire…). Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'Carte d’électeur'
nullable: true
identity_document_number:
type: string
description: 'Numéro de la pièce d’identité présentée. Le texte de value ne peut pas contenir plus de 255 caractères.'
example: CD-2020-0123456
nullable: true
province_origin_id:
type: string
description: 'Must match an existing stored value.'
example: architecto
territory_origin_id:
type: string
description: 'Must match an existing stored value.'
example: architecto
village_origin:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
chiefdom_origin:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: g
nullable: true
collectivity_origin:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: z
nullable: true
groupement_origin:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: m
nullable: true
province_address_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
city_address:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: i
nullable: true
municipality_address:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'y'
nullable: true
quarter_address:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: v
nullable: true
avenue_address:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: d
nullable: true
house_number:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: l
nullable: true
required:
- last_name
- post_name
- first_name
- birth_date
- birth_place
- province_origin_id
- territory_origin_id
- village_origin
/api/v1/citizen/photo:
post:
summary: 'Mettre à jour ma photo de profil'
operationId: mettreJourMaPhotoDeProfil
description: ''
parameters: []
responses: { }
tags:
- Account
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
photo:
type: string
format: binary
description: 'Le champ value doit être une image. La taille du fichier de value ne peut pas dépasser 4096 kilo-octets.'
required:
- photo
/api/v1/countries:
get:
summary: 'Lister les pays'
operationId: listerLesPays
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Localisation
post:
summary: 'Créer Pays'
operationId: crerPays
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- name
'/api/v1/countries/{id}':
get:
summary: 'Afficher Pays'
operationId: afficherPays
description: ''
parameters: []
responses:
404:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'The route api/v1/countries/architecto could not be found.'
properties:
message:
type: string
example: 'The route api/v1/countries/architecto could not be found.'
tags:
- Localisation
put:
summary: 'Mettre à jour Pays'
operationId: mettreJourPays
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- name
delete:
summary: 'Supprimer Pays'
operationId: supprimerPays
description: ''
parameters: []
responses: { }
tags:
- Localisation
parameters:
-
in: path
name: id
description: 'The ID of the country.'
example: architecto
required: true
schema:
type: string
/api/v1/provinces:
get:
summary: 'Lister les provinces'
operationId: listerLesProvinces
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Localisation
post:
summary: 'Créer Province'
operationId: crerProvince
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
country_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
postal_code:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
nullable: true
required:
- name
'/api/v1/provinces/{id}':
get:
summary: 'Afficher Province'
operationId: afficherProvince
description: ''
parameters: []
responses:
404:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'The route api/v1/provinces/architecto could not be found.'
properties:
message:
type: string
example: 'The route api/v1/provinces/architecto could not be found.'
tags:
- Localisation
put:
summary: 'Mettre à jour Province'
operationId: mettreJourProvince
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
country_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
postal_code:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
nullable: true
required:
- name
delete:
summary: 'Supprimer Province'
operationId: supprimerProvince
description: ''
parameters: []
responses: { }
tags:
- Localisation
parameters:
-
in: path
name: id
description: 'The ID of the province.'
example: architecto
required: true
schema:
type: string
/api/v1/territories:
get:
summary: 'Lister les territoires'
operationId: listerLesTerritoires
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Localisation
post:
summary: 'Créer Territoire'
operationId: crerTerritoire
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
province_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
postal_code:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
nullable: true
required:
- name
'/api/v1/territories/{id}':
get:
summary: 'Afficher Territoire'
operationId: afficherTerritoire
description: ''
parameters: []
responses:
404:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'The route api/v1/territories/architecto could not be found.'
properties:
message:
type: string
example: 'The route api/v1/territories/architecto could not be found.'
tags:
- Localisation
put:
summary: 'Mettre à jour Territoire'
operationId: mettreJourTerritoire
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
province_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
postal_code:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
nullable: true
required:
- name
delete:
summary: 'Supprimer Territoire'
operationId: supprimerTerritoire
description: ''
parameters: []
responses: { }
tags:
- Localisation
parameters:
-
in: path
name: id
description: 'The ID of the territory.'
example: architecto
required: true
schema:
type: string
/api/v1/chiefdoms:
get:
summary: 'Lister les chefferies'
operationId: listerLesChefferies
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Localisation
post:
summary: 'Créer Chefferie'
operationId: crerChefferie
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
territory_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- name
'/api/v1/chiefdoms/{id}':
get:
summary: 'Afficher Chefferie'
operationId: afficherChefferie
description: ''
parameters: []
responses:
404:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'The route api/v1/chiefdoms/architecto could not be found.'
properties:
message:
type: string
example: 'The route api/v1/chiefdoms/architecto could not be found.'
tags:
- Localisation
put:
summary: 'Mettre à jour Chefferie'
operationId: mettreJourChefferie
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
territory_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- name
delete:
summary: 'Supprimer Chefferie'
operationId: supprimerChefferie
description: ''
parameters: []
responses: { }
tags:
- Localisation
parameters:
-
in: path
name: id
description: 'The ID of the chiefdom.'
example: architecto
required: true
schema:
type: string
/api/v1/collectivities:
get:
summary: 'Lister les collectivités'
operationId: listerLesCollectivits
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Localisation
post:
summary: 'Créer Collectivité'
operationId: crerCollectivit
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
chiefdom_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- name
'/api/v1/collectivities/{id}':
get:
summary: 'Afficher Collectivité'
operationId: afficherCollectivit
description: ''
parameters: []
responses:
404:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'The route api/v1/collectivities/architecto could not be found.'
properties:
message:
type: string
example: 'The route api/v1/collectivities/architecto could not be found.'
tags:
- Localisation
put:
summary: 'Mettre à jour Collectivité'
operationId: mettreJourCollectivit
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
chiefdom_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- name
delete:
summary: 'Supprimer Collectivité'
operationId: supprimerCollectivit
description: ''
parameters: []
responses: { }
tags:
- Localisation
parameters:
-
in: path
name: id
description: 'The ID of the collectivity.'
example: architecto
required: true
schema:
type: string
/api/v1/groupements:
get:
summary: 'Lister les groupements'
operationId: listerLesGroupements
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Localisation
post:
summary: 'Créer Groupement'
operationId: crerGroupement
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
collectivity_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- name
'/api/v1/groupements/{id}':
get:
summary: 'Afficher Groupement'
operationId: afficherGroupement
description: ''
parameters: []
responses:
404:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'The route api/v1/groupements/architecto could not be found.'
properties:
message:
type: string
example: 'The route api/v1/groupements/architecto could not be found.'
tags:
- Localisation
put:
summary: 'Mettre à jour Groupement'
operationId: mettreJourGroupement
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
collectivity_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- name
delete:
summary: 'Supprimer Groupement'
operationId: supprimerGroupement
description: ''
parameters: []
responses: { }
tags:
- Localisation
parameters:
-
in: path
name: id
description: 'The ID of the groupement.'
example: architecto
required: true
schema:
type: string
/api/v1/villages:
get:
summary: 'Lister les villages'
operationId: listerLesVillages
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Localisation
post:
summary: 'Créer Village'
operationId: crerVillage
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
groupement_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- name
'/api/v1/villages/{id}':
get:
summary: 'Afficher Village'
operationId: afficherVillage
description: ''
parameters: []
responses:
404:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'The route api/v1/villages/architecto could not be found.'
properties:
message:
type: string
example: 'The route api/v1/villages/architecto could not be found.'
tags:
- Localisation
put:
summary: 'Mettre à jour Village'
operationId: mettreJourVillage
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
groupement_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- name
delete:
summary: 'Supprimer Village'
operationId: supprimerVillage
description: ''
parameters: []
responses: { }
tags:
- Localisation
parameters:
-
in: path
name: id
description: 'The ID of the village.'
example: architecto
required: true
schema:
type: string
/api/v1/cities:
get:
summary: 'Lister les villes'
operationId: listerLesVilles
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Localisation
post:
summary: 'Créer Ville'
operationId: crerVille
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
province_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
postal_code:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
nullable: true
required:
- name
'/api/v1/cities/{id}':
get:
summary: 'Afficher Ville'
operationId: afficherVille
description: ''
parameters: []
responses:
404:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'The route api/v1/cities/architecto could not be found.'
properties:
message:
type: string
example: 'The route api/v1/cities/architecto could not be found.'
tags:
- Localisation
put:
summary: 'Mettre à jour Ville'
operationId: mettreJourVille
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
province_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
postal_code:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
nullable: true
required:
- name
delete:
summary: 'Supprimer Ville'
operationId: supprimerVille
description: ''
parameters: []
responses: { }
tags:
- Localisation
parameters:
-
in: path
name: id
description: 'The ID of the city.'
example: architecto
required: true
schema:
type: string
/api/v1/municipalities:
get:
summary: 'Lister les communes'
operationId: listerLesCommunes
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Localisation
post:
summary: 'Créer Commune'
operationId: crerCommune
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
city_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- name
'/api/v1/municipalities/{id}':
get:
summary: 'Afficher Commune'
operationId: afficherCommune
description: ''
parameters: []
responses:
404:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'The route api/v1/municipalities/architecto could not be found.'
properties:
message:
type: string
example: 'The route api/v1/municipalities/architecto could not be found.'
tags:
- Localisation
put:
summary: 'Mettre à jour Commune'
operationId: mettreJourCommune
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
city_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- name
delete:
summary: 'Supprimer Commune'
operationId: supprimerCommune
description: ''
parameters: []
responses: { }
tags:
- Localisation
parameters:
-
in: path
name: id
description: 'The ID of the municipality.'
example: architecto
required: true
schema:
type: string
/api/v1/quarters:
get:
summary: 'Lister les quartiers'
operationId: listerLesQuartiers
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Localisation
post:
summary: 'Créer Quartier'
operationId: crerQuartier
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
municipality_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- name
'/api/v1/quarters/{id}':
get:
summary: 'Afficher Quartier'
operationId: afficherQuartier
description: ''
parameters: []
responses:
404:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'The route api/v1/quarters/architecto could not be found.'
properties:
message:
type: string
example: 'The route api/v1/quarters/architecto could not be found.'
tags:
- Localisation
put:
summary: 'Mettre à jour Quartier'
operationId: mettreJourQuartier
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
municipality_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- name
delete:
summary: 'Supprimer Quartier'
operationId: supprimerQuartier
description: ''
parameters: []
responses: { }
tags:
- Localisation
parameters:
-
in: path
name: id
description: 'The ID of the quarter.'
example: architecto
required: true
schema:
type: string
/api/v1/avenues:
get:
summary: 'Lister les avenues'
operationId: listerLesAvenues
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Localisation
post:
summary: 'Créer Avenue'
operationId: crerAvenue
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
quarter_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- name
'/api/v1/avenues/{id}':
get:
summary: 'Afficher Avenue'
operationId: afficherAvenue
description: ''
parameters: []
responses:
404:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'The route api/v1/avenues/architecto could not be found.'
properties:
message:
type: string
example: 'The route api/v1/avenues/architecto could not be found.'
tags:
- Localisation
put:
summary: 'Mettre à jour Avenue'
operationId: mettreJourAvenue
description: ''
parameters: []
responses: { }
tags:
- Localisation
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
quarter_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- name
delete:
summary: 'Supprimer Avenue'
operationId: supprimerAvenue
description: ''
parameters: []
responses: { }
tags:
- Localisation
parameters:
-
in: path
name: id
description: 'The ID of the avenue.'
example: architecto
required: true
schema:
type: string
/api/v1/document-types:
get:
summary: 'Lister le catalogue'
operationId: listerLeCatalogue
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Documents
'/api/v1/document-types/{documentType_key}':
get:
summary: "Détails d'un type de document"
operationId: dtailsDunTypeDeDocument
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Documents
parameters:
-
in: path
name: documentType_key
description: ''
example: attestation_of_non_nationality
required: true
schema:
type: string
-
in: path
name: documentType
description: 'Clé du type de document.'
example: certificate_of_nationality
required: true
schema:
type: string
/api/v1/applications:
get:
summary: 'Lister les demandes (filtrable, paginée)'
operationId: listerLesDemandesfiltrablePagine
description: ''
parameters:
-
in: query
name: 'filter[status]'
description: 'Filtrer par statut.'
example: under_review
required: false
schema:
type: string
description: 'Filtrer par statut.'
example: under_review
-
in: query
name: 'filter[current_stage]'
description: 'Filtrer par étape courante.'
example: anr
required: false
schema:
type: string
description: 'Filtrer par étape courante.'
example: anr
-
in: query
name: 'filter[document_type]'
description: 'Filtrer par clé de type de document.'
example: certificate_of_nationality
required: false
schema:
type: string
description: 'Filtrer par clé de type de document.'
example: certificate_of_nationality
-
in: query
name: 'filter[reference]'
description: 'Filtrer par référence (partiel).'
example: EJ-CN-2026
required: false
schema:
type: string
description: 'Filtrer par référence (partiel).'
example: EJ-CN-2026
-
in: query
name: 'filter[applicant]'
description: 'Filtrer par nom/prénom du requérant.'
example: Yannick
required: false
schema:
type: string
description: 'Filtrer par nom/prénom du requérant.'
example: Yannick
-
in: query
name: sort
description: 'Tri : created_at, submitted_at, status, current_stage (préfixe - pour desc).'
example: '-created_at'
required: false
schema:
type: string
description: 'Tri : created_at, submitted_at, status, current_stage (préfixe - pour desc).'
example: '-created_at'
-
in: query
name: per_page
description: 'Nombre par page (1-100).'
example: 20
required: false
schema:
type: integer
description: 'Nombre par page (1-100).'
example: 20
-
in: query
name: page
description: 'Numéro de page.'
example: 1
required: false
schema:
type: integer
description: 'Numéro de page.'
example: 1
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Applications
post:
summary: 'Ouvrir une demande (brouillon)'
operationId: ouvrirUneDemandebrouillon
description: ''
parameters: []
responses: { }
tags:
- Applications
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
document_type_key:
type: string
description: ''
example: deed_deposit_certificate
enum:
- certificate_of_nationality
- attestation_of_non_nationality
- birth_certificate
- criminal_record
- certificate_of_non_appeal
- deed_deposit_certificate
reason:
type: string
description: 'Motif de la demande de certificat. Le texte de value ne peut pas contenir plus de 1000 caractères.'
example: 'Obtention d’un passeport'
nullable: true
required:
- document_type_key
parameters:
-
in: path
name: application
description: 'Référence de la demande.'
example: EJ-CN-2026-00000001
required: true
schema:
type: string
'/api/v1/applications/{application_reference}':
get:
summary: "Détail et suivi d'une demande"
operationId: dtailEtSuiviDuneDemande
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Applications
parameters:
-
in: path
name: application_reference
description: ''
example: EJ-AN-2026-00000001
required: true
schema:
type: string
-
in: path
name: application
description: 'Référence de la demande.'
example: EJ-CN-2026-00000001
required: true
schema:
type: string
'/api/v1/applications/{application_reference}/attachments':
post:
summary: 'Joindre une pièce justificative'
operationId: joindreUnePiceJustificative
description: ''
parameters: []
responses: { }
tags:
- Applications
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
attachment_type:
type: string
description: ''
example: parents_id
enum:
- birth_certificate
- applicant_id
- parents_id
- residence_proof
file:
type: string
format: binary
description: 'Must be a file. La taille du fichier de value ne peut pas dépasser 10240 kilo-octets.'
required:
- attachment_type
- file
parameters:
-
in: path
name: application_reference
description: ''
example: EJ-AN-2026-00000001
required: true
schema:
type: string
-
in: path
name: application
description: 'Référence de la demande.'
example: EJ-CN-2026-00000001
required: true
schema:
type: string
'/api/v1/applications/{application_reference}/submit':
post:
summary: 'Soumettre la demande'
operationId: soumettreLaDemande
description: ''
parameters: []
responses: { }
tags:
- Applications
parameters:
-
in: path
name: application_reference
description: ''
example: EJ-AN-2026-00000001
required: true
schema:
type: string
-
in: path
name: application
description: 'Référence de la demande.'
example: EJ-CN-2026-00000001
required: true
schema:
type: string
'/api/v1/applications/{application_reference}/resubmit':
post:
summary: 'Resoumettre la demande après complément'
operationId: resoumettreLaDemandeAprsComplment
description: ''
parameters: []
responses: { }
tags:
- Applications
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
observation:
type: string
description: 'Précision facultative du citoyen sur ce qui a été corrigé. Le texte de value ne peut pas contenir plus de 1000 caractères.'
example: 'Acte de naissance rescanné en couleur.'
nullable: true
parameters:
-
in: path
name: application_reference
description: ''
example: EJ-AN-2026-00000001
required: true
schema:
type: string
-
in: path
name: application
description: 'Référence de la demande.'
example: EJ-CN-2026-00000001
required: true
schema:
type: string
/api/v1/workflow/inbox:
get:
summary: 'Lister les demandes à traiter'
operationId: listerLesDemandesTraiter
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Workflow
'/api/v1/applications/{application_reference}/transitions':
post:
summary: 'Transitionner une demande'
operationId: transitionnerUneDemande
description: ''
parameters: []
responses: { }
tags:
- Workflow
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
action:
type: string
description: ''
example: resubmit
enum:
- approve
- reject
- request_changes
- resubmit
observation:
type: string
description: 'This field is required when action is reject or request_changes. Le texte de value ne peut pas contenir plus de 2000 caractères.'
example: b
nullable: true
destination:
type: string
description: ''
example: dgm
enum:
- payment
- chancellery
- general_secretariat
- national_cell
- anr
- dgm
- validation
- signature
- completed
required:
- action
parameters:
-
in: path
name: application_reference
description: ''
example: EJ-AN-2026-00000001
required: true
schema:
type: string
-
in: path
name: application
description: 'Référence de la demande.'
example: EJ-CN-2026-00000001
required: true
schema:
type: string
'/api/v1/applications/{application_reference}/payments':
get:
summary: 'Lister les paiements du dossier'
operationId: listerLesPaiementsDuDossier
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Payments
post:
summary: 'Initier le paiement des frais'
operationId: initierLePaiementDesFrais
description: ''
parameters: []
responses: { }
tags:
- Payments
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
payment_method:
type: string
description: ''
example: card
enum:
- mobile_money
- card
- cash
wallet_id:
type: string
description: 'This field is required when payment_method is mobile_money. Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
nullable: true
required:
- payment_method
parameters:
-
in: path
name: application_reference
description: ''
example: EJ-AN-2026-00000001
required: true
schema:
type: string
-
in: path
name: application
description: 'Référence de la demande.'
example: EJ-CN-2026-00000001
required: true
schema:
type: string
'/api/v1/applications/{application_reference}/payment-status':
get:
summary: 'Savoir si le dossier est déjà payé'
operationId: savoirSiLeDossierEstDjPay
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Payments
parameters:
-
in: path
name: application_reference
description: ''
example: EJ-AN-2026-00000001
required: true
schema:
type: string
-
in: path
name: application
description: 'Référence de la demande.'
example: EJ-CN-2026-00000001
required: true
schema:
type: string
/api/v1/payments/callback:
post:
summary: 'Notification de paiement (webhook KODIPAY)'
operationId: notificationDePaiementwebhookKODIPAY
description: ''
parameters: []
responses: { }
tags:
- Payments
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
reference:
type: string
description: ''
example: architecto
required:
- reference
security: []
/api/v1/signatures/callback:
post:
summary: 'Notification de signature (webhook signNow)'
operationId: notificationDeSignaturewebhookSignNow
description: ''
parameters: []
responses: { }
tags:
- Signature
security: []
'/api/v1/applications/{application_reference}/signature':
post:
summary: 'Initier la signature du certificat'
operationId: initierLaSignatureDuCertificat
description: ''
parameters: []
responses: { }
tags:
- Signature
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
issue_place:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- issue_place
parameters:
-
in: path
name: application_reference
description: ''
example: EJ-AN-2026-00000001
required: true
schema:
type: string
-
in: path
name: application
description: 'Référence de la demande.'
example: EJ-CN-2026-00000001
required: true
schema:
type: string
'/api/v1/certificates/{certificate_number}/download':
get:
summary: 'Obtenir un lien de téléchargement du certificat signé (Cellule Nationale / Admin)'
operationId: obtenirUnLienDeTlchargementDuCertificatSignCelluleNationaleAdmin
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Certificates
parameters:
-
in: path
name: certificate_number
description: ''
example: 10
required: true
schema:
type: integer
-
in: path
name: certificate
description: 'Numéro unique du certificat.'
example: CN-RDC-2026-0000000001
required: true
schema:
type: string
'/api/v1/certificates/{certificate_number}/file':
get:
summary: 'Servir le PDF signé (lien temporaire signé)'
operationId: servirLePDFSignlienTemporaireSign
description: ''
parameters: []
responses:
404:
description: ''
content:
application/json:
schema:
type: object
example:
errors: 'Certificate not found'
status: 404
properties:
errors:
type: string
example: 'Certificate not found'
status:
type: integer
example: 404
tags:
- Certificates
security: []
parameters:
-
in: path
name: certificate_number
description: ''
example: 10
required: true
schema:
type: integer
-
in: path
name: certificate
description: 'Numéro unique du certificat.'
example: CN-RDC-2026-0000000001
required: true
schema:
type: string
'/api/v1/verify/{number}':
get:
summary: 'Vérifier un certificat'
operationId: vrifierUnCertificat
description: ''
parameters: []
responses:
403:
description: ''
content:
application/json:
schema:
type: object
example:
valid: false
message: 'Lien de vérification invalide.'
properties:
valid:
type: boolean
example: false
message:
type: string
example: 'Lien de vérification invalide.'
tags:
- Verification
security: []
parameters:
-
in: path
name: number
description: 'Numéro du certificat.'
example: CN-RDC-2026-0000000001
required: true
schema:
type: string
'/api/v1/verify/legal-entity/{number}':
get:
summary: 'Vérifier une personnalité juridique'
operationId: vrifierUnePersonnalitJuridique
description: ''
parameters: []
responses:
404:
description: ''
content:
application/json:
schema:
type: object
example:
valid: false
message: 'Personnalité juridique introuvable.'
properties:
valid:
type: boolean
example: false
message:
type: string
example: 'Personnalité juridique introuvable.'
tags:
- Verification
security: []
parameters:
-
in: path
name: number
description: 'Numéro de personnalité juridique.'
example: PJ-RDC-2026-000154
required: true
schema:
type: string
/api/v1/admin/citizens:
post:
summary: 'Enregistrer un citoyen sans compte (guichet)'
operationId: enregistrerUnCitoyenSansCompteguichet
description: ''
parameters: []
responses: { }
tags:
- Administration
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
last_name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
post_name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
first_name:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: g
birth_date:
type: string
description: "Le champ value n'est pas une date valide. Le champ value doit être une date antérieure au today."
example: '2022-09-13'
birth_place:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
father_name:
type: string
description: 'Nom complet du père. Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'Mwamba Faraja Adolphe'
nullable: true
father_nationality:
type: string
description: 'Nationalité du père. Le texte de value ne peut pas contenir plus de 255 caractères.'
example: Congolaise
nullable: true
mother_name:
type: string
description: 'Nom complet de la mère. Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'Albertine Amani Emilie'
nullable: true
mother_nationality:
type: string
description: 'Nationalité de la mère. Le texte de value ne peut pas contenir plus de 255 caractères.'
example: Congolaise
nullable: true
tribe:
type: string
description: 'Tribu d’origine du requérant. Le texte de value ne peut pas contenir plus de 255 caractères.'
example: Luba
nullable: true
photo:
type: string
format: binary
description: 'Le champ value doit être une image. La taille du fichier de value ne peut pas dépasser 4096 kilo-octets.'
nullable: true
gender:
type: string
description: ''
example: male
enum:
- male
- female
nullable: true
marital_status:
type: string
description: ''
example: married
enum:
- single
- married
- divorced
- widowed
nullable: true
nationality:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: g
nullable: true
profession:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: z
nullable: true
national_id:
type: string
description: 'Numéro national d’identité de la personne (identifiant national). Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 01-90-06-15-12345-67
nullable: true
identity_document_type:
type: string
description: 'Type de pièce d’identité présentée (carte d’électeur, passeport, permis de conduire…). Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'Carte d’électeur'
nullable: true
identity_document_number:
type: string
description: 'Numéro de la pièce d’identité présentée. Le texte de value ne peut pas contenir plus de 255 caractères.'
example: CD-2020-0123456
nullable: true
province_origin_id:
type: string
description: 'Must match an existing stored value.'
example: architecto
territory_origin_id:
type: string
description: 'Must match an existing stored value.'
example: architecto
village_origin:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
chiefdom_origin:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: g
nullable: true
collectivity_origin:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: z
nullable: true
groupement_origin:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: m
nullable: true
province_address_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
city_address:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: i
nullable: true
municipality_address:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'y'
nullable: true
quarter_address:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: v
nullable: true
avenue_address:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: d
nullable: true
house_number:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: l
nullable: true
contact_country_code:
type: string
description: 'This field is required when contact_phone is present. Le texte de value ne peut pas contenir plus de 8 caractères.'
example: jnikhway
nullable: true
contact_phone:
type: string
description: 'Le texte de value ne peut pas contenir plus de 20 caractères.'
example: kcmyuwpwlvqwrsit
nullable: true
required:
- last_name
- post_name
- first_name
- birth_date
- birth_place
- province_origin_id
- territory_origin_id
- village_origin
'/api/v1/admin/citizens/{id}':
get:
summary: 'Consulter un citoyen'
operationId: consulterUnCitoyen
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Administration
parameters:
-
in: path
name: id
description: 'The ID of the citizen.'
example: 9
required: true
schema:
type: integer
'/api/v1/admin/citizens/{citizen_id}/photo':
post:
summary: "Mettre à jour la photo d'un citoyen (guichet)"
operationId: mettreJourLaPhotoDunCitoyenguichet
description: ''
parameters: []
responses: { }
tags:
- Administration
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
photo:
type: string
format: binary
description: 'Le champ value doit être une image. La taille du fichier de value ne peut pas dépasser 4096 kilo-octets.'
required:
- photo
parameters:
-
in: path
name: citizen_id
description: 'The ID of the citizen.'
example: 9
required: true
schema:
type: integer
'/api/v1/admin/citizens/{citizen_id}/link':
post:
summary: 'Rattacher un compte à un citoyen (claim)'
operationId: rattacherUnCompteUnCitoyenclaim
description: ''
parameters: []
responses: { }
tags:
- Administration
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
identifier:
type: string
description: ''
example: architecto
required:
- identifier
parameters:
-
in: path
name: citizen_id
description: 'The ID of the citizen.'
example: 9
required: true
schema:
type: integer
'/api/v1/admin/citizens/{citizen_id}/applications':
post:
summary: "Ouvrir une demande pour le compte d'un citoyen"
operationId: ouvrirUneDemandePourLeCompteDunCitoyen
description: ''
parameters: []
responses: { }
tags:
- Administration
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
document_type_key:
type: string
description: ''
example: criminal_record
enum:
- certificate_of_nationality
- attestation_of_non_nationality
- birth_certificate
- criminal_record
- certificate_of_non_appeal
- deed_deposit_certificate
reason:
type: string
description: 'Motif de la demande de certificat. Le texte de value ne peut pas contenir plus de 1000 caractères.'
example: 'Obtention d’un passeport'
nullable: true
required:
- document_type_key
parameters:
-
in: path
name: citizen_id
description: 'The ID of the citizen.'
example: 9
required: true
schema:
type: integer
/api/v1/admin/persons:
get:
summary: 'Rechercher une personne physique au référentiel'
operationId: rechercherUnePersonnePhysiqueAuRfrentiel
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Administration
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
q:
type: string
description: 'Le texte de value doit contenir au moins 2 caractères. Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- q
/api/v1/dashboard:
get:
summary: "Vue d'ensemble du tableau de bord"
operationId: vueDensembleDuTableauDeBord
description: ''
parameters:
-
in: query
name: period
description: 'Période : today|week|month|year|custom.'
example: month
required: false
schema:
type: string
description: 'Période : today|week|month|year|custom.'
example: month
-
in: query
name: from
description: 'Début de la plage (requis si period=custom).'
example: '2026-06-01'
required: false
schema:
type: string
description: 'Début de la plage (requis si period=custom).'
example: '2026-06-01'
-
in: query
name: to
description: 'Fin de la plage (requis si period=custom).'
example: '2026-06-30'
required: false
schema:
type: string
description: 'Fin de la plage (requis si period=custom).'
example: '2026-06-30'
-
in: query
name: province
description: "Filtre sur la province d'origine."
example: Kinshasa
required: false
schema:
type: string
description: "Filtre sur la province d'origine."
example: Kinshasa
-
in: query
name: document_type
description: 'Clé du type de document.'
example: certificate_of_nationality
required: false
schema:
type: string
description: 'Clé du type de document.'
example: certificate_of_nationality
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Dashboard
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
period:
type: string
description: ''
example: custom
enum:
- today
- week
- month
- year
- custom
from:
type: string
description: "This field is required when period is custom. Le champ value n'est pas une date valide. Le champ value doit être une date antérieure ou égale au to."
example: '2022-09-13'
to:
type: string
description: "This field is required when period is custom. Le champ value n'est pas une date valide."
example: '2026-08-20T03:25:00'
province:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
document_type:
type: string
description: 'Must match an existing stored value.'
example: architecto
/api/v1/admin/cash-payments:
get:
summary: 'Lister les paiements en espèces en attente'
operationId: listerLesPaiementsEnEspcesEnAttente
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Encaissement guichet'
'/api/v1/admin/cash-payments/{payment_reference}/process':
post:
summary: 'Encaisser un paiement en espèces (guichet)'
operationId: encaisserUnPaiementEnEspcesguichet
description: ''
parameters: []
responses: { }
tags:
- 'Encaissement guichet'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
counter:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
nullable: true
parameters:
-
in: path
name: payment_reference
description: ''
example: PAY-EJ-AN-2026-00000002-04
required: true
schema:
type: string
/api/v1/applications/initTable:
get:
summary: ''
operationId: getApiV1ApplicationsInitTable
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
/api/v1/applications/tableData:
get:
summary: ''
operationId: getApiV1ApplicationsTableData
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
/api/v1/payments/initTable:
get:
summary: ''
operationId: getApiV1PaymentsInitTable
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
/api/v1/payments/tableData:
get:
summary: ''
operationId: getApiV1PaymentsTableData
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
/api/v1/certificates/initTable:
get:
summary: ''
operationId: getApiV1CertificatesInitTable
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
/api/v1/certificates/tableData:
get:
summary: ''
operationId: getApiV1CertificatesTableData
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
/api/v1/citizens/initTable:
get:
summary: ''
operationId: getApiV1CitizensInitTable
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
/api/v1/citizens/tableData:
get:
summary: ''
operationId: getApiV1CitizensTableData
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
/api/v1/users/initTable:
get:
summary: ''
operationId: getApiV1UsersInitTable
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
/api/v1/users/tableData:
get:
summary: ''
operationId: getApiV1UsersTableData
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
/api/v1/admin/legal-entities/initTable:
get:
summary: ''
operationId: getApiV1AdminLegalEntitiesInitTable
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
/api/v1/admin/legal-entities/tableData:
get:
summary: ''
operationId: getApiV1AdminLegalEntitiesTableData
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
/api/v1/admin/legal-entities/inbox:
get:
summary: 'Corbeille des fiches personne morale à traiter'
operationId: corbeilleDesFichesPersonneMoraleTraiter
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Personnes morales'
'/api/v1/admin/legal-entities/{legalEntity_reference}/submit':
post:
summary: 'Soumettre la fiche dans le circuit de traitement'
operationId: soumettreLaFicheDansLeCircuitDeTraitement
description: ''
parameters: []
responses: { }
tags:
- 'Personnes morales'
parameters:
-
in: path
name: legalEntity_reference
description: ''
example: architecto
required: true
schema:
type: string
'/api/v1/admin/legal-entities/{legalEntity_reference}/transitions':
post:
summary: 'Transitionner la fiche (approuver / rejeter / complément / resoumettre)'
operationId: transitionnerLaFicheapprouverRejeterComplmentResoumettre
description: ''
parameters: []
responses: { }
tags:
- 'Personnes morales'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
action:
type: string
description: ''
example: reject
enum:
- approve
- reject
- request_changes
- resubmit
observation:
type: string
description: 'This field is required when action is reject or request_changes. Le texte de value ne peut pas contenir plus de 2000 caractères.'
example: b
nullable: true
viability_outcome:
type: string
description: ''
example: favorable
enum:
- favorable
- reserved
- unfavorable
nullable: true
legal_opinion:
type: string
description: 'Le texte de value ne peut pas contenir plus de 5000 caractères.'
example: 'n'
nullable: true
required:
- action
parameters:
-
in: path
name: legalEntity_reference
description: ''
example: architecto
required: true
schema:
type: string
'/api/v1/admin/legal-entities/{legalEntity_reference}/payments':
get:
summary: 'Lister les paiements de la personne morale'
operationId: listerLesPaiementsDeLaPersonneMorale
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Personnes morales'
post:
summary: 'Initier le paiement des frais de personnalité juridique'
operationId: initierLePaiementDesFraisDePersonnalitJuridique
description: ''
parameters: []
responses: { }
tags:
- 'Personnes morales'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
payment_method:
type: string
description: ''
example: card
enum:
- mobile_money
- card
- cash
wallet_id:
type: string
description: 'This field is required when payment_method is mobile_money. Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
nullable: true
required:
- payment_method
parameters:
-
in: path
name: legalEntity_reference
description: ''
example: architecto
required: true
schema:
type: string
'/api/v1/admin/legal-entities/{legalEntity_reference}/issue':
post:
summary: "Signer l'arrêté et délivrer la personnalité juridique"
operationId: signerLarrtEtDlivrerLaPersonnalitJuridique
description: ''
parameters: []
responses: { }
tags:
- 'Personnes morales'
parameters:
-
in: path
name: legalEntity_reference
description: ''
example: architecto
required: true
schema:
type: string
'/api/v1/admin/legal-entities/{legalEntity_reference}/documents/{type}':
get:
summary: 'Télécharger un document officiel (certificate|decree|plaque)'
operationId: tlchargerUnDocumentOfficielcertificatedecreeplaque
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Personnes morales'
parameters:
-
in: path
name: legalEntity_reference
description: ''
example: architecto
required: true
schema:
type: string
-
in: path
name: type
description: ''
example: architecto
required: true
schema:
type: string
/api/v1/admin/legal-entities:
post:
summary: 'Créer une fiche personne morale'
operationId: crerUneFichePersonneMorale
description: ''
parameters: []
responses: { }
tags:
- 'Personnes morales'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
nature:
type: string
description: ''
example: foundation
enum:
- asbl_confessional
- asbl_non_confessional
- ngo
- foundation
- church_community
- public_utility_establishment
- federation_network
- other
denomination:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
required:
- nature
- denomination
'/api/v1/admin/legal-entities/{legalEntity_reference}':
get:
summary: 'Consulter une fiche personne morale'
operationId: consulterUneFichePersonneMorale
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Personnes morales'
parameters:
-
in: path
name: legalEntity_reference
description: ''
example: architecto
required: true
schema:
type: string
'/api/v1/admin/legal-entities/{legalEntity_reference}/identification-sheet':
get:
summary: "Générer la fiche d'identification (PDF)"
operationId: gnrerLaFicheDidentificationPDF
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Personnes morales'
parameters:
-
in: path
name: legalEntity_reference
description: ''
example: architecto
required: true
schema:
type: string
'/api/v1/admin/legal-entities/{legalEntity_reference}/identification':
put:
summary: 'Section 1 — Nature et identification'
operationId: section1NatureEtIdentification
description: ''
parameters: []
responses: { }
tags:
- 'Personnes morales'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
nature:
type: string
description: ''
example: federation_network
enum:
- asbl_confessional
- asbl_non_confessional
- ngo
- foundation
- church_community
- public_utility_establishment
- federation_network
- other
denomination:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
acronym:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
nullable: true
former_denomination:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: g
nullable: true
creation_date:
type: string
description: "Le champ value n'est pas une date valide."
example: '2026-08-20T03:25:01'
nullable: true
duration_type:
type: string
description: ''
example: indefinite
enum:
- indefinite
- fixed
nullable: true
duration_value:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: z
nullable: true
required:
- nature
- denomination
parameters:
-
in: path
name: legalEntity_reference
description: ''
example: architecto
required: true
schema:
type: string
'/api/v1/admin/legal-entities/{legalEntity_reference}/seat':
put:
summary: 'Section 2 — Siège social'
operationId: section2SigeSocial
description: ''
parameters: []
responses: { }
tags:
- 'Personnes morales'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
province_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
city:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
nullable: true
municipality:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
nullable: true
quarter:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: g
nullable: true
avenue:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: z
nullable: true
parcel_number:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: m
nullable: true
phone:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: i
nullable: true
email:
type: string
description: 'Le champ value doit être une adresse e-mail valide. Le texte de value ne peut pas contenir plus de 255 caractères.'
example: okon.justina@example.com
nullable: true
website:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
nullable: true
gps_latitude:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: i
nullable: true
gps_longitude:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: k
nullable: true
parameters:
-
in: path
name: legalEntity_reference
description: ''
example: architecto
required: true
schema:
type: string
'/api/v1/admin/legal-entities/{legalEntity_reference}/object-mission':
put:
summary: 'Section 3 — Objet et mission'
operationId: section3ObjetEtMission
description: ''
parameters: []
responses: { }
tags:
- 'Personnes morales'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
vision:
type: string
description: ''
example: architecto
nullable: true
mission:
type: string
description: ''
example: architecto
nullable: true
main_object:
type: string
description: ''
example: architecto
nullable: true
objective_1:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
nullable: true
objective_2:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: g
nullable: true
objective_3:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: z
nullable: true
intervention_domains:
type: array
description: ''
example:
- human_rights
items:
type: string
enum:
- religion
- health
- education
- agriculture
- humanitarian
- social
- human_rights
- youth
- culture
- environment
- development
- other
parameters:
-
in: path
name: legalEntity_reference
description: ''
example: architecto
required: true
schema:
type: string
'/api/v1/admin/legal-entities/{legalEntity_reference}/governance':
put:
summary: 'Sections 10-11 — Gouvernance et organes'
operationId: sections1011GouvernanceEtOrganes
description: ''
parameters: []
responses: { }
tags:
- 'Personnes morales'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
constitutive_assembly_date:
type: string
description: "Le champ value n'est pas une date valide."
example: '2026-08-20T03:25:01'
nullable: true
constitutive_assembly_place:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
nullable: true
founders_count:
type: integer
description: 'La valeur de value doit être supérieure ou égale à 0.'
example: 39
nullable: true
members_count:
type: integer
description: 'La valeur de value doit être supérieure ou égale à 0.'
example: 84
nullable: true
quorum:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: z
nullable: true
statutes_adoption_date:
type: string
description: "Le champ value n'est pas une date valide."
example: '2026-08-20T03:25:01'
nullable: true
internal_rules_adoption_date:
type: string
description: "Le champ value n'est pas une date valide."
example: '2026-08-20T03:25:01'
nullable: true
administrators_designation_date:
type: string
description: "Le champ value n'est pas une date valide."
example: '2026-08-20T03:25:01'
nullable: true
mandate_duration:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: m
nullable: true
organs:
type: array
description: ''
example:
- executive_secretariat
items:
type: string
enum:
- general_assembly
- board_of_directors
- steering_committee
- audit_board
- spiritual_body
- control_committee
- executive_secretariat
- other
parameters:
-
in: path
name: legalEntity_reference
description: ''
example: architecto
required: true
schema:
type: string
'/api/v1/admin/legal-entities/{legalEntity_reference}/resources':
put:
summary: 'Section 12 — Ressources'
operationId: section12Ressources
description: ''
parameters: []
responses: { }
tags:
- 'Personnes morales'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
funding_sources:
type: array
description: ''
example:
- contributions
items:
type: string
enum:
- contributions
- donations
- subsidies
- offerings_tithes
- income_generating_activity
- partners
annual_budget:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
nullable: true
bank_account:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
nullable: true
employees_count:
type: integer
description: 'La valeur de value doit être supérieure ou égale à 0.'
example: 84
nullable: true
volunteers_count:
type: integer
description: 'La valeur de value doit être supérieure ou égale à 0.'
example: 12
nullable: true
beneficiaries_count:
type: integer
description: 'La valeur de value doit être supérieure ou égale à 0.'
example: 77
nullable: true
parameters:
-
in: path
name: legalEntity_reference
description: ''
example: architecto
required: true
schema:
type: string
'/api/v1/admin/legal-entities/{legalEntity_reference}/confessional':
put:
summary: 'Section 13 — Structure confessionnelle'
operationId: section13StructureConfessionnelle
description: ''
parameters: []
responses: { }
tags:
- 'Personnes morales'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
confession:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
nullable: true
doctrine:
type: string
description: ''
example: architecto
nullable: true
parent_organization:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
nullable: true
spiritual_authority:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: g
nullable: true
worship_places_count:
type: integer
description: 'La valeur de value doit être supérieure ou égale à 0.'
example: 12
nullable: true
faithful_count:
type: integer
description: 'La valeur de value doit être supérieure ou égale à 0.'
example: 77
nullable: true
legal_rep_theological_training:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: i
nullable: true
diploma_institution_year:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'y'
nullable: true
parameters:
-
in: path
name: legalEntity_reference
description: ''
example: architecto
required: true
schema:
type: string
'/api/v1/admin/legal-entities/{legalEntity_reference}/viability':
put:
summary: 'Section 14 — Siège et viabilité'
operationId: section14SigeEtViabilit
description: ''
parameters: []
responses: { }
tags:
- 'Personnes morales'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
seat_occupation:
type: string
description: ''
example: provided_free_of_charge
enum:
- ownership
- rental
- provided_free_of_charge
- other
nullable: true
lease_title:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
nullable: true
approximate_area:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
nullable: true
reception_capacity:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: g
nullable: true
has_electricity:
type: boolean
description: ''
example: true
nullable: true
has_water:
type: boolean
description: ''
example: true
nullable: true
has_internet:
type: boolean
description: ''
example: false
nullable: true
parameters:
-
in: path
name: legalEntity_reference
description: ''
example: architecto
required: true
schema:
type: string
'/api/v1/admin/legal-entities/{legalEntity_reference}/representatives':
put:
summary: 'Sections 5/9/16 — Représentants et déclarant'
operationId: sections5916ReprsentantsEtDclarant
description: ''
parameters: []
responses: { }
tags:
- 'Personnes morales'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
legal_representative_citizen_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
mandatary_mode:
type: string
description: ''
example: mandatary
enum:
- legal_representative
- administrator
- lawyer
- mandatary
nullable: true
mandatary_citizen_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
mandate_reference:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
nullable: true
declarant_citizen_id:
type: string
description: 'Must match an existing stored value.'
example: null
nullable: true
declarant_capacity:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
nullable: true
declaration_place:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: g
nullable: true
declaration_date:
type: string
description: "Le champ value n'est pas une date valide."
example: '2026-08-20T03:25:01'
nullable: true
parameters:
-
in: path
name: legalEntity_reference
description: ''
example: architecto
required: true
schema:
type: string
'/api/v1/admin/legal-entities/{legalEntity_reference}/attachments':
post:
summary: 'Section 15 — Joindre une pièce à la liasse'
operationId: section15JoindreUnePiceLaLiasse
description: ''
parameters: []
responses: { }
tags:
- 'Personnes morales'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
attachment_type:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: b
file:
type: string
format: binary
description: 'Must be a file. La taille du fichier de value ne peut pas dépasser 10240 kilo-octets.'
required:
- attachment_type
- file
parameters:
-
in: path
name: legalEntity_reference
description: ''
example: architecto
required: true
schema:
type: string
'/api/v1/admin/legal-entities/{legalEntity_reference}/members':
post:
summary: 'Associer une personne physique à la personne morale'
operationId: associerUnePersonnePhysiqueLaPersonneMorale
description: ''
parameters: []
responses: { }
tags:
- 'Personnes morales'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
citizen_id:
type: string
description: 'Must match an existing stored value.'
example: architecto
role:
type: string
description: ''
example: effective_member
enum:
- administrator
- founder
- effective_member
function:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: 'n'
nullable: true
designation_date:
type: string
description: "Le champ value n'est pas une date valide."
example: '2026-08-20T03:25:01'
nullable: true
mandate:
type: string
description: 'Le texte de value ne peut pas contenir plus de 255 caractères.'
example: g
nullable: true
required:
- citizen_id
- role
parameters:
-
in: path
name: legalEntity_reference
description: ''
example: architecto
required: true
schema:
type: string
'/api/v1/admin/legal-entities/{legalEntity_reference}/members/{id}':
delete:
summary: 'Retirer une personne associée'
operationId: retirerUnePersonneAssocie
description: ''
parameters: []
responses: { }
tags:
- 'Personnes morales'
parameters:
-
in: path
name: legalEntity_reference
description: ''
example: architecto
required: true
schema:
type: string
-
in: path
name: id
description: 'The ID of the member.'
example: 16
required: true
schema:
type: integer