Skip to content

Commit

Permalink
Petites amélioration de la documentation de l'api (#4815)
Browse files Browse the repository at this point in the history
* Improve api documentation

* simplify specs for webhook endpoints

* Update spec/swagger_helper.rb

Co-authored-by: Adrien Di Pasquale <[email protected]>

* Update spec/swagger_helper.rb

Co-authored-by: Adrien Di Pasquale <[email protected]>

---------

Co-authored-by: Adrien Di Pasquale <[email protected]>
  • Loading branch information
victormours and adipasquale authored Nov 19, 2024
1 parent a850ff5 commit 3821418
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 42 deletions.
29 changes: 8 additions & 21 deletions docs/api/v1/description_api.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
L'API de RDV-Solidarités vous permet de lire des données dans notre base depuis votre logiciel.
L'API de RDV Service Public permet à nos partenaires, comme par exemple Démarches Simplifiées et RDV Insertion,d'ajouter de la gestion de rendez-vous dans leurs applications métier.
Elle peut aussi être utilisée pour synchroniser les calendriers des agents de votre administration avec ceux qu'ils ont sur leur compte RDV Service Public.

Toutes les fonctionnalités de RDV-Solidarités ne sont pas encore disponibles via l’API. Contactez-nous si vous avez besoin de fonctionnalités qui ne sont pas encore présentes.
L'API est disponible pour nos trois marques : RDV Service Public, RDV Solidarités, et RDV Aide Numérique.

# Dépréciations

**ATTENTION le champ `created_by` des `rdvs` et des `participations` est déprécié au profit du champ `created_by_type`.**
Toutes les fonctionnalités de l'application ne sont pas encore disponibles via l’API. Contactez-nous si vous avez besoin de fonctionnalités qui ne sont pas encore présentes.

# Requêtes

Expand All @@ -23,28 +22,15 @@ Les paramètres doivent respecter les formats suivants :
- `DATE` : "YYYY-MM-DD" par exemple : "2021-10-21"
- `TIME` : H:m[:s], par exemple : "10:30"

# Versionnage

L'API est versionnée. La version actuelle est 1.0 (référencée comme v1 dans les points de terminaison).

# Routes

Les points de terminaison de l'API sont accessibles par une route de la forme : `https://<domain>/api/<version>/<endpoint>`.

Avec :

- `version` est la version de l'API
- `endpoint` est le nom du point de terminaison

Par exemple, on aura : `https://<domain>/api/v1/absences`

Pour la version production, les requêtes doivent être adressées à https://www.rdv-solidarites.fr et non à https://rdv-solidarites.fr.

Pour la version démo, les requêtes doivent être adressées à https://demo.rdv-solidarites.fr.

# Authentification

Certains points de terminaison sont réservés aux agents authentifiés, dans la limite de leur rôle au sein de l'application.
Presque tous les points de terminaison sont réservés aux agents authentifiés, dans la limite de leur rôle au sein de l'application.

## Headers d'authentification

Expand Down Expand Up @@ -145,9 +131,10 @@ La réponse contient en outre un objet meta qui indique le nombre total de pages
}
```

# Rate limiting
# Dépréciations

**ATTENTION le champ `created_by` des `rdvs` et des `participations` est déprécié au profit du champ `created_by_type`.**

L'utilisation de l'API est limitée pour les points de terminaison sans authentification. Vous pouvez effectuer au maximum 50 appels par minutes. Si vous dépassez cette limite, une erreur 429 vous sera renvoyée et vous trouverez le temps que vous devez attendre avant de relancer une requête dans le header (`Retry-After`).

# Codes de retour

Expand Down
34 changes: 18 additions & 16 deletions spec/requests/api/v1/webhook_endpoints_request_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -109,15 +109,16 @@

run_test!

it { expect(WebhookEndpoint.count).to eq(webhook_endpoint_count_before + 1) }

it { expect(created_webhook_endpoint.organisation).to match(organisation) }

it { expect(created_webhook_endpoint.target_url).to eq(target_url) }

it { expect(created_webhook_endpoint.secret).to eq(secret) }

it { expect(created_webhook_endpoint.subscriptions).to match_array(%w[rdv user user_profile organisation motif lieu agent agent_role]) }
specify do
expect(WebhookEndpoint.count).to eq(webhook_endpoint_count_before + 1)

expect(created_webhook_endpoint.reload).to have_attributes(
organisation: organisation,
target_url: target_url,
secret: secret,
subscriptions: %w[rdv user user_profile organisation motif lieu agent agent_role]
)
end
end

it_behaves_like "an endpoint that returns 401 - unauthorized"
Expand Down Expand Up @@ -173,13 +174,14 @@

run_test!

it { expect(webhook_endpoint.reload.organisation).to eq(other_organisation) }

it { expect(webhook_endpoint.reload.target_url).to eq(target_url) }

it { expect(webhook_endpoint.reload.secret).to eq(secret) }

it { expect(webhook_endpoint.reload.subscriptions).to eq(%w[rdv user user_profile organisation motif lieu agent agent_role]) }
specify do
expect(webhook_endpoint.reload).to have_attributes(
organisation: other_organisation,
target_url: target_url,
secret: secret,
subscriptions: %w[rdv user user_profile organisation motif lieu agent agent_role]
)
end
end

it_behaves_like "an endpoint that returns 401 - unauthorized"
Expand Down
14 changes: 11 additions & 3 deletions spec/swagger_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
"v1/api.json" => {
openapi: "3.0.1",
info: {
title: "API RDV Solidarités",
title: "API de RDV Service Public",
version: "v1",
description: Rails.root.join("docs/api/v1/description_api.md").read,
},
Expand Down Expand Up @@ -581,7 +581,11 @@
},
{
name: "PublicLink",
description: "Désigne des liens publics de recherche d'un territoire. Ces liens permettent d'accéder directement à la recherche, préfiltrée sur un territoire donné.",
description:
<<~DESCRIPTION,
Utilisé pour faire la correspondance entre des ids externes et des liens de prises de RDV au sein d'un territoire. Ces liens permettent d'accéder directement à la recherche de créneaux pour une organisation donnée.
Cet endpoint est limité à 50 appels par minute par adresse IP.
DESCRIPTION
},
{
name: "Absence",
Expand All @@ -600,9 +604,13 @@
url: "https://demo.rdv-solidarites.fr",
description: "Serveur de démo",
},
{
url: "https://rdv.anct.gouv.fr",
description: "Serveur de production pour RDV Service Public",
},
{
url: "https://www.rdv-solidarites.fr",
description: "Serveur de production",
description: "Serveur de production pour RDV Solidarités",
},
],
},
Expand Down
Loading

0 comments on commit 3821418

Please sign in to comment.