# Documentación API Interoperabilidad MITUR
## Descripción
Esta API permite la interacción con los servicios del MITUR. Los usuarios pueden crear solicitudes, subir documentos, agregar registros del grid, pagos, descarga de documentos, etc...
**Ultima actualizacion:** ==11/08/2024==
**Desarrollador:** ==Jossias Velazquez - j.velazquez@mitur.gob.do==
## URL Base
```
https://Tu-servidor-xroad/r1/DO/GOB/[INSTITUCION]/[SUBSISTEMA]/SOFTEXPERT/api
```
## Headers
| Key | Value | Obligatorio | Descripción |
|----------------|--------|-------------|--------------------------------------|
|`x-road-client` | string | Si | Ejemplo: DO/GOB/MITUR/UCTT-TEST |
|`Athorization` | string | No | Ejemplo: Basic base64(email:password)|
## Autenticación
Esta API utiliza método de autenticación Basic, se le proveerá de un usuario y contraseña que deberá proveer vía heders en el siguiente formato:
**`Authorization: 'Basic ' + base64('email:password')`**
Todos los endpoints requieren de el usuario y password en formato base64 en los encabezados.
---
## Endpoints
### 1. Datos del servicio
#### GET /v2/services/{id}
Obtiene los datos del servicio, precios, formulario, pasos y toda la información necesaria para requerir el servicio desde una fuente externa
- **URL**: `/v2/services/{id}`
- **Método HTTP**: `GET`
- **Headers**:
- `x-road-client: DO/GOB/INSTITUCION/SUBSISTEMA`
- `Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=`
##### Ejemplo de Solicitud
```http
GET /v2/services/11 HTTP/1.1
Host: tu-servidor-xroad
x-road-client: DO/GOB/INSTITUCION/SUBSISTEMA
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
```
##### Respuesta Exitosa
- **Código HTTP**: `200 OK`
- **Cuerpo**:
```json
{
"success": true,
"data": {
"id": 11,
"process_id": "DPP01EXT",
"code_serv": "mitur-no-objecion-a-uso-de-suelo-1011",
"name": "No Objeción a Uso de Suelo",
"provider": "softexpert",
}
}
```
### 2. Workflows
#### POST /v2/workflows/create
Crea una instancia del workflow especificado
- **URL**: `/v2/workflows/create`
- **Método HTTP**: `POST`
- **Headers**:
- `x-road-client: DO/GOB/INSTITUCION/SUBSISTEMA`
- `Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=`
##### Cuerpo de la Solicitud
| Campo | Tipo | Obligatorio | Valor fijo | Descripción |
| -------------------------- | ------ | ----------- | ---------- | --------------------------------------------------------------------------------- |
| `workflow.processId` | string | Sí | Sí | ID del proceso que se desea instanciar |
| `workflow.workflowTitle` | string | Sí | No | Titulo con el que desea identificar la solicitud |
| `workflow.activityId` | string | Sí | Sí | ID de la actividad donde se adjuntarán los documentos |
| `workflow.source` | string | Sí | Sí | Origen desde donde se envía, uno de estos valores [PRO, VUC, UCTT] |
| `workflow.entityAttribute` | array | No | No | Arraglo de objetos del con datos del formulario |
| `payment.amount` | number | Si | No | Monto pagado |
| `payment.approvalNumber` | string | Si | No | Numero de aprobación de la transacción si fue pagado por SIRITE |
| `payment.documentReceipt` | object | No | No | Objeto que contiene los datos del archivo de comprobante de pago. |
| `payment.folder` | string | Si | Si | Categoria de asociacion de documento [DPPDE, CONFOTURDE, LICENCIASDE, MERCADEODE] |
| `payment.date` | string | No | No | Fecha en la que se aplicó el pago (SIRITE) |
| `payment.paymentMethod` | string | Si | No | Metodo de pago utilizado "DEPOSITO/SIRITE" |
| `children` | array | No | No | Array de objetos para registros de grid |
| `documents` | array | No | No | Array de objetos con datos de los documentos |
##### Objetos
###### document
###### child
|Campo | Tipo | Obligatorio | Valor fijo |Descripción |
|---------|---------|----------------|---------------|---------------|
###### documentReceipt
##### Ejemplo de Solicitud
```http
POST /api/v2/workflows/create HTTP/1.1
Host: tu-servidor-xroad
x-road-client: DO/GOB/INSTITUCION/SUBSISTEMA
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Content-Type: application/json
{
"workflow": {
"processId": "DPP01EXT",
"workflowTitle": "Solicitud desde Prodominicana",
"entityId": "mitur01",
"source": "PRO",
"activityId": "MITUR001",
"entityAttribute": [
{
"entityAttributeId": "numsolvuc",
"entityAttributeValue": "PROD-02"
}
]
},
"payment": {
"amount": 20000,
"approvalNumber": "",
"documentReceipt": {
"data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII",
"filename": "comprobante-de-pago-mitur-2023-12-21-042549.png"
},
"folder": "DPPDE",//fijo
"paymentDate": "",
"paymentMethod": "DEPOSITO"
},
"children": [
{
"childRelationshipId": "datoscopropieta",
"mainEntityId": "mitur01",
"rows": [
{
"entityAttributes": [
{
"entityAttributeId": "nombrecopropiet",
"entityAttributeValue": "pedo"
},
{
"entityAttributeId": "apellidoscoprop",
"entityAttributeValue": "soto"
}
]
}
]
}
],
"documents": [
{
"attributes": null,
"categoryId": "DPPDE",
"data": "https://www.antennahouse.com/hubfs/xsl-fo-sample/pdf/basic-link-1.pdf",
"filename": "Registro Mercantil.pdf",
"title": "Registro Mercantil 1"
}
]
}
```
##### Respuesta Exitosa
- **Código HTTP**: `200 OK`
- **Cuerpo**:
```json
{
"valid": true,
"data": {
"status": "SUCCESS",
"code": 1,
"detail": "Workflow iniciado con éxito",
"recordKey": "2784",
"recordId": "DPP01-PRO-0060"
}
}
```
##### Errores Comunes
| Código HTTP | Código de Error | Mensaje |
|-------------|-----------------|-------------------------------|
| 401 | `UNAUTHORIZED` | Token no válido o expirado |
| 403 | `FORBIDDEN` | No tienes permisos suficientes|
| 500 | `INTERNAL SERVER ERROR` | Error en la ejecución de la webservice|
#### PUT /v2/workflows/actions/resolve
Responde una acción requerida a un workflow en específico
- **URL**: `/v2/workflows/actions/resolve`
- **Método HTTP**: `PUT`
- **Headers**:
- `x-road-client: DO/GOB/INSTITUCION/SUBSISTEMA`
- `Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=`
##### Cuerpo de la Solicitud
| Campo | Tipo | Obligatorio | Descripción |
|-------------|--------|-------------|---------------------------------------------|
| `workflowID`| string | Sí | ID del workflow |
| `activityId`| string | Sí | Actividad donde se encuentra la solicitud |
| `documents` | array | Sí | Arreglo de documentos a subir |
##### Ejemplo de Solicitud
```http
PUT /v2/workflows/actions/resolve HTTP/1.1
Host: tu-servidor-xroad
x-road-client: DO/GOB/INSTITUCION/SUBSISTEMA
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Content-Type: application/json
{
"workflowId" : "DPP01-PRO-0060",
"activityId" : "MITUR02312",
"documents": [
{
"attributes": [
{
"AttributeId": "NumeroSolicitud",
"AttributeValue" : "DPP01-PRO-0060"
}
],
"categoryId": "DPPDE",
"data": "https://www.antennahouse.com/hubfs/xsl-fo-sample/pdf/basic-link-1.pdf",
"filename": "Registro Mercantil.pdf",
"title": "Registro Mercantil 2"
}
]
}
```
---
### 2. Documentos
#### GET /v1/documents/{id}/download
Obtiene el documento en formato bas64
- **URL**: `/v1/documents/{id}/download`
- **Método HTTP**: `GET`
- **Headers**:
- `x-road-client: DO/GOB/INSTITUCION/SUBSISTEMA`
- `Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=`
##### Parámetros de consulta
| Parámetro | Tipo | Obligatorio | Descripción |
|-----------------|--------|-------------|------------------------------------------------------------------------------------------|
| `asLink` | int | No | Enviar valor `1` si se requiere el documento en una url en vez del base64 |
##### Ejemplo de Solicitud
```http
GET /v1/documents/DPPPLANOSDEFINITIVOS000016/download HTTP/1.1
Host: tu-servidor-xroad
x-road-client: DO/GOB/INSTITUCION/SUBSISTEMA
Authorization: Basic <token>
```
##### Respuesta Exitosa
- **Código HTTP**: `200 OK`
- **Cuerpo**:
```json
{
"valid": true,
"data": [
{
"filename": "RESOLUCION OCEAN BLUE & SANDS.pdf",
"data": "https://dev.softexpert.mitur.gob.do/se/v34014/temp/2a4a426d-577b-4ed4-b5f7-c9f27263cc49843507717620365617.pdf"
}
]
}
```
##### Errores Comunes
| Código HTTP | Código de Error | Mensaje |
|-------------|-----------------|-------------------------------|
| 401 | `UNAUTHORIZED` | Datos de usuarios inválidos |
| 403 | `FORBIDDEN` | No tienes permisos suficientes|
| 404 | `NOT FOUND` | Documento no encontrado
## Notas adicionales
- Asegurate de usar la versión correcta (en la url) al consumir un endpoint.
- Esta documentación está en desarrollo y puede ser actualizada en cualquier momento.
- Para solicitar un usuario de pruebas contactar al desarrollador.