Api Document

Api Document


The Document API provides automated access to customer documents.

Access to this API is restricted to authorized users. Access requires a specific authorization defined by the "api-document" scope. If you haven't already done so, we suggest you follow the registration steps explained in the "Register your application" section.

For developers and other engineering teams, an Open API documentation generated by Swagger is available at this URL:
https://document.api.cegos.fr/swagger

Document Data Flow - Main Sources

How document data flows from multiple CEGOS sources to API Document

BIZTALK + BASE STAT DossiersClients (BDD) Api Docli Azure Hybrid Connection Api Document Site Web cegos.fr
Primary data flow for document generation • GET /v1/Document endpoints
Document Data Flow - Additional Sources

Cache integration and logging for API Document

Api Catalog Api Document (Worker - Mise en cache)
Api_Identity_Management Api Document (Logs)
Sessions cache from Catalog API • Logging from Identity Management

Documents

GET /v1/Documents

Purpose: Document API provides automated access to customer documents with advanced filtering
GET /v1/Documents
Retrieve documents with advanced filtering by case, registration, or establishment
GET /v1/Documents/{documentType}/{documentId}/{side}/data
Retrieve specific document data by type, ID and side as base64
GET /v1/Documents/quotation/{quotationReference}/data
Retrieve quotation data by reference as base64 with metadata
Content-Type: application/json

Purpose:
Database Implementation
Database
DossierClients
Stored Procedure
API Docli integration - Document retrieval procedures, Document content procedures, Document metadata lookup procedures
Tables Used
Document management tables, Client registration tables, Document metadata tables, Document content storage tables
Business Logic: Document API serves as a secure facade for API Docli, implementing RequiredAtLeastOne validation (CaseNumber OR RegistrationNumber OR EstablishmentBuyerCode). Supports multiple document types (BonPourAccordIntra, BonDeCommandeInter, Facture, etc.) with duplex handling and base64 encoding for secure document transfer.

Purpose: Search parameters for Document API with RequiredAtLeastOne conditional validation and standardized document types.
Request Fields
Required Fields
Field Type Description Validation Example
documentType string Document type path parameter Valid DocumentTypeRequest enum value "EmargementsIntra"
documentId long Unique document identifier path parameter Valid document ID in database 81986
side string Document side path parameter (Front/Back) Must be 'Front' or 'Back' "Front"
quotationReference string Quotation reference path parameter Valid quotation reference format "W568123157"
Optional Fields
Field Type Description Database Mapping Example
CaseNumber string Case number for document search DossierClients case tables "0000200005"
RegistrationNumber string Registration number for document search DossierClients registration tables "REG123456"
EstablishmentBuyerCode string Establishment buyer code for document search DossierClients buyer tables "EST001"
DocumentTypes array[string] Document types filter array (17 possible values) Document type filtering ["BonPourAccordIntra", "AttestationsInter"]

Purpose: Document API returns document lists (route 1) or base64 data with metadata (routes 2-3). Standardized format for Cegos.fr customer portal integration.
Flux Architecture Document API
Complete flow from source systems to Cegos.fr client portal with Azure Hybrid Connection
BIZTALK BASE STAT DossiersClients DB API Docli Azure Hybrid Connection API Document API Identity Management Site Web Cegos.fr
Response Fields
Field Type Description Database Source
Complex Objects & Sub-Objects
Field Type Description Database Source
documentType string Type of document (enumeration string value) Enum mapping based on table source: AttestationsInter='AttestationsInter', EmargementsInter='EmargementsInter', EvaluationsInter='EvaluationsInter', FacturesInter='FacturesInter', ConvocationsInter='ConvocationsInter', BonDeCommandeInter='BonDeCommandeInter', PriseEnChargeInter='PriseEnChargeInter' (INTER) | AttestationsIntra='AttestationsIntra', EmargementsIntra='EmargementsIntra', EvaluationsIntra='EvaluationsIntra', FacturesIntra='FacturesIntra', ConventionsIntra='ConventionsIntra', BonDeCommandeIntra='BonDeCommandeIntra', PriseEnChargeIntra='PriseEnChargeIntra', BonPourAccordIntra='BonPourAccordIntra', FraisIntra='FraisIntra' (INTRA)
hasBack boolean Indicates if the document has a back side (verso) Logic based on PathVerso presence: si PathVerso NOT NULL alors hasBack=true. AttestationsInter.PathVerso, EvaluationsInter.PathVerso, ConventionsIntra.PathVerso, etc. (nvarchar(255) nullable)
id long Unique identifier of the document PRIMARY KEY: AttestationsInter.Id, BonDeCommandeInter.Id, CertificatPartenaireInter.Id, ConvocationsInter.Id, EmargementsInter.Id, EvaluationsInter.Id, FacturesInter.Id, PriseEnChargeInter.Id (INTER) | AttestationsIntra.Id, BonDeCommandeIntra.Id, BonPourAccordIntra.Id, ConventionsIntra.Id, EmargementsIntra.Id, EvaluationsIntra.Id, FacturesIntra.Id, FraisIntra.Id, PriseEnChargeIntra.Id (INTRA)
notSigned boolean? Indicates if the document is not signed (nullable) Business logic based on document type and metadata - calculated field
trainingStartDate string($date-time)? Training start date associated with the document (nullable) Varies by document table: business logic linking to training dates from related tables
type string Document file type Fixed value 'Pdf' - all documents are PDF format from path storage system
Data Source:
Usage:
Example Response

[
    {
        "id": 123456789,
        "documentType": "BonPourAccordIntra",
        "hasBack": true,
        "type": "Pdf",
        "notSigned": false,
        "trainingStartDate": "2025-06-13T14:45:50.275Z"
    },
    {
        "id": 987654321,
        "documentType": "AttestationsInter",
        "hasBack": false,
        "type": "Pdf",
        "notSigned": true,
        "trainingStartDate": "2025-05-29T09:30:00.000Z"
    }
]

Documents

GET /v1/Documents/{documentType}/{documentId}/{side}/data

Purpose: Retrieve specific document data by type, ID and side as base64 encoded content with metadata for direct file download or display.
GET /v1/Documents/{documentType}/{documentId}/{side}/data
Retrieve specific document data by type, ID and side as base64
Content-Type: application/json

Purpose:
Database Implementation
Database
DossiersClients (SQL Server)
Stored Procedure
Flux de récupération de contenu binaire: 1. Identification table par documentType (0-15) 2. Recherche document par Id dans table spécifique 3. Vérification IsDeleted=0 et HideToClient=0 4. Récupération PathRecto ou PathVerso selon side 5. Lecture fichier binaire depuis réseau: \\fr.cegos.corp\qas\Dossiers_clients\TEST\ 6. Encodage base64 du contenu PDF 7. Génération fileName avec pattern spécifique par type 8. Retour: data (base64), mime (application/pdf), fileName Exemples chemins fichiers: - CertificatRealisation_Payeur_Demat_{inscription}_{date}.pdf - ConventionIntra_{numCommande}_{guid}.pdf - Facture_Intra_Duplicata_{piece}_{id}-{date}.pdf
Tables Used
Tables INTER (8): AttestationsInter (19 colonnes), BonDeCommandeInter (21 colonnes), CertificatPartenaireInter (19 colonnes), ConvocationsInter (24 colonnes), EmargementsInter (19 colonnes), EvaluationsInter (20 colonnes), FacturesInter (18 colonnes), PriseEnChargeInter (19 colonnes) Tables INTRA (9): AttestationsIntra (22 colonnes), BonDeCommandeIntra (18 colonnes), BonPourAccordIntra (17 colonnes), ConventionsIntra (23 colonnes), EmargementsIntra (20 colonnes), EvaluationsIntra (20 colonnes), FacturesIntra (19 colonnes), FraisIntra (18 colonnes), PriseEnChargeIntra (18 colonnes) Structure commune: Id (PK), PathRecto (nvarchar(255/1000)), PathVerso (nullable), DateCreation (datetime), LoginAuteur (nvarchar(255)), IsDeleted (bit DEFAULT 0), HideToClient (bit DEFAULT 0)
Business Logic: Récupération de contenu binaire des documents par type et ID spécifique. • DocumentType mapping: AttestationsInter=0, EmargementsInter=1, EvaluationsInter=2, FacturesInter=3, ConvocationsInter=4, BonDeCommandeInter=5, PriseEnChargeInter=6, AttestationsIntra=7, EmargementsIntra=8, EvaluationsIntra=9, FacturesIntra=10, ConventionsIntra=11, BonDeCommandeIntra=12, PriseEnChargeIntra=13, BonPourAccordIntra=14, FraisIntra=15 • Side mapping: 0=PathRecto, 1=PathVerso (si disponible) • Filtrage IsDeleted=0 et HideToClient=0 pour visibilité client • Lecture fichier binaire depuis chemin réseau stocké • Encodage base64 du contenu PDF • Génération filename basé sur type document + métadonnées

Purpose: Path parameters for direct document data access with type validation and side specification.
Request Fields
Required Fields
Field Type Description Validation Example
documentType string Document type from DocumentTypeRequest enum (17 values supported) Must be valid DocumentTypeRequest enum value "BonPourAccordIntra"
documentId long Unique document identifier as path parameter Must be valid document ID existing in the system 123456789
side string Document side specification (Front or Back) Must be 'Front' or 'Back' - maps to PathFront/PathBack columns "Front"

Purpose: Document data response with base64 encoded content and file metadata for direct client consumption.
Binary Content Retrieval Flow
Binary content retrieval flow for a specific document with metadata
Portal Web API Document (Azure) Azure Hybrid Connection DocumentClientService Database Lookup File System Response
Response Fields
Field Type Description Database Source
data string Document content encoded in base64 format Fichier binaire lu depuis PathRecto/PathVerso: AttestationsInter.PathRecto (nvarchar(255)), EvaluationsInter.PathVerso (nvarchar(255)), CertificatPartenaireInter.PathRecto (nvarchar(1000)), CertificatPartenaireInter.PathVerso (nvarchar(1000)) pour INTER | AttestationsIntra.PathRecto (nvarchar(255)), AttestationsIntra.PathVerso (nvarchar(255)), ConventionsIntra.PathRecto, ConventionsIntra.PathVerso, etc. pour INTRA | Fichiers stockés sur réseau: \\fr.cegos.corp\qas\Dossiers_clients\TEST\YYYY\M\D\
Data Source:
Usage:
Example Response

{
    "data": "JVBERi0xLjcNJeLjz9MNCjEgMCBvYmoNPDwvTGFuZyhmcikvTWFya0luZm08PC9NYXJrZWQgdHJ1ZT4+L01ldGFkYXRhIDE3NyAwIFIvT3V0cHV0SW50ZW50c1s8PC9EZXN0T3V0cHV0UHJvZmlsZSAyMDMgMCBSL091dHB1dENvbmRpdGlvbklkZW50aWZpZXIoc1JHQiBJRUM2MTk2Ni0yLjEpL1MvR1RTX1BERkExL1R..."
}

Documents

GET /v1/Documents/quotation/{quotationReference}/data

Purpose: Retrieve quotation data by reference as base64 encoded content with metadata for devis/quotation document access.
GET /v1/Documents/quotation/{quotationReference}/data
Retrieve quotation data by reference as base64 with metadata
Content-Type: application/json

Purpose:
Database Implementation
Database
DossiersClients (SQL Server)
Stored Procedure
Flux spécialisé pour documents de devis: 1. Lookup de la référence quotationReference dans table Devis 2. Récupération du chemin de fichier associé au devis 3. Lecture du fichier binaire via FileService 4. Encodage base64 du contenu PDF 5. Génération du fileName avec pattern: devis_{quotationReference}.pdf Optimisation: Index sur colonnes de référence de devis pour performance.
Tables Used
Table Devis - Documents de devis/quotations avec référence spécifique. Accès via référence de devis plutôt que par ID numérique.
Business Logic: Récupération spécialisée des documents de devis par référence. • Recherche par quotationReference dans la table Devis • Accès direct au contenu du document de devis • Encodage base64 du fichier PDF de devis • Génération automatique du nom de fichier avec référence • Type MIME forcé à application/pdf pour les devis • Gestion des erreurs 404 si référence de devis introuvable

Purpose: Path parameter for quotation document access using business reference instead of technical ID.
Request Fields
Required Fields
Field Type Description Validation Example
quotationReference string Business reference of the quotation document to retrieve Must be existing quotation reference in Devis table "DEVIS-2024-001234"

Purpose: Quotation document data response with base64 encoded PDF content and quotation-specific metadata.
Flux Récupération Devis/Quotation
Specialized flow for quotation document retrieval by reference
Portal Web API Document (Azure) Azure Hybrid Connection DocumentClientService Response
Response Fields
Field Type Description Database Source
data string Quotation document content encoded in base64 format Fichier binaire lu depuis ConventionsIntra.PathRecto (nvarchar(255)) ou BonPourAccordIntra.PathRecto (nvarchar(255)) selon le type de devis | Fichiers stockés sur réseau: \\fr.cegos.corp\qas\Dossiers_clients\TEST\YYYY\M\D\ | Exemple path: \\fr.cegos.corp\qas\Dossiers_clients\TEST\2025\6\2\ConventionIntra_0080099160_19a86e61-f94c-4255-8fc8-c017224d332c.pdf
Data Source:
Usage:
Example Response

{
    "data": "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlL1hPYmplY3QvUmVzb3VyY2VzPDwvRXh0R1N0YXRlPDwvR3MyIDIgMCBSL0dzMSAzIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9Gb250PDwvVFQyIDQgMCBSPj4+Pi9TdWJ0eXBlL0Zvcm0vQkJveFswIDAgNTk1LjI4IDg0MS44OV0vTWF0cml4WzEgMCAwIDEgMCAwXS9MZW5ndGggNTQ4NC9Gb3JtVHlwZSAxL0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtCngBbZtLkx3HcYX391c0oAsMQAM9/X5QNAUBJEHIpkTKcHhheIWwrAgTjpD1/yP8nXOqui8wXkgYnqnKyndmZfX8rbn/ufnmm+b+pzfvvmum5ttvm9ffvWl+af7WzFM79EOzLkO77GOz9e0yb82wtts8NP/7n82/Nf/TdO3C/3b9e+nadWz+u7l/+/e++a+/N/04t0M3LRBY23nstuaTsb4fgm3buoFM7bbNQra2n4Yg0zYtlwP56FXdvH62amy3oVDfBxjrxxEGvKac97H5a9BhFbWl3bc..."
}
gi

History

GET /v1/History/inter

Purpose: History INTER API provides access to INTER training history with advanced filtering and pagination
GET /v1/History/inter
Retrieve INTER training history with advanced filtering and pagination. **CRITICAL BUSINESS RULE**: At least one key filter (Email, EstablishmentCode, or EstablishmentBuyerCode) must be provided, otherwise returns empty result silently.
Content-Type: application/json

Purpose:
Database Implementation
Database
DossiersClients (SQL Server)
Stored Procedure
Requête SQL Dapper directe (pas de procédures stockées): SELECT DISTINCT P.[colonnes mappées] FROM [dbo].[Payeurs] P + jointures WHERE P.[DateDebutFormation] BETWEEN @TrainingStartDate AND @TrainingEndDate + filtres dynamiques ORDER BY P.[DateDebutFormation] DESC OFFSET @Offset ROWS FETCH NEXT @PageSize ROWS ONLY Structure table Payeurs (champs clés): • PrenomStagiaire: nvarchar(100) - Prénom du stagiaire • NomStagiaire: nvarchar(100) - Nom du stagiaire • CodeEtablissementStagiaire: nvarchar(10) - Code établissement stagiaire • EntrepriseStagiaire: nvarchar(100) - Entreprise du stagiaire • MailStagiaire: nvarchar(128) - Email du stagiaire • PrenomRI/NomRI: nvarchar(100) - Prénom/Nom Responsable Inscription • CodeEtablissementRI: nvarchar(10) - Code établissement RI • TitreFormation: nvarchar(256) - Titre de la formation • DateDebutFormation: datetime - Date début formation (indexée) • StatutInscription: nvarchar(30) - Statut inscription (3 valeurs distinctes) • Inscription: nvarchar(7) - Numéro d'inscription • Stage: nvarchar(8) - Code produit annuel • Session: nvarchar(15) - Code session • CodeEtablissementPayeur: nvarchar(10) - Code établissement payeur (indexé) • Partiel/TerminePartiellement: bit - Indicateurs de complétion • DateDernierReport: datetime - Date du dernier report Index de performance (9 index sur DateDebutFormation + établissements)
Tables Used
Table principale: [dbo].[Payeurs] (187K+ enregistrements) LEFT JOIN [dbo].[FacturesInter] FI ON FI.Inscription = P.Inscription LEFT JOIN [dbo].[AttestationsInter] AI ON AI.Inscription = P.Inscription
Business Logic: Recherche d'historique des formations INTER via les données des payeurs. • Validation RequiredAtLeastOne: Email OU EstablishmentCode OU EstablishmentBuyerCode obligatoire • Filtrage par dates de formation (DateDebutFormation) + critères multiples • Jointures LEFT OUTER pour enrichir avec factures et attestations • Post-traitement: formatage YearlyProductCode (Année + CodeProduit formaté 5 digits) • Enrichissement session: Appel API Catalog pour données session (dates, durée, ville, inscriptions, seuils, statut) - Mise en cache pour performance • Pagination native SQL avec OFFSET/FETCH NEXT (SQL Server 2012+) • Performance: 9 index optimisés sur DateDebutFormation et CodeEtablissementPayeur

Purpose: Search parameters for History INTER with RequiredAtLeastOne conditional validation and pagination.
Request Fields
Required Fields
Field Type Description Validation Example
TrainingStartDate string($date-time) Training start date filter (required) Required date-time field. Must be valid ISO 8601 format. "2024-01-01T00:00:00Z"
TrainingEndDate string($date-time) Training end date filter (required) Required date-time field. Must be valid ISO 8601 format. "2024-12-31T23:59:59Z"
Optional Fields
Field Type Description Database Mapping Example
Email string Email filter (RequiredAtLeastOne with EstablishmentCode/EstablishmentBuyerCode) Trainee email lookup in DossierClients "user@example.com"
EstablishmentCode string Establishment code filter (RequiredAtLeastOne with Email/EstablishmentBuyerCode) Establishment filtering in DossierClients "EST001"
EstablishmentBuyerCode string Buyer code filter (RequiredAtLeastOne with Email/EstablishmentCode) Buyer establishment filtering in DossierClients "BUY001"
PageNumber integer($int32) Page number for pagination (minimum 1) SQL OFFSET calculation 1
PageSize integer($int32) Page size for pagination (minimum 10) SQL FETCH NEXT calculation 20

Purpose: Paginated INTER training history response with trainee and training details
Flux Architecture History INTER
Complete INTER history search flow from BIZTALK to client portal via Azure Session flow: API Catalog → CachingJob Worker (every 15min) → API Document memory cache → INTER History response enhancement
BIZTALK BIDATA API Document (Azure) Azure Hybrid Connection API Catalog (Cache) Api_Identity_Management
Response Fields
Field Type Description Database Source
pageNumber integer Current page number
pageSize integer Items per page
totalItems integer Total number of items across all pages
totalPages integer Total number of pages
data[].traineeFirstName string Trainee first name Payeurs.PrenomStagiaire (nvarchar(100) nullable) - Prénom du stagiaire participant à la formation
data[].traineeLastName string Trainee last name Payeurs.NomStagiaire (nvarchar(100) nullable) - Nom du stagiaire participant à la formation
data[].traineeCompanyName string Trainee company name Payeurs.EntrepriseStagiaire (nvarchar(100) nullable) - Nom de l'entreprise du stagiaire
data[].traineeEstablishmentCode string Trainee establishment code Payeurs.CodeEtablissementStagiaire (nvarchar(10) nullable) - Code établissement du stagiaire | Index: index-code-etablissement-stagiaire-date
data[].traineeEstablishmentName string Trainee establishment name Payeurs.EtablissementStagiaire (nvarchar(100) nullable) - Nom de l'établissement du stagiaire
data[].traineeEmail string Trainee email address Payeurs.MailStagiaire (nvarchar(128) nullable) - Email du stagiaire | Index: index-mail-stagiaire-date
data[].registrationManagerFirstName string Registration manager first name Payeurs.PrenomRI (nvarchar(100) nullable) - Prénom du responsable inscription
data[].registrationManagerLastName string Registration manager last name Payeurs.NomRI (nvarchar(100) nullable) - Nom du responsable inscription
data[].registrationManagerEstablishmentCode string Registration manager establishment code Payeurs.CodeEtablissementRI (nvarchar(10) nullable) - Code établissement du responsable inscription
data[].registrationManagerEstablishmentName string Registration manager establishment name Payeurs.EtablissementRI (nvarchar(100) nullable) - Nom de l'établissement du responsable inscription
data[].registrationManagerCompanyName string Registration manager company name Payeurs.EntrepriseRI (nvarchar(100) nullable) - Nom de l'entreprise du responsable inscription
data[].registrationManagerEmail string Registration manager email address Payeurs.MailRI (nvarchar(128) nullable) - Email du responsable inscription
data[].trainingTitle string Training course title Payeurs.TitreFormation (nvarchar(256) nullable) - Titre complet de la formation suivie
data[].trainingStartDate string($date-time) Training start date Payeurs.DateDebutFormation (datetime nullable) - Date de début de la formation | Index principal: index-date, index-mail-date, index-code-etablissement-payeur-date, etc. (9 index sur cette colonne)
data[].registrationState string Registration state of the trainee Payeurs.StatutInscription (nvarchar(30) nullable) - Statut de l'inscription du stagiaire (ex: Confirmé, En attente, etc.)
data[].registrationNumber string Registration number Payeurs.Inscription (nvarchar(7) nullable) - Numéro d'inscription unique | Lien avec FacturesInter.Inscription, AttestationsInter.Inscription via LEFT JOIN
data[].establishmentBuyerCode string Buyer establishment code Payeurs.CodeEtablissementPayeur (nvarchar(10) nullable) - Code établissement payeur | Index principal: index-code-etablissement-payeur, index-code-etablissement-payeur-date | Aussi dans AttestationsInter.CodeEtablissementPayeur, FacturesInter.CodeEtablissementPayeur
data[].yearlyProductCode string Yearly product code Code produit annuel de la formation
data[].yearlySessionCode string Yearly session code Code session annuel de la formation
data[].sessionNumber integer Session number Numéro de la session
data[].accounting string? Accounting information (nullable) Information comptable associée
data[].partial boolean Indicates if registration is partial Indicateur de formation partielle
data[].partiallyCompleted boolean Indicates if training is partially completed Indicateur de formation partiellement terminée
data[].lastPostponementDate string($date-time)? Last postponement date (nullable) Date du dernier report de formation
data[].session SessionResponse Session details retrieved from API Catalog (cached for performance) API Catalog via Azure Hybrid Connection - Session data cached in memory from T_SESSION + T_SESSION_COMPOSANT tables
Complex Objects & Sub-Objects
Field Type Description Database Source
city string Session city location API Catalog - T_SESSION.Ville (nvarchar) via cached service call
durationInDays integer Session duration in days API Catalog - Calculated from T_SESSION date range via cached service call
endDate string($date-time) Session end date API Catalog - T_SESSION.DateFin (datetime) via cached service call
isRemote boolean Whether the session is remote/online API Catalog - T_SESSION remote logic via cached service call
limitMax integer Maximum number of participants allowed API Catalog - T_SESSION.SeuilMax (int) via cached service call
limitMin integer Minimum number of participants required API Catalog - T_SESSION.SeuilMin (int) via cached service call
registrationCount integer Current number of registrations API Catalog - T_SESSION registration count via cached service call
sessionNumber integer Session number API Catalog - T_SESSION.NumeroSession (int) via cached service call
startDate string($date-time) Session start date API Catalog - T_SESSION.DateDebut (datetime) via cached service call
status string Session status (Open, Closed, Cancelled, etc.) API Catalog - T_SESSION.Statut (nvarchar) via cached service call
Data Source:
Usage:
Example Response

{
    "pageNumber": 1,
    "pageSize": 10,
    "totalItems": 104902,
    "totalPages": 10491,
    "data": [
        {
            "traineeFirstName": "Bénédicte",
            "traineeLastName": "GIN ",
            "traineeCompanyName": "INSTITUT PASTEUR DE LILLE",
            "traineeEstablishmentCode": "0194790001",
            "traineeEstablishmentName": "INSTITUT PASTEUR DE LILLE",
            "traineeEmail": "benedicte.gin@pasteur-lille.fr",
            "registrationManagerFirstName": "Sylvie",
            "registrationManagerLastName": "BOCKTAELS ",
            "registrationManagerEstablishmentCode": "0194790001",
            "registrationManagerEstablishmentName": "INSTITUT PASTEUR DE LILLE",
            "registrationManagerCompanyName": "INSTITUT PASTEUR DE LILLE",
            "registrationManagerEmail": "sylvie.bocktaels@pasteur-lille.fr",
            "trainingTitle": "Certificat Manager dans un environnement complexe",
            "trainingStartDate": "2026-04-20T00:00:00",
            "registrationState": "En cours",
            "registrationNumber": "1882931",
            "yearlyProductCode": "202509353",
            "yearlySessionCode": "202509353042",
            "sessionNumber": 42,
            "accounting": null,
            "partial": false,
            "partiallyCompleted": false,
            "lastPostponementDate": null,
            "session": {
                "startDate": "2026-04-20T00:00:00",
                "endDate": "2026-04-20T00:00:00",
                "durationInDays": 0.5,
                "sessionNumber": 42,
                "isRemote": true,
                "city": "A DISTANCE",
                "registrationCount": 5,
                "limitMin": 2,
                "limitMax": 6,
                "status": "Open"
            }
        }
    ]
}

History

GET /v1/History/intra

Purpose: History INTRA API provides access to INTRA training history with comprehensive filtering options and pagination
GET /v1/History/intra
Retrieve INTRA training history with advanced filtering capabilities including case numbers, formation names, and establishment codes. **BUSINESS RULE**: At least one of EstablishmentCode or EstablishmentBuyerCode must be provided.
Content-Type: application/json

Purpose:
Database Implementation
Database
DossiersClients (SQL Server)
Stored Procedure
Direct SQL Dapper query (no stored procedures): SELECT DISTINCT A.[mapped columns] FROM [dbo].[Affaires] A INNER JOIN [dbo].[FacturesIntra] F ON A.[NumAffaire] = F.[NumAffaire] WHERE (DateDebutFormation BETWEEN @dates OR DateDebutFormation = @DateDefault) AND A.TopAcceptationAffaire = 1 + dynamic filters ORDER BY A.[DateDebutFormation] DESC OFFSET @Offset ROWS FETCH NEXT @PageSize ROWS ONLY Structure table Affaires (key fields): • NumAffaire: nvarchar(50) NOT NULL - Case number (Primary Key, indexed) • TitreFormation: nvarchar(256) NOT NULL - Training title • DateDebutFormation: datetime NOT NULL - Training start date (indexed) • NomEtab: nvarchar(255) NOT NULL - Establishment name • NomEntr: nvarchar(255) NULL - Company name • CodeEtablissement: nvarchar(10) NOT NULL - Establishment code • TopAcceptationAffaire: bit NOT NULL DEFAULT(0) - Flag case acceptance Table FacturesIntra (link): • NumAffaire: Link key with Affaires • CodeEtablissementPayeur: nvarchar(10) - Paying establishment code (indexed) Data volume: • 28,954 accepted cases over 2 years • 5,699 distinct paying establishments • Performance index: PK_Affaires + index-code-etablissement-payeur
Tables Used
Table principale: [dbo].[Affaires] A (28K+ enregistrements validés) INNER JOIN [dbo].[FacturesIntra] F ON A.[NumAffaire] = F.[NumAffaire]
Business Logic: Search for INTRA training history via accepted cases. • Validation RequiredAtLeastOne: EstablishmentCode OR EstablishmentBuyerCode is mandatory • Strict filtering: TopAcceptationAffaire = 1 (only accepted cases) • Date management: main filter + default date 1900-01-01 + limit -5 years • Normalization: padding of NumAffaire with zeros on the left • INNER JOIN FacturesIntra for paying establishment • Native SQL pagination with OFFSET/FETCH NEXT • Performance: Clustered index on NumAffaire (Primary Key) + index on CodeEtablissementPayeur

Purpose: Search parameters for History INTRA with RequiredAtLeastOne conditional validation, multiple filtering options and pagination.
Request Fields
Required Fields
Field Type Description Validation Example
TrainingStartDate string($date-time) Training start date filter (required) Required date-time field. Must be valid ISO 8601 format. "2024-12-12T00:00:00Z"
TrainingEndDate string($date-time) Training end date filter (required) Required date-time field. Must be valid ISO 8601 format. "2024-12-12T23:59:59Z"
Optional Fields
Field Type Description Database Mapping Example
EstablishmentCode string Establishment code filter (RequiredAtLeastOne with EstablishmentBuyerCode) Establishment filtering in DossierClients INTRA tables "0182300047"
EstablishmentBuyerCode string Buyer code filter (RequiredAtLeastOne with EstablishmentCode) Buyer establishment filtering in DossierClients INTRA tables "0186080003"
CaseNumber array[string] Multiple case numbers filter for INTRA training lookup Case number lookup in DossierClients INTRA case management tables ["0000236104", "0000241304"]
FormationName string Formation name filter for INTRA training (partial match) Formation name search in DossierClients INTRA formation tables "Excel"
SingleCaseNumber string Single case number filter for INTRA training lookup Single case number lookup in DossierClients INTRA case management tables "0000240437"
PageNumber integer($int32) Page number for pagination (minimum 1) SQL OFFSET calculation 1
PageSize integer($int32) Page size for pagination (minimum 10) SQL FETCH NEXT calculation 10

Purpose: Paginated INTRA training history response with establishment, company and training details
INTRA History Search Flow
Complete INTRA history search flow from source systems to client portal
BIZTALK BIDATA API Document (Azure) Azure Hybrid Connection Api_Identity_Management Site Web Cegos.fr
Response Fields
Field Type Description Database Source
pageNumber integer Current page number
pageSize integer Items per page
totalItems integer Total number of items across all pages
totalPages integer Total number of pages
data[].establishmentCode string Establishment code dbo.Affaires.CodeEtablissement (nvarchar(14), NULL) - Establishment code from training affaire
data[].establishmentName string Establishment name dbo.Affaires.NomEtablissement (nvarchar(255), NULL) - Official establishment name from affaire
data[].companyName string Company name dbo.Affaires.NomSociete (nvarchar(255), NULL) - Company/organization name from affaire
data[].trainingDescription string Training description/title dbo.Affaires.TitreFormation (nvarchar(500), NULL) - Training title/description from affaire
data[].trainingStartDate string($date-time) Training start date dbo.Affaires.DateDebut (datetime, NULL) - Training start date from affaire. Default: 1900-01-01 if NULL
data[].caseNumber string Case number for INTRA training dbo.Affaires.NumAffaire (nvarchar(20), NOT NULL, PK) - Primary key affaire number for INTRA training case
Data Source:
Usage:
Example Response

{
    "pageNumber": 1,
    "pageSize": 10,
    "totalItems": 20588,
    "totalPages": 2059,
    "data": [
        {
            "establishmentCode": "2557830002",
            "establishmentName": "FRANCE TRAVAIL-CAMPUS SUD EST",
            "companyName": "FRANCE TRAVAIL-CAMPUS",
            "trainingDescription": "Maîtrise du temps et gestion des priorités",
            "trainingStartDate": "2025-06-25T00:00:00",
            "caseNumber": "0000263472"
        },
        {
            "establishmentCode": "0061900001",
            "establishmentName": "RADIO FRANCE",
            "companyName": "RADIO FRANCE",
            "trainingDescription": "Donner des feedbacks constructifs à ses collaborateurs",
            "trainingStartDate": "2025-06-13T00:00:00",
            "caseNumber": "0000263006"
        },
        {
            "establishmentCode": "0276590001",
            "establishmentName": "AGRAF",
            "companyName": "AGRAF",
            "trainingDescription": "Manager, prévenir les risques psychosociaux (RPS) dans vos équipes",
            "trainingStartDate": "2025-06-13T00:00:00",
            "caseNumber": "0000264365"
        }
    ]
}