> 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/api-rest-de-gestion.md).

# API REST de gestion

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

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 opérationnels, comme localiser des certificats et les révoquer si nécessaire.

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

{% hint style="info" %}
Si vous effectuez une mise à jour 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. La méthode la plus simple pour s’authentifier est souvent la Microsoft Authentication Library (MSAL).

Une façon d’obtenir un jeton porteur 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 votre inscription d’application SCEPman-api (généralement son ID d’application préfixé par `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 par sous-chaîne, par exemple pour faire correspondre le demandeur ou d’autres métadonnées de certificat recherchables.

**`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 des résultats.\
Renvoyez le `continuationToken` renvoyé par une réponse de recherche précédente pour continuer à récupérer d’autres certificats.

**`certValidity`**

Filtre les certificats selon leur état de validité.

* Par défaut : `Tous`

Les valeurs valides sont `Tous`, `Actif`, `Expiré`, `Révoqué`.

**`certType`**

Filtre les certificats par type de certificat.

* Par défaut : `Tous`

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

**`Sources`**

Filtre les certificats selon 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 leurs valeurs entières :

| Source                | Valeur                                                       |
| --------------------- | ------------------------------------------------------------ |
| CertificateMaster     | 0                                                            |
| Intune                | 1 ou 9 (utilisez les deux pour vous assurer de tout trouver) |
| Statique              | 3                                                            |
| StaticAAD             | 4                                                            |
| Jamf                  | 5                                                            |
| Contrôleur de domaine | 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" %}
S’il est 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": "Certificate not found.",
  "errorCode": 7012
}
```

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

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

```json
{
  "errorMessage": "The certificate is already revoked.",
  "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):

| Valeur | Raison de révocation  |
| ------ | --------------------- |
| 0      | Non spécifiée         |
| 1      | Compromission de clé  |
| 2      | Compromission de l’AC |
| 3      | Affiliation modifiée  |
| 4      | Remplacé              |
| 5      | Cessation d’activité  |
| 6      | Certificat en attente |
| 8      | Retirer de la CRL     |
| 9      | Privilège retiré      |
| 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

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

The question should be specific, self-contained, and written in natural language.
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.
