> For the complete documentation index, see [llms.txt](https://docs.scepman.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.scepman.com/fr/gestion-des-certificats/management-rest-api.md).

# API REST de gestion

{% hint style="warning" %}
SCEPman Enterprise Edition uniquement

Applicable à la version 3.1 et supérieure
{% endhint %}

L’API de gestion fournit un accès administratif aux certificats émis dans SCEPman. Elle est destinée aux flux de travail de gestion et d’exploitation, tels que la localisation des certificats et leur révocation en cas de besoin.

Ces points de terminaison sont disponibles sous `/api/manage` et nécessitent un utilisateur authentifié disposant du **Manage.All** rôle dans SCEPman-api.

{% hint style="info" %}
Si vous effectuez une mise à niveau depuis une version antérieure de SCEPman, il se peut que vous n’ayez pas encore le rôle Manage.All. Exécutez `Complete-SCEPmanInstallation` à nouveau dans un cloud shell pour l’ajouter automatiquement à votre application SCEPman-api.
{% endhint %}

### Authentification

L’API utilise l’authentification Entra. Le moyen le plus simple de s’authentifier est souvent la Microsoft Authentication Library (MSAL).

Une façon d’obtenir un jeton Bearer pour l’API de gestion est d’utiliser Azure CLI. La valeur requise pour le paramètre \`--resource\` est l’URI d’ID d’application de l’inscription de votre application SCEPman-api (généralement son ID d’application précédé de `api://`).

```bash
az account get-access-token --resource api://[APPLICATION-ID] --query accessToken --output tsv
```

Par exemple :

```bash
TOKEN=$(az account get-access-token \
  --resource api://16b6a4d1-0a20-4b41-bf58-12783034cad3 \
  --query accessToken \
  --output tsv)
```

Vous pouvez ensuite utiliser ce jeton dans les appels à l’API :

```bash
curl -X GET "https://scepman.contoso.com/api/manage/search?searchText=ABC123&pageSize=10&certValidity=Any&certType=Any" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
```

### API de recherche

**`GET /api/manage/search`**

Recherche les certificats émis et renvoie un ensemble de résultats paginé.

#### Paramètres de recherche

**`searchText`**

Terme de recherche en texte libre utilisé pour trouver les certificats correspondants. Il est généralement utilisé pour des recherches basées sur des sous-chaînes, par exemple pour faire correspondre le demandeur ou d’autres métadonnées de certificat consultables.

**`pageSize`**

Nombre maximal de certificats renvoyés dans une seule page de réponse.

* Par défaut : 50

**`continuationToken`**

Jeton de pagination facultatif utilisé pour demander la page suivante de résultats.\
Renvoyez le `continuationToken` renvoyé par une réponse de recherche précédente pour continuer à récupérer davantage de certificats.

**`certValidity`**

Filtre les certificats par état de validité.

* Par défaut : `N’importe lequel`

Les valeurs valides sont `N’importe lequel`, `Actif`, `Expiré`, `Révoqué`.

**`certType`**

Filtre les certificats par type de certificat.

* Par défaut : `N’importe lequel`

Cela peut être utilisé pour restreindre l’ensemble de résultats à des catégories de certificats spécifiques. Les valeurs valides sont `Static`, `DC`, `Utilisateur`, `Appareil`, et `N’importe lequel`.

**`Sources`**

Filtre les certificats par le point de terminaison par lequel ils ont été émis. Vous pouvez spécifier ce filtre plusieurs fois, une fois par source.

* Par défaut : aucune restriction

Les valeurs valides sont indiquées dans le tableau ci-dessous ; vous devez spécifier la source à l’aide de ses valeurs entières :

| Source            | Value                                                            |
| ----------------- | ---------------------------------------------------------------- |
| CertificateMaster | 0                                                                |
| Intune            | 1 ou 9 (utilisez les deux pour vous assurer de tous les trouver) |
| Static            | 3                                                                |
| StaticAAD         | 4                                                                |
| Jamf              | 5                                                                |
| DomainController  | 6                                                                |
| API               | 7                                                                |
| RadiusAPI         | 8                                                                |
| Active Directory  | 10                                                               |

La réponse est une liste paginée d’enregistrements de certificats, plus un jeton de continuation pour récupérer la page suivante.

**Exemple**

```bash
curl -X GET "https://scepman.contoso.com/api/manage/search?searchText=507AEAC03CCEF83F106914418D9222E466A629C1&pageSize=10&certValidity=Any&certType=Any" \
  -H "Authorization: Bearer <token>" \
  -H "Accept: application/json"
```

**Exemple de réponse**

```json
{
  "items": [
    {
    "serialNumber":  "507AEAC03CCEF83F106914418D9222E466A629C1",
    "subject":  "CN=device01.contoso.local",
    "sans":  null,
    "upn":  null,
    "issuanceDate":  "2026-05-28T10:57:22Z",
    "expirationDate":  "2028-05-28T10:57:22Z",
    "revocationDate":  null,
    "revocationReason":  null,
    "revokedBy":  null,
    "requester":  "pkiAdmin@contoso.com",
    "source":  "CertificateMaster",
    "certificateType":  "Static"
    }
  ],
  "continuationToken": "..."
}
```

### **API de révocation**

**`PATCH /api/manage/revoke/{serialNumber}`**

Révoque un certificat identifié par son numéro de série.

Le corps de la requête contient :

* `revocationReason` - un entier indiquant la raison de la révocation. Voir le tableau ci-dessous pour les valeurs possibles
* `revoker` *(facultatif)* - un identifiant en texte libre pour la personne ou le système demandant la révocation

{% hint style="info" %}
Si spécifié, nous recommandons d’utiliser le UPN pour le champ revoker. S’il n’est pas spécifié, le UPN de l’utilisateur connecté sera utilisé. Même s’il est spécifié, le UPN de l’utilisateur connecté est toujours ajouté sous la forme "{revoker} via l’utilisateur API ${logged on user}".

Cette valeur est utilisée pour l’audit et dans les recherches.
{% endhint %}

**Exemple**

```bash
curl -X PATCH "https://scepman.contoso.com/api/manage/revoke/ABC123" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "revocationReason": 4,
    "revoker": "pkiAdmin@contoso.com"
  }'
```

**Réponse réussie**

```http
HTTP/1.1 200 OK
```

**Certificat introuvable**

```http
HTTP/1.1 404 Not Found
Content-Type: application/json
```

```json
{
  "errorMessage": "Certificat introuvable.",
  "errorCode": 7012
}
```

**Déjà révoqué**

```http
HTTP/1.1 409 Conflict
Content-Type: application/json
```

```json
{
  "errorMessage": "Le certificat est déjà révoqué.",
  "errorCode": 5013
}
```

#### Raisons de révocation prises en charge

L’API prend en charge les raisons de révocation spécifiées dans [RFC 5280](https://datatracker.ietf.org/doc/html/rfc5280#section-5.3.1):

| Value | Raison de révocation          |
| ----- | ----------------------------- |
| 0     | Non spécifiée                 |
| 1     | Compromission de la clé       |
| 2     | Compromission de l’AC         |
| 3     | Changement d’affiliation      |
| 4     | Remplacé                      |
| 5     | Cessation d’activité          |
| 6     | Mise en attente du certificat |
| 8     | Retirer de la CRL             |
| 9     | Révocation du privilège       |
| 10    | Compromission de l’AA         |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.scepman.com/fr/gestion-des-certificats/management-rest-api.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
