Saltar a contenido

OPG - API de integración

La API de integración de OPG permite la generación de documentos PDF. El cliente puede interactuar directamente con esta API para la generación masiva de documentos.

Autenticación

El cliente se auténtica por medio de un bearer token para las solicitudes diferentes a la generación del documento PDF.

Este token debe enviarse en el header Authorization de cada solicitud http, por ejemplo:

1
2
POST https://opg.ofimatic.net/api/v1/templates/
Authorization: Bearer {{JWT_TOKEN}}

Crear Plantilla

Solicitud HTTP para crear plantilla:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
POST https://opg.ofimatic.net/api/v1/templates/
X-Api-Key: {{API_KEY}}
Content-Type: application/json

{
    "name": string,
    "max_data_per_page": int,
    "max_rows_per_page": int,
    "status": boolean,
    "fixed_key_password": string,
    "master_password": string
}

Pruebalo en Postman

Descripción de los campos

Campo Descripción Obligatorio
name Nombre de plantilla pdf. SI
max_data_per_page En tablas dinámicas, cuantas filas se llenaran con datos. SI
max_rows_per_page En tablas dinámicas, cuantas filas tendrá. SI
status Estado de la plantilla. SI
fixed_key_password Campo de contraseña dinámica por cada documento. NO
master_password Contraseña maestra. NO

Trama JSON de ejemplo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
POST https://opg.ofimatic.net/api/v1/templates/
Authorization: Bearer {{JWT_TOKEN}}
Content-Type: application/json

{
    "name": "EstadoTC",
    "max_data_per_page": 16,
    "max_rows_per_page": 24,
    "status": true,
    "fixed_key_password":"",
    "master_password":""
}

Respuesta

Se retorna el código 200 OK con el código de la plantilla:

1
2
3
{
    {{ID-TEMPLATE}}
}

Edición de la plantilla

Enviar el código de plantilla con los datos modificados.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
PATCH https://opg.ofimatic.net/api/v1/templates/{{ID-TEMPLATE}}
Authorization: Bearer {{JWT_TOKEN}}
Content_Type: application/json

{
    "name": "EstadoTC",
    "max_data_per_page": 16,
    "max_rows_per_page": 24,
    "status": true,
    "fixed_key_password": "",
    "master_password": "ofimatic"
}

Pruebalo en Postman

Configuración de la plantilla

Enviar el código de plantilla con la configuración del documento.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
POST https://opg.ofimatic.net/api/v1/templates/{{ID-TEMPLATE}}/settings
Authorization: Bearer {{JWT_TOKEN}}
Content-Type: application/json

{
    "orientation": string,
    "margin_left": decimal,
    "margin_right": decimal,
    "margin_top": decimal,
    "margin_bottom": decimal,
    "page_height": decimal,
    "page_width": decimal,
    "dpi": int
}

Descripción de los campos

Campo Descripción Obligatorio
orientation Orientación "Portait" - "Vertical". SI
margin_left Margen izquierdo del documento en MM. SI
margin_right Margen derecho del documento en MM. SI
margin_top Margen superior del documento en MM. SI
margin_bottom Margen inferior del documento en MM. SI
page_height Altura del documento en MM. SI
page_width Ancho del documento en MM. SI
dpi Resolución de pixel. SI

Trama JSON de ejemplo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
POST https://opg.ofimatic.net/api/v1/templates/{{ID-TEMPLATE}}/settings
Authorization: Bearer {{JWT_TOKEN}}
Content-Type: application/json

{
    "orientation":"portrait",
    "margin_left":0.0, 
    "margin_right":0.0, 
    "margin_top":0.0, 
    "margin_bottom":10.0, 
    "page_height":279.4, 
    "page_width":215.9, 
    "dpi":200
}

Editar Configuración de la Plantilla

Enviar el código de plantilla con la relación de datos.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
PATCH https://opg.ofimatic.net/api/v1/templates/{{ID-TEMPLATE}}/settings
Authorization: Bearer {{JWT_TOKEN}}
Content-Type: application/json

{
    "orientation":"vertical",
    "margin_left":0.0, 
    "margin_right":0.0, 
    "margin_top":0.0,
    "orientation":"vertical", 
    "margin_left":0.0, 
    "margin_right":0.0, 
    "margin_top":0.0,
}

Relación de Campos Variables

Creación y Edición

Enviar el código de plantilla con la relación de datos.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
PUT https://opg.ofimatic.net/api/v1/templates/{{ID-TEMPLATE}}/mappings
Authorization: Bearer {{JWT_TOKEN}}
Content-Type: application/json

{
    "fixed_keys": [ 
        "NAME",
        "EMAIL", 
        "ADDRESS", 
        "CARDTYPE", 
        "CARDNUMBER", 
        "CORTE",
        "CICLO", 
        "FACTURACION", 
        "DISPONIBLE", 
        "BALANCEANTERIOR", 
        "PAGOS", 
        "COMPRAS", 
        "BALANCECORTE", 
        "PAGUEANTESFECHA", 
        "DISPONIBLEUS",
        "BALANCEANTERIORUS", 
        "PAGOSUS", 
        "COMPRASUS", 
        "BALANCECORTEUS", 
        "CUOTASVENCIDAS", 
        "IMPORTEVENCIDO",
        "PAGOMINIMOPUNTOSOFIMATIC", 
        "PAGOMINIMO", 
        "PAGOTOTALPUNTOSOFIMATIC", 
        "PAGOTOTAL", 
        "CUOTASVENCIDASUS", 
        "IMPORTEVENCIDOUS",
        "PAGOMINIMOPUNTOSOFIMATICUS",
        "PAGOMINIMOUS", 
        "CARDNUMBERUS", 
        "PAGOTOTALPUNTOSOFIMATICUS", 
        "PAGOTOTALUS", 
        "TOTALDECOMPRAS", 
        "CUOTAPUNTOSOFIMATIC",
    ],
    "dynamic_keys":[
        {
            "key": "fecha_transaccion",
            "td_code": "<td style=\"text-align:center\">", 
            "index": 0
        },
        {
            "key": "fecha_entrada",
            "td_code": "<td style=\"text-align:center\">", 
            "index": 1
        },
        {
            "key": "numero_referencia",
            "td_code": "<td style=\"text-align:center\">",
            "index": 2
        },
        {
            "key": "concepto",
            "td_code": "<td style=\"text-align:center\">", 
            "index": 3
        },
        {
            "key": "debito",
            "td_code": "<td style=\"text-align:center\">", 
            "index": 4
        },
        {
            "key": "credito",
            "td_code": "<td style=\"text-align:center\">", 
            "index": 5
        }
    ]
}

Pruebalo en Postman

Campo Desripcion Obligatorio
fixed_keys Estos serán los campos con valor fijo en el documento. SI
dynamic_keys Estos son los campos con valores dinámicos dentro de una tabla. SI

Crear Documento

Crear cuerpo de documento mediante plantilla HTML

El documento se construye mediante plantillas HTML las cuales pueden se cargadas mediante las etiquetas html_content, html_header y html_footer asociadas al id de la plantilla creada. Mas detalles en de la construcción de la plantilla en el html_readme.pdf.

1
2
3
4
5
6
7
8
9
POST https://opg.ofimatic.net/api/v1/templates/{{ID-TEMPLATE}}/html
Authorization: Bearer {{JWT_TOKEN}}
Content-Type: application/json

{
    --form 'html_content=@"/path/to/file"' \
    --form 'html_header=@"/path/to/file"' \
    --form 'html_footer=@"/path/to/file"'
}

Pruebalo en Postman

Campo Descripción Obligatorio
html_content Contenido del documento. SI
html_header Encabezado del documento. NO
html_footer Pie de página del documento. NO

Editar plantilla HTML

1
2
3
4
5
6
7
8
9
PUT https://opg.ofimatic.net/api/v1/templates/{{ID-TEMPLATE}}/html 
Authorization: Bearer {{JWT_TOKEN}}
Content-Type: application/json

{
    --form 'html_content=@"/path/to/file"' \
    --form 'html_header=@"/path/to/file"' \
    --form 'html_footer=@"/path/to/file"'
}

Generar Documento

Autenticación

El cliente se auténtica por medio de una llave API_KEY que será entregada por Ofimatic SRL.

Este API_KEY debe enviarse en el header X-Api-Key de cada solicitud http, por ejemplo:

Generar PDF

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
POST https://opg.ofimatic.net/api/v1/templates/{{ID-TEMPLATE}}/generate-pdf
X-Api-Key: {{API_KEY}}
Content-Type: application/json

{
    "fixed_data": {

    },
    "dynamic_data":[
        {
        }
    ]
}
Campo Descripción Obligatorio
fixed_keys Campos fijos definidos con sus valores. SI
dynamic_keys Arreglo de objetos de campos dinámicos con sus valores. SI

Trama JSON de ejemplo

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
POST https://opg.ofimatic.net/api/v1/templates/{{ID-TEMPLATE}}/generate-pdf
X-Api-Key: {{API_KEY}}
Content-Type: application/json

{
    "fixed_data": {
        "NAME": "Juan Ant. Perez de Los Santos", 
        "EMAIL": "demo@ofimatic.com",
        "ADDRESS": "Calle Nicolás Ureña de Mendoza #3, Los Prados, Santo Domingo", 
        "CARDTYPE": "Clasica Internacional",
        "CARDNUMBER": "**** **** **** 1111", 
        "CORTE": "30/04/2022",
        "CICLO": "5",
        "FACTURACION": "21",
        "DISPONIBLE": "100,000.00",
        "BALANCEANTERIOR": "40,000.00",
        "PAGOS": "10,000.00",
        "COMPRAS": "50.00",
        "BALANCECORTE": "5,900.00", 
        "PAGUEANTESFECHA": "24/05/2022", 
        "DISPONIBLEUS": "2,000.00",
        "BALANCEANTERIORUS": "1,000.00",
        "PAGOSUS": "1.00",
        "COMPRASUS": "165.00",
        "BALANCECORTEUS": "235.55",
        "CUOTASVENCIDAS": "2",
        "IMPORTEVENCIDO": "100.00",
        "PAGOMINIMOPUNTOSOFIMATIC": "2,300.00",
        "PAGOMINIMO": "523.00",
        "PAGOTOTALPUNTOSOFIMATIC": "963.00",
        "PAGOTOTAL": "3,543.22",
        "CUOTASVENCIDASUS": "2",
        "IMPORTEVENCIDOUS": "522.00",
        "PAGOMINIMOPUNTOSOFIMATICUS": "12.00",
        "PAGOMINIMOUS": "1,232.00",
        "CARDNUMBERUS": "**** **** **** 1112",  
        "PAGOTOTALPUNTOSOFIMATICUS": "1,235.55",
        "PAGOTOTALUS": "3,543.01",
        "TOTALDECOMPRAS": "1,235.22",
        "CUOTAPUNTOSOFIMATIC": "0",
        "BALANCEALCORTE": "242.00",
        "CREDITODISPONIBLE": "50.00"
    },
    "dynamic_data":[
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 1,000.00",
            "credito": "RD$ 2,000.00"

        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 3,000.00",
            "credito": "RD$ 4,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 1,000.00",
            "credito": "RD$ 2,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 1,000.00",
            "credito": "RD$ 2,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 1,000.00",
            "credito": "RD$ 2,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 1,000.00",
            "credito": "RD$ 2,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 1,000.00",
            "credito": "RD$ 2,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 1,000.00",
            "credito": "RD$ 2,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 1,000.00",
            "credito": "RD$ 2,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 1,000.00",
            "credito": "RD$ 2,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 1,000.00",
            "credito": "RD$ 2,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 1,000.00",
            "credito": "RD$ 2,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 1,000.00",
            "credito": "RD$ 2,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 1,000.00",
            "credito": "RD$ 2,000.00"
        },
        {
            "fecha_transaccion": "2020-01-01",
            "fecha_entrada": "2020-01-01",
            "numero_referencia": "123456789123456789", 
            "concepto": "Pruebas",
            "debito": "RD$ 1,000.00",
            "credito": "RD$ 2,000.00"
        },
    ]
}

Pruebalo en Postman

Respuesta

Se retorna el código 200 OK con el código de generación y documento en base64:

1
2
3
4
5
6
{
    "data":{
        "id": {{ID-FILE}},
        "file": {{BASE-FILE}}
    }
}

Consulta

Consulta de documentos Generados

1
2
3
POST https://opg.ofimatic.net/api/v1/templates/{{ID-TEMPLATE}}/requests/{{ID-Request}} 
Authorization: Bearer {{JWT_TOKEN}}
Content-Type: application/json

Pruebalo en Postman