diff --git a/api/source/openapi.yaml b/api/source/openapi.yaml index 52dcc1127..b7629a40e 100644 --- a/api/source/openapi.yaml +++ b/api/source/openapi.yaml @@ -11,4 +11,52 @@ info: servers: - url: /api/v1/ -paths: {} +paths: + /evaluate: + post: + requestBody: + content: + application/json: + examples: + SalaireBrutEnNet: + value: + { + 'situation': + { + 'contrat salarié . rémunération . brut de base': + { 'valeur': 4200, 'unité': '€ / mois' }, + 'contrat salarié': "'CDI'", + }, + 'expressions': ['contrat salarié . rémunération . net'], + } + MicroEntreprise: + value: + { + situation: + { + "dirigeant . auto-entrepreneur . chiffre d'affaires": '42000 €/an', + 'entreprise . activité': "'libérale'", + 'entreprise . activité . libérale réglementée': 'non', + 'entreprise . catégorie juridique': "'EI'", + 'entreprise . catégorie juridique . EI . auto-entrepreneur': 'oui', + 'dirigeant . auto-entrepreneur . impôt . versement libératoire': 'non', + 'impôt . méthode de calcul': "'taux neutre'", + }, + expressions: + [ + { + 'valeur': 'dirigeant . auto-entrepreneur . cotisations et contributions', + 'unité': '€/an', + }, + 'dirigeant . rémunération . impôt', + 'dirigeant . auto-entrepreneur . net après impôt', + ], + } + /rules/{rule}: + get: + parameters: + - examples: + SalaireNet: + value: 'contrat salarié . rémunération . net' + Impot: + value: 'impôt . méthode de calcul' diff --git a/api/source/utils.ts b/api/source/utils.ts index 45417e99c..fc7783a45 100644 --- a/api/source/utils.ts +++ b/api/source/utils.ts @@ -31,6 +31,13 @@ export function mergeDeep( target[key] as Record, source[key] as Record ) + } else if (Array.isArray(target[key]) && Array.isArray(source[key])) { + return (target[key] as unknown[]).map((el, i) => + mergeDeep( + el as Record, + (source[key] as unknown[])[i] as Record + ) + ) as unknown as Record } else { Object.assign(target, { [key]: source[key] }) } diff --git a/site/source/locales/ui-en.yaml b/site/source/locales/ui-en.yaml index 2d2169b1e..2be0f833b 100644 --- a/site/source/locales/ui-en.yaml +++ b/site/source/locales/ui-en.yaml @@ -1139,17 +1139,14 @@ pages: this API?<3>The my-company api is totally open and without authentication, it is composed of 3 routes inspired by the methods of the Publicodes interpreter: <1>/evaluate, <4>/rules and - <7>/rules/:rule.<4><0>What is Publicodes?<1>It is a - declarative language developed by beta.gouv.fr and the Urssaf to encode - public interest algorithms.<1>All our calculation rules are written in - this language.<3><4>Learn more about publicodes<5>POST - /evaluate<6>Allows to evaluate the expressions of publicode with a - given situation<1>You will find more info on the structure of the JSON - to send on our <4>Swagger.<7>GET /rules<8>Retrieve all - publicode rules<9>GET /rules/:rule<10>Retrieve a publicodes - rule<11>Example<12>Here is an example of how to use the - different routes, you can explore their code in the - <1>examplefolder<13><0>" + <7>/rules/:rule.<9><10>Find more information on our + <13>Swagger UI.<15><4><0>What is Publicodes?<1>It is a + declarative language developed by beta.gouv.fr and Urssaf to encode public + interest algorithms.<1>All our calculation rules are therefore written + in this language.<3><4>Learn more about + publicodes<5>Example<6>Here is an example of how to use + the different routes, you can explore their code in the + <1>examplefolder<7><0>" bibliothèque: "<0>Integrate our calculation library<1>If you think that your website or service would benefit from displaying salary calculations, for example switching from gross to net salary, good news: all the tax and diff --git a/site/source/locales/ui-fr.yaml b/site/source/locales/ui-fr.yaml index 483c5b6f1..c00b5ef03 100644 --- a/site/source/locales/ui-fr.yaml +++ b/site/source/locales/ui-fr.yaml @@ -903,18 +903,14 @@ pages: mon-entreprise est totalement ouverte et sans authentification, elle se compose de 3 routes qui s'inspirent des méthodes de l'interpréteur Publicodes : <1>/evaluate, <4>/rules et - <7>/rules/:rule.<4><0>Qu'est ce que Publicodes ?<1>C'est un - language déclaratif développé par beta.gouv.fr et l'Urssaf pour encoder - des algorithmes d'intérêt public.<1>Toutes nos règles de calculs sont - donc écrites dans ce language.<3><4>En savoir plus sur - publicodes<5>POST /evaluate<6>Permet d'évaluer les - expressions de publicode avec une situation donnée<1>Vous trouverez - plus d'infos sur la structure du JSON à envoyer sur notre - <4>Swagger.<7>GET /rules<8>Permet de récupérer toutes les - règles publicodes<9>GET /rules/:rule<10>Permet de récupérer une - règle publicodes<11>Exemple<12>Voici un exemple d'utilisation - des différentes routes, vous pouvez explorer leur code dans le dossier - <1>example<13><0>" + <7>/rules/:rule.<9><10>Retrouvez plus d'informations sur + notre <13>Swagger UI.<15><4><0>Qu'est ce que Publicodes + ?<1>C'est un language déclaratif développé par beta.gouv.fr et + l'Urssaf pour encoder des algorithmes d'intérêt public.<1>Toutes nos + règles de calculs sont donc écrites dans ce language.<3><4>En savoir + plus sur publicodes<5>Exemple<6>Voici un exemple + d'utilisation des différentes routes, vous pouvez explorer leur code dans + le dossier <1>example<7><0>" bibliothèque: "<0>Intégrez notre bibliothèque de calcul<1>Si vous pensez que votre site ou service gagnerait à afficher des calculs de salaire, par exemple passer du salaire brut au salaire net, bonne nouvelle : tous les diff --git a/site/source/pages/integration/API.tsx b/site/source/pages/integration/API.tsx index 4b5987174..adad13516 100644 --- a/site/source/pages/integration/API.tsx +++ b/site/source/pages/integration/API.tsx @@ -33,6 +33,11 @@ export default function API() { l'interpréteur Publicodes : /evaluate,{' '} /rules et{' '} /rules/:rule. +
+
+ Retrouvez plus d'informations sur notre{' '} + Swagger UI. +
@@ -47,22 +52,6 @@ export default function API() { -

POST /evaluate

- - Permet d'évaluer les expressions de publicode avec une situation - donnée -
- Vous trouverez plus d'infos sur la structure du JSON à envoyer sur - notre{' '} - Swagger. - - -

GET /rules

- Permet de récupérer toutes les règles publicodes - -

GET /rules/:rule

- Permet de récupérer une règle publicodes -

Exemple

Voici un exemple d'utilisation des différentes routes, vous pouvez