> 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/es/administracion-de-certificados/management-rest-api.md).

# API REST de administración

{% hint style="warning" %}
Solo en SCEPman Enterprise Edition

Aplicable a la versión 3.1 y posteriores
{% endhint %}

La API de administración proporciona acceso administrativo a los certificados emitidos en SCEPman. Está destinada a flujos de trabajo de administración y operativos, como localizar certificados y revocarlos cuando sea necesario.

Estos endpoints están disponibles en `/api/manage` y requieren un usuario autenticado con el **Manage.All** rol en SCEPman-api.

{% hint style="info" %}
Si actualizas desde una versión anterior de SCEPman, puede que todavía no tengas el rol Manage.All. Ejecuta `Complete-SCEPmanInstallation` de nuevo en Cloud Shell para agregarlo automáticamente a tu aplicación SCEPman-api.
{% endhint %}

### Autenticación

La API usa autenticación de Entra. La forma más sencilla de autenticarse suele ser Microsoft Authentication Library (MSAL).

Una forma de obtener un token de portador para la API de administración es con la Azure CLI. El valor requerido para el parámetro \`--resource\` es el URI de ID de aplicación de tu registro de aplicación SCEPman-api (normalmente su ID de aplicación con el prefijo `api://`).

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

Por ejemplo:

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

Luego puedes usar ese token en las llamadas a la 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 búsqueda

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

Busca certificados emitidos y devuelve un conjunto de resultados paginado.

#### Parámetros de búsqueda

**`searchText`**

Término de búsqueda de texto libre utilizado para encontrar certificados coincidentes. Normalmente se usa para búsquedas basadas en subcadenas, por ejemplo para hacer coincidir al solicitante u otros metadatos del certificado que se puedan buscar.

**`pageSize`**

Número máximo de certificados devueltos en una sola página de respuesta.

* Predeterminado: 50

**`continuationToken`**

Token de paginación opcional utilizado para solicitar la siguiente página de resultados.\
Devuelve el `continuationToken` devuelto por una respuesta de búsqueda anterior para continuar obteniendo más certificados.

**`certValidity`**

Filtra los certificados por estado de validez.

* Predeterminado: `Cualquiera`

Los valores válidos son `Cualquiera`, `Activo`, `Caducado`, `Revocado`.

**`certType`**

Filtra los certificados por tipo de certificado.

* Predeterminado: `Cualquiera`

Esto se puede usar para restringir el conjunto de resultados a categorías específicas de certificados. Los valores válidos son `Static`, `DC`, `Usuario`, `Dispositivo`, y `Cualquiera`.

**`Fuentes`**

Filtra los certificados por el endpoint a través del cual han sido emitidos. Puedes especificar este filtro varias veces, una por origen.

* Predeterminado: Sin restricción

Los valores válidos se muestran en la tabla siguiente; debes especificar el origen usando sus valores enteros:

| Origen            | Valor                                                   |
| ----------------- | ------------------------------------------------------- |
| CertificateMaster | 0                                                       |
| Intune            | 1 o 9 (usa ambos para asegurarte de encontrarlos todos) |
| Static            | 3                                                       |
| StaticAAD         | 4                                                       |
| Jamf              | 5                                                       |
| DomainController  | 6                                                       |
| API               | 7                                                       |
| RadiusAPI         | 8                                                       |
| Active Directory  | 10                                                      |

La respuesta es una lista paginada de registros de certificados más un token de continuación para obtener la siguiente página.

**Ejemplo**

```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"
```

**Respuesta de ejemplo**

```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 revocación**

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

Revoca un certificado identificado por su número de serie.

El cuerpo de la solicitud contiene:

* `revocationReason` - un entero para el motivo de la revocación. Consulte la tabla siguiente para conocer los posibles valores
* `revoker` *(opcional)* - un identificador de texto libre para la persona o sistema que solicita la revocación

{% hint style="info" %}
Si se especifica, recomendamos usar el UPN para el campo revoker. Si no se especifica, se usará el UPN del usuario que ha iniciado sesión. Incluso si se especifica, el UPN del usuario que ha iniciado sesión sigue añadiéndose en la forma "{revoker} a través del usuario de API ${logged on user}".

Este valor se usa para auditoría y en búsquedas.
{% endhint %}

**Ejemplo**

```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"
  }'
```

**Respuesta satisfactoria**

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

**Certificado no encontrado**

```http
HTTP/1.1 404 No encontrado
Content-Type: application/json
```

```json
{
  "errorMessage": "Certificado no encontrado.",
  "errorCode": 7012
}
```

**Ya revocado**

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

```json
{
  "errorMessage": "El certificado ya está revocado.",
  "errorCode": 5013
}
```

#### Motivos de revocación admitidos

La API admite los motivos de revocación especificados en [RFC 5280](https://datatracker.ietf.org/doc/html/rfc5280#section-5.3.1):

| Valor | Motivo de revocación      |
| ----- | ------------------------- |
| 0     | Sin especificar           |
| 1     | Compromiso de clave       |
| 2     | Compromiso de la CA       |
| 3     | Cambio de afiliación      |
| 4     | Sustituido                |
| 5     | Cese de operación         |
| 6     | Retención del certificado |
| 8     | Eliminar de la CRL        |
| 9     | Privilegio retirado       |
| 10    | Compromiso de la 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/es/administracion-de-certificados/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.
