Add documentation about api

pull/2163/head
Jérémy Rialland 2022-06-07 14:10:48 +02:00 committed by Johan Girod
parent d3cc88a00b
commit 7ad95cff23
3 changed files with 62 additions and 109 deletions

View File

@ -3,9 +3,12 @@ openapi: 3.0.0
info:
title: Mon-entreprise API
version: beta
description: Cet API expose les règles Publicodes de [mon-entreprise](https://mon-entreprise.urssaf.fr/).
description: |
Cet API expose les règles Publicodes de [mon-entreprise](https://mon-entreprise.urssaf.fr/).
Pour plus d'informations, consultez [notre documentation](/d%C3%A9veloppeur/api).
servers:
- url: https://mon-entreprise-api.osc-fr1.scalingo.io/api/v1/
- url: /api/v1/
paths: {}

View File

@ -924,7 +924,10 @@ exports[`e2e test mon-entreprise api > Test openapi.json endpoint 2`] = `
},
},
"info": {
"description": "Cet API expose les règles Publicodes de [mon-entreprise](https://mon-entreprise.urssaf.fr/).",
"description": "Cet API expose les règles Publicodes de [mon-entreprise](https://mon-entreprise.urssaf.fr/).
Pour plus d'informations, consultez [notre documentation](/d%C3%A9veloppeur/api).
",
"title": "Mon-entreprise API",
"version": "beta",
},
@ -1064,7 +1067,7 @@ exports[`e2e test mon-entreprise api > Test openapi.json endpoint 2`] = `
},
"servers": [
{
"url": "https://mon-entreprise-api.osc-fr1.scalingo.io/api/v1/",
"url": "/api/v1/",
},
],
}

View File

@ -1,44 +1,15 @@
import Emoji from '@/components/utils/Emoji'
import { ScrollToTop } from '@/components/utils/Scroll'
import { H1, H2, H3 } from '@/design-system/typography/heading'
import { Message } from '@/design-system'
import { H1, H2, H3, H4 } from '@/design-system/typography/heading'
import { Link } from '@/design-system/typography/link'
import { Body } from '@/design-system/typography/paragraphs'
import { Trans } from 'react-i18next'
import styled from 'styled-components'
const js = `
async function salaireNetEnBrutMensuel(net) {
const body = {
situation: {
"contrat salarié . rémunération . net": net + " €",
},
expressions: [
"contrat salarié . rémunération . brut de base",
"contrat salarié . prix du travail",
],
};
const response = await fetch(
"https://2138--mon-entreprise.netlify.app/api/v1/evaluate",
{
method: "post",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(body),
}
);
console.log(response);
const json = await response.json();
console.log(response.status);
console.log(json);
return json.evaluate.map(({ nodeValue }) => nodeValue);
}
const [brut, superBrut] = await salaireNetEnBrutMensuel(3500);
console.log(brut, superBrut);
const InlineCode = styled.code`
background-color: #eee;
padding: 0.25rem;
border-radius: 0.25rem;
`
export default function API() {
@ -48,29 +19,58 @@ export default function API() {
<Trans i18nKey="pages.développeur.api">
<H1>Utiliser notre API REST</H1>
<Body>
Si votre site ou service requiert de faire des calculs de salaire, par
exemple passer du salaire brut au salaire net, bonne nouvelle : tous
les calculs de cotisations et impôts qui sont derrière mon-entreprise
sont libres et utilisé via notre{' '}
Si votre site ou service requiert de faire des calculs sur des
salaires, par exemple passer du salaire brut au salaire net, bonne
nouvelle : tous les calculs de cotisations et impôts qui sont derrière
mon-entreprise sont libres et utilisable via notre{' '}
<Link href="/api/v1/doc/">API REST</Link>.
<Link href="https://docs.google.com/spreadsheets/d/1wbfxRdmEbUBgsXbGVc0Q6uqAV4IfLvux6oUJXJLhlaU/edit?usp=sharing">
{/* <Link href="https://docs.google.com/spreadsheets/d/1wbfxRdmEbUBgsXbGVc0Q6uqAV4IfLvux6oUJXJLhlaU/edit?usp=sharing">
Google Sheets
</Link>
</Link> */}
</Body>
<H2>Comment utiliser cette API ?</H2>
<Body>
Toutes nos règles de calculs sont écrites en `publicodes`, un language
déclaratif développé par beta.gouv.fr et l'Urssaf pour encoder des
algorithmes d'intérêt public.{' '}
<Link href="https://publi.codes">En savoir plus sur publicodes</Link>
L'api 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 : <InlineCode>/evaluate</InlineCode>,{' '}
<InlineCode>/rules</InlineCode> et{' '}
<InlineCode>/rules/:rule</InlineCode>.
</Body>
<Body></Body>
{/* <H3>Installation</H3> */}
<pre>
<code>{{ js }}</code>
</pre>
<Message type="info">
<H4>Qu'est ce que Publicodes ?</H4>
<Body>
C'est un language déclaratif développé par beta.gouv.fr et l'Urssaf
pour encoder des algorithmes d'intérêt public.
<br />
Toutes nos règles de calculs sont donc écrites dans ce language.
<br />
<a href="https://publi.codes">En savoir plus sur publicodes</a>
</Body>
</Message>
<H3>POST /evaluate</H3>
<Body>
Permet d'évaluer les expressions de publicode avec une situation
donnée
<br />
Vous trouverez plus d'infos sur la structure du JSON à envoyer sur
notre{' '}
<Link href="/api/v1/doc/#/publicodes-api/evaluate">Swagger</Link>.
</Body>
<H3>GET /rules</H3>
<Body>Permet de récupérer toutes les règles publicodes</Body>
<H3>GET /rules/:rule</H3>
<Body>Permet de récupérer une règle publicodes</Body>
<H2>Exemple</H2>
<Body>
Voici un exemple d'utilisation des différentes routes, vous pouvez
explorer leur code dans le dossier <InlineCode>example</InlineCode>
</Body>
<div
className="ui__ full-width"
@ -80,62 +80,9 @@ export default function API() {
>
<iframe
css="width:100%; max-width: 1200px; height:500px; border:0; border-radius: 4px; overflow:hidden;"
src="https://stackblitz.com/edit/vitejs-vite-hgagfj?ctl=1&embed=1&file=main.js"
src="https://stackblitz.com/edit/api-mon-entreprise?ctl=1&embed=1&file=main.js"
></iframe>
</div>
<H3>Lancer le calcul</H3>
<Body>
Il ne vous reste plus qu'à paramétrer le moteur avec les règles du
paquet `modele-social` et à appeler la fonction `evaluate` sur la
règle que dont vous souhaitez la valeur. Voici un exemple pour le
calcul brut / net
</Body>
<H2>Paramétrer le calcul</H2>
<Body>
Vous l'aurez constaté dans l'exemple précédent, la recette d'un calcul
est simple : des variables d'entrée (le salaire brut), une ou
plusieurs variables de sorties (le salaire net).
</Body>
<Body>
Le calcul est cependant paramétrable avec toutes les possibilités
permise dans la legislation.
</Body>
<Body>
Toutes ces variables sont listées et expliquées sur la{' '}
<Link target="_blank" rel="noreferrer" href="/documentation">
documentation en ligne
</Link>
. Cette documentation est auto-générée depuis les fichiers de règles
publicodes, elle est donc constamment à jour.
</Body>
<Body>
Lançons un calcul plus proche d'une fiche de paie : voici une
description de la situation d'entrée annotée de liens vers les pages
correspondantes de la documentation :
</Body>
<blockquote>
<Body>
{' '}
Un{' '}
<Link href="https://mon-entreprise.urssaf.fr/documentation/contrat-salarié/statut-cadre/choix-statut-cadre">
cadre
</Link>{' '}
gagnant{' '}
<Link href="https://mon-entreprise.urssaf.fr/documentation/contrat-salarié/rémunération/brut-de-base">
3 400 bruts
</Link>{' '}
, qui bénéficie de{' '}
<Link href="https://mon-entreprise.urssaf.fr/documentation/contrat-salari%C3%A9/frais-professionnels/titres%E2%80%91restaurant">
titres-restaurant
</Link>{' '}
et qui travaille dans une entreprise de{' '}
<Link href="https://mon-entreprise.urssaf.fr/documentation/entreprise/effectif">
22 salariés
</Link>
.
</Body>
</blockquote>
</Trans>
</div>
)