> For the complete documentation index, see [llms.txt](https://docs.editran.onesait.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.editran.onesait.com/documentacion-editran/open-v5.2.1/api.md).

# API

El interfaz de programación de aplicaciones basadas en el módulo de *editranG*, de la plataforma de comunicaciones de Indra, permite a los desarrolladores de aplicaciones usuarias acceder a todos los servicios que la plataforma proporciona.

Esta API incorpora la misma funcionalidad que se ofrece desde el menú de operador de *editranG*, pudiéndose sustituir de esta manera la actuación manual por un programa de aplicación.

## Solicitud de servicio

### Función EDItranG Req

Realiza la petición a **editranG** para la presentación dada y espera el resultado de dicha petición si 'bWait' es distinto de cero.

* Declaración de la función en C, C++

```c
Int EDItranG_Req (char *Request, char \*Presentación, int bWait, int
bVerbose);
```

* Declaración de la función en Visual Basic

```vb
Declare Function EDItranG_Req Lib \"libedi_g\" Alias \"\_EDItranG_Req\"
(ByVal txtRequest As String, ByVal txtPresentation As String, ByVal
bWait As Long, ByVal bVerbose As Long) As Long
```

#### Parámetros

* Request - Operación a realizar, puede tener los siguientes valores

| INITE\_EDITRANG\_REQ   | Inicializar emisión   |
| ---------------------- | --------------------- |
| LOADE\_EDITRANG\_REQ   | Cargar emisión        |
| SEND\_EDITRANG\_REQ    | Emitir                |
| ENDE\_EDITRANG\_REQ    | Interrumpir emisión   |
| INITR\_EDITRANG\_REQ   | Inicializar recepción |
| UNLOADR\_EDITRANG\_REQ | Descargar recepción   |
| RECV\_EDITRANG\_REQ    | Recibir               |
| ENDR\_EDITRANG\_REQ    | Interrumpir recepción |

* Presentación - identificador de la presentación sobre la que realizar la petición.
* bWait - Esperar respuesta.
* bVerbose - Modo verboso.

#### Valores de retorno

| *COD* | *ID*               | *MENSAJE*                                                                                                                                                                    |
| ----- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0     |                    | Resultado correcto                                                                                                                                                           |
| 62    | NO\_TAMPON         | Formato de TAMPON incorrecto                                                                                                                                                 |
| 64    | OPEN\_IN           | Error al abrir fichero de aplicación que se emite.                                                                                                                           |
| 65    | OPEN\_OUT          | Error al abrir fichero de aplicación que se recibe.                                                                                                                          |
| 66    | READ\_CTRL         | Error al leer información de control en TAMPON o CSB.                                                                                                                        |
| 67    | WRITE\_CTRL        | Error al escribir información de control en TAMPON o CSB.                                                                                                                    |
| 68    | WRITE\_DATA        | Error al escribir datos en TAMPON o CSB.                                                                                                                                     |
| 69    | ZERO\_REC          | Fichero TAMPON sin registros cargados.                                                                                                                                       |
| 70    | ALLOC\_ERROR       | Error interno: manejo de memoria.                                                                                                                                            |
| 71    | SAVE\_REL          | Error al guardar información de ficheros transmitidos.                                                                                                                       |
| 73    | WRITE\_OUT         | Error al escribir fichero de aplicación que se recibe.                                                                                                                       |
| 74    | SEQUENCE\_CSB      | Fichero CSB erróneo: error de secuencia.                                                                                                                                     |
| 75    | TOTAL\_FILES       | Fichero CSB erróneo: error en el número total de ficheros.                                                                                                                   |
| 76    | TYPE\_FILE         | Fichero CSB erróneo: formato de fichero desconocido.                                                                                                                         |
| 77    | LENGTH\_CSBREC     | Fichero CSB erróneo: error en la longitud de los ficheros.                                                                                                                   |
| 78    | HASH\_ERROR        | Error al calcular/validar hash del fichero transmitidos.                                                                                                                     |
| 79    | SIZE\_FILERECS     | Descuadre en el número de registros del fichero de aplicación. El número total de registros indicado en campos de control del CSB no coincide con los realmente descargados. |
| 80    | TOTAL\_CSBRECS     | Fichero CSB erróneo: error en el número total de registros.                                                                                                                  |
| 81    | SIZE\_FILEBYTES    | Descuadre en el total de bytes del fichero de aplicación. El número de bytes indicado en campos de control del CSB no coincide con los realmente descargados.                |
| 82    | SYNCS\_CSB         | Descuadre en el número de sincronismos en CSB.                                                                                                                               |
| 83    | CFG\_LENGTH        | Fichero de aplicación con registro menor que el dado en perfil. Revisar las características de los ficheros a emitir.                                                        |
| 84    | STS\_ERROR         | Error en acceso a fichero de estados editran/G.                                                                                                                              |
| 85    | OPEN\_CSB          | Error al abrir/crear fichero CSB.                                                                                                                                            |
| 86    | NO\_PERFILG\_LOCAL | No existe perfil local de editran/G.                                                                                                                                         |
| 87    | NO\_PERFILG        | No existe perfil de la Presentación.                                                                                                                                         |
| 88    | EXEC\_CONVER       | Error genérico en proceso de conversión a CSB.                                                                                                                               |
| 89    | EXEC\_CARGADOR     | Error en el proceso de carga/descarga del TAMPON.                                                                                                                            |
| 90    | CFG\_NO\_FILES     | No existen o no se encuentra ninguno de los ficheros especificados en perfil como ficheros de emisión.                                                                       |
| 91    | USER\_SCRIPT       | Error al ejecutar script de usuario.                                                                                                                                         |
| 93    | PROFILES           | Perfil de la Presentación incompatible con proceso de carga/descarga.                                                                                                        |
| 94    | CANCELED\_REQ      | Transmisión cancelada.                                                                                                                                                       |
| 95    | PROC\_ERROR        | Error interno: creación de procesos.                                                                                                                                         |
| 96    | RUNTIME\_EXCEPT    | Error interno: "runtime exception".                                                                                                                                          |
| 97    | NO\_LICENSE        | Problema de licencia para realizar alguna de las funciones requeridas.                                                                                                       |
| 98    | CRYPT\_ERROR       | Error en el tratamiento criptográfico de los datos.                                                                                                                          |
| 99    | HDRFILE            | Error interno: cabeceras de control inválidas.                                                                                                                               |
| 200   | NO\_ACK            | No se ha podido confirmar la descarga remota.                                                                                                                                |
| 201   | NO\_STATE          | Petición incompatible con el estado de la transmisión.                                                                                                                       |
| 104   | LIBERACION\_P      | Excepción - Aborto                                                                                                                                                           |
| 110   | LIBERACION\_P      | Excepción - Operador                                                                                                                                                         |
| 120   | LIBERACION\_P      | Excepción - Tampón remoto incorrecto. Lanza previo.                                                                                                                          |
| 121   | LIBERACION\_P      | Excepción - Tampón remoto incorrecto. No existe previo.                                                                                                                      |
| 122   | LIBERACION\_P      | Excepción - Tampón remoto incorrecto. Previo en posible ejecución                                                                                                            |
| 123   | LIBERACION\_P      | Excepción - Tampón remoto incorrecto. Número de sesión de intercambio incorrecto                                                                                             |
| 124   | LIBERACION\_P      | Excepción - Tampón remoto incorrecto. Número de registros totales                                                                                                            |
| 130   | LIBERACION\_P      | Excepción - Desconexión de red.                                                                                                                                              |
| 140   | LIBERACION\_P      | Excepción - Exceso de reintentos para emitir.                                                                                                                                |
| 160   | LIBERACION\_P      | Excepción - Descuadre de totales.                                                                                                                                            |
| 170   | LIBERACION\_P      | Excepción - Exceso de reintentos de sincronismo.                                                                                                                             |
| 190   | LIBERACION\_P      | Excepción - Exceso de reintentos de fin de emisión.                                                                                                                          |
| 240   | LIBERACION\_P      | Excepción - Perfiles.                                                                                                                                                        |
| 250   | LIBERACION\_P      | Excepción - Fichero TAMPON no disponible.                                                                                                                                    |

### Función GetErrText

Transforma los códigos de retorno de la función *EDItranG\_Req* en texto.

La función *GetErrText* es adecuada tanto para usarla en programas C o C++ u otros lenguajes de programación de Windows como Visual Basic.

* Declaración de la función en C, C++:

```c
void GetErrText (int nError, char \*szError);
```

* Declaración de la función en Visual Basic:

```vb
Declare Sub GetErrText Lib \"libedi_g\" Alias \"\_GetErrText\" (ByVal
nError As Long, ByVal strError As String)
```

### Función EDItranIsAlive

Indica el estado del sistema editran. La función devuelve 0 si el sistema está inactivo y 1 si está listo para recibir peticiones.

* Declaración de la función en C, C++:

```c
int EDItranIsAlive (void);
```

## Entorno de ejecución

Las aplicaciones que hacen uso del API de **editranG** pueden ser invocadas desde cualquier directorio. Para ello sólo es necesario modificar la variable de entorno PATH para que incluya el directorio donde se encuentren las DLLs que implementan el API.

Cuando el sistema editran al que se hacen las peticiones se encuentra en un sistema remoto, es necesario definir la dirección IP a la que conectarse. En estos casos, en la carpeta que contiene las DLLs de editran */API* crear un fichero de texto con nombre *distribuido.cfg* con el siguiente contenido:

editrang;\<ip-servidor-editran>

## Ejemplo de programación

### Entorno C, C++

En editran/API se entrega un ejemplo de uso del API en lenguaje de programación C. Se encuentra en la carpeta *ejemplo* y contiene:

* *egreq.c*: fichero fuente que muestra cómo utilizar el API para generar una utilidad que lanza emisiones/recepciones por editran.
* *ejemplo.sln, ejemplo.vcproj*: Archivos de proyecto Microsoft Visual Studio 2008 con el que construir el programa de ejemplo. Para ello, abrir el fichero ejemplo.snl, seleccionar en *"Build > Configuration Manager"* como configuración activa ***"Release"***. Para generar la aplicación, en la barra de menú seleccionar *"Build > Build Solution"*.

#### Dependencias

La DLLs entregadas en el API se han generado con Microsoft Visual Studio 2008 por lo que tienen dependencia de la librería CRT (C run-time) MSVCR90.dll. Si las aplicaciones que usan el API se generan con una versión superior del compilador, al ejecutar la aplicación se produce un error del sistema:

![Ejemplo de Error](https://261070666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2W4cn5C1WDTJzDOR25es%2Fuploads%2Fgit-blob-2f06145b2a86478953326ecb05ec609e3d9ae3f3%2Fejemplo_error.png?alt=media)

Para solucionarlo la aplicación debe llevar insertado el archivo manifiesto que describe esa dependencia. Para incorporarlo por ejemplo en un proyecto Visual Studio 2015 hacer:

* En el diálogo "**Property Pages"** del proyecto, hacer clic en **"Manifest Tool"**, seleccionar **"Input and Output"**, en el campo **"Additional Manifest Files"** añadir el archivo *bin\lib\libedi\_g.manifest* del API.

![ejemplo proporty pages](https://261070666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2W4cn5C1WDTJzDOR25es%2Fuploads%2Fgit-blob-4e80c40f8767cc7711a251b8a2344e303042d48e%2Fproperties_pages.png?alt=media)

### Entorno Visual Basic

* Ediapi.frm

```vb
Private Sub btnEjecutar_Click()
  Dim nRet As Integer
  Dim strError As String
  Dim txtRequest as String
  Dim txtPresentation as String
  Dim lWait as Long
  Dim lVerbose as Long

  'Reservo memoria y asigno variables
  strError = Space(500)
  txtRequest = "InitE"
  txtPresentation = "Presentacion01"

  lWait = 1

  lVerbose =1

  'Llamada a la función de la DLL
  nRet = EDItranG_Req(txtRequest, txtPresentation, lWait, lVerbose)

  'Reemplazo el codigo de error por un texto mediante otra llamada a la DLL
  GetErrText nRet, strError

  MsgBox ("Retorno: " & nRet & ". " & strError)

End Sub
```

* Module1.bas

```vb
Attribute VB_Name = "Module1"

' Declaraciones globales de las funciones de la DLL

Declare Function EDItranG_Req Lib "libedi_g" Alias "_EDItranG_Req" (ByVal txtRequest As String, ByVal txtPresentation As String, ByVal bWait As Long, ByVal bVerbose As Long) As Long

Declare Sub GetErrText Lib "libedi_g" Alias "_GetErrText" (ByVal nError As Long, ByVal strError As String)
```

## Componentes de Onesait · Editran/API

Para la descarga del software acceda a la [página oficial del producto Editran](https://www.onesait.com/editran/resources).

En la sección Recursos > *Windows > Software > Módulos Core* encontrará el enlace al archivo zip con el software más actualizado de editran\*/API\*.

* Una vez descomprimido, el software descargado se estructura según el siguiente árbol de directorios:

```txt
home-api-editran
 |-- bin
 |    |-- lib
 |
 |-- include
 |-- ejemplo
```

* home-api-editran: creado por el usuario como directorio raíz del software del API editran.
* home-api-editran/bin: DLLs que implementan la funcionalidad del API editran.
* home-api-editran/bin/lib: biblioteca de importación con la información sobre exportaciones para otros programas C/C++.
* home-api-editran/include: Archivos .h con la declaración C de la interfaz descrita en este documento.
* home-api-editran/ejemplo: archivos con el código fuente y el proyecto necesario para generar el programa ejemplo del apartado 3.1.


---

# 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, and the optional `goal` query parameter:

```
GET https://docs.editran.onesait.com/documentacion-editran/open-v5.2.1/api.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
