API Estampillador

En esta sección explicamos cómo es el proceso para consumir el api de la aplicación Estampillador.

# API Estampillador - Guia de Consumo

## Ambientes

- TEST: https://estampillastest.amr.org.ar/api/test
- PRODUCCION: https://estampillas.amr.org.ar/api/v1

## Autenticacion

- Tipo: Bearer JWT.
- Header: `Authorization: Bearer <token>`

### Obtener token (ejemplo)

```bash
curl --location 'https://auth.amr.org.ar/realms/AMR-Gestion/protocol/openid-connect/token' \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'grant_type=password' \
  --data-urlencode 'client_id=estampilladorBackend' \
  --data-urlencode 'username=usuario' \
  --data-urlencode 'password=contraseña' \
  --data-urlencode 'client_secret=secretoDeClienteProvistoPorAMR'
```

## Formato de respuestas

- Content-Type: `application/json`

### Error (formato unico)

```json
{
  "timestamp": "2026-02-24T10:15:30.123",
  "message": "Detalle del error"
}
```

Codigos habituales:

- 400: validacion de request.
- 403: permiso denegado.
- 404: recurso inexistente.
- 500: error inesperado.

## Endpoints

### Tipos de documentos

`GET /tiposDocumentos`

Respuesta:

```json
[
  {
    "codigo": 1,
    "descripcion": "Documento Nacional de Identidad",
    "abreviatura": "DNI"
  }
]
```

### Profesiones

`GET /profesiones`

Respuesta:

```json
[
  {
    "codigo": 1,
    "nombre": "Médico"
  }
]
```

### Profesiones habilitadas como efector

`GET /profesiones/efectores`

Respuesta:

```json
[
  {
    "codigo": 1,
    "nombre": "Médico"
  },
  {
    "codigo": 2,
    "nombre": "Fonoaudiólogo"
  }
]
```

### Efectores sugeridos

`GET /efectores/sugeridos?codigoProfesion={short}&filtro={string}`

Parametros:

- `codigoProfesion` (short, requerido)
- `filtro` (string, requerido)

Respuesta:

```json
[
  {
    "id": {
      "codigoProfesion": 10,
      "matriculaProfesional": 12345,
      "libro": "A",
      "folio": "12"
    },
    "nombre": "Nombre Efector",
    "tipoDocumento": {
      "codigo": 1,
      "descripcion": "Documento Nacional de Identidad",
      "abreviatura": "DNI"
    },
    "numeroDocumento": 12345678
  }
]
```

### Tipos de estampillas

`GET /tiposEstampillas`

Respuesta:

```json
[
  {
    "codigo": 1,
    "descripcion": "Colegio de Médicos"
  }
]
```

### Estampillar

`POST /estampillas`

Request:

```json
{
  "efector": {
    "id": {
      "codigoProfesion": 10,
      "matriculaProfesional": 12345,
      "libro": "A",
      "folio": "12"
    }
  },
  "paciente": {
    "tipoDocumento": {
      "codigo": 1
    },
    "nombre": "Juan",
    "apellido": "Perez",
    "email": "[email protected]",
    "numeroDocumento": "12345678",
    "numeroFicha": "F-0001"
  },
  "tipoEstampilla": {
    "codigo": 1
  },
  "observaciones": "Texto opcional"
}
```

Campos requeridos:

- `efector.id.codigoProfesion`
- `efector.id.matriculaProfesional`
- `paciente.tipoDocumento.codigo`
- `paciente.nombre`
- `paciente.numeroDocumento`
- `paciente.numeroFicha`
- `tipoEstampilla.codigo`

Respuesta:

```json
{
  "id": "c2c7b3d5-3d7d-4f21-9d1b-3b5db2b8a1f4",
  "prestador": {
    "id": {
      "codigoProfesion": 10,
      "matriculaProfesional": 12345,
      "libro": "A",
      "folio": "12"
    },
    "nombre": "Nombre Prestador"
  },
  "efector": {
    "id": {
      "codigoProfesion": 10,
      "matriculaProfesional": 12345,
      "libro": "A",
      "folio": "12"
    },
    "nombre": "Nombre Efector",
    "tipoDocumento": {
      "codigo": 1,
      "descripcion": "DNI",
      "abreviatura": "DNI"
    },
    "numeroDocumento": 12345678
  },
  "paciente": {
    "tipoDocumento": {
      "codigo": 1,
      "descripcion": "DNI",
      "abreviatura": "DNI"
    },
    "numeroDocumento": "12345678",
    "nombre": "Juan",
    "apellido": "Perez",
    "email": "[email protected]",
    "numeroFicha": "F-0001"
  },
  "tipoEstampilla": {
    "codigo": 1,
    "descripcion": "Estampilla X"
  },
  "observaciones": "Texto opcional",
  "fechaEmision": "2026-02-24T10:15:30.123",
  "importe": 1234.56,
  "url": "https://..."
}
```

### Obtener estampilla

`GET /estampillas/{uuid}`

Respuesta: mismo formato que `POST /estampillas`.