· 6 years ago · Nov 14, 2019, 11:54 PM
1openapi: 3.0.0
2info:
3 title: Prometeo API
4 description: Endpoints para la api bancaria de Prometeo
5 contact:
6 name: Prometeo
7 url: 'https://prometeoapi.com'
8 email: info@prometeoapi.com
9 version: '1.0'
10servers:
11 - url: 'https://test.prometeo.qualia.uy/'
12 variables: {}
13 description: Sandbox
14 - url: 'https://prometeo.qualia.uy/'
15 variables: {}
16 description: Produccion
17components:
18 schemas:
19 ErrorMessage:
20 type: object
21 properties:
22 status:
23 type: string
24 default: error
25 message:
26 type: string
27 Date:
28 type: string
29 pattern: '\d\d/\d\d/\d{4}'
30 description: Fecha en formato DD/MM/YYYY
31 Currency:
32 type: string
33 pattern: '[A-Z]{3}'
34 description: Moneda en formato ISO-4217
35 Country:
36 type: string
37 pattern: '[A-Z]{2}'
38 description: Codigo de pais en formato ISO-3166
39 Account:
40 type: object
41 properties:
42 id:
43 type: string
44 name:
45 type: string
46 number:
47 type: string
48 branch:
49 type: string
50 currency:
51 $ref: '#/components/schemas/Currency'
52 balance:
53 type: number
54 Movement:
55 type: object
56 properties:
57 id:
58 type: integer
59 credit:
60 type: number
61 debit:
62 type: number
63 reference:
64 type: string
65 date:
66 $ref: '#/components/schemas/Date'
67 detail:
68 type: string
69 securitySchemes:
70 ApiKeyAuth:
71 type: apiKey
72 description: 'API Key necesaria para hacer llamadas'
73 name: 'X-API-Key'
74 in: header
75 parameters:
76 SessionKey:
77 name: 'key'
78 description: 'Clave de sesion que identifica al usuario en la institucion financiera'
79 in: query
80 schema:
81 type: string
82 required: true
83 responses:
84 MissingAPIKey:
85 description: Falta API Key
86 content:
87 application/json:
88 schema:
89 $ref: '#/components/schemas/ErrorMessage'
90 example: >
91 {
92 "status": "error",
93 "message": "Missing API key"
94 }
95 InvalidOrMissingParameters:
96 description: Parametros invalidos o ausentes
97 content:
98 application/json:
99 schema:
100 $ref: '#/components/schemas/ErrorMessage'
101 example: >
102 {
103 "status": "error",
104 "message": "Invalid parameters: date_end"
105 }
106security:
107 - ApiKeyAuth: []
108paths:
109 /login/:
110 summary: Login
111 description: Iniciar sesion con una institucion financiera
112 post:
113 requestBody:
114 required: true
115 content:
116 application/x-www-form-urlencoded:
117 schema:
118 type: object
119 properties:
120 provider:
121 type: string
122 default: test
123 description: >
124 Nombre del proveedor (usar el endpoint de listado de
125 proveedores para obtener cuales estan disponibles)
126 username:
127 type: string
128 default: 12345
129 description: Nombre de usuario para acceder al eBanking o app
130 password:
131 type: string
132 default: gfdsa
133 description: Passsword del usuario para acceder al eBanking o app
134 required:
135 - provider
136 - username
137 - password
138 example:
139 responses:
140 '200':
141 description: Login exitoso
142 content:
143 application/json:
144 schema:
145 type: object
146 properties:
147 status:
148 type: string
149 oneOf:
150 - type: string
151 enum: ['select_client']
152 description: Es necesario seleccionar un cliente
153 - type: string
154 enum: ['wrong_credentials']
155 description: Usuario o password inválidos
156 - type: string
157 enum: ['missing_credentials']
158 description: Falta un campo de credenciales
159 - type: string
160 enum: ['interaction_required']
161 description: >
162 Se requiere algun tipo de inicio de sesion interactiva,
163 como un captcha o una pregunta de seguridad
164 - type: string
165 enum: ['logged_in']
166 description: Sesión iniciada correctamente
167 key:
168 type: string
169 description: >
170 Session key wich must be used in all subsequent requests.
171 examples:
172 Success:
173 summary: Login exitoso
174 value:
175 {
176 "status" : "logged_in",
177 "key" : "163d06b2-3378-4383-9868-71c2b6fb28da"
178 }
179 SelectClient:
180 summary: Seleccionar cliente
181 value:
182 {
183 "status" : "select_client",
184 "key" : "959602df-d3ee-4898-b6d8-a28a2c7486fb"
185 }
186 InteractionRequired:
187 summary: Sesion interactiva
188 value:
189 {
190 "context": "¿Cuántos baños tenia la casa de mis padres?",
191 "field": "personal_question",
192 "key": "be612b0a-c972-4fb1-bb16-798956a3efa1",
193 "status": "interaction_required"
194 }
195 WrongCredentials:
196 summary: Credenciales incorrectas
197 value:
198 {"status": "wrong_credentials"}
199 '401':
200 $ref: '#/components/responses/MissingAPIKey'
201
202 /client/:
203 summary: Clientes
204 description: >
205 Los clientes son cuentas asociadas a un usuario, un usuario puede tener
206 más de una cuenta asociada a su usuario. Sucede mucho en el caso de
207 cuentas con 2 dueños.
208 parameters:
209 - $ref: '#/components/parameters/SessionKey'
210 get:
211 operationId: getClients
212 responses:
213 '200':
214 description: Listar clientes exitoso
215 content:
216 application/json:
217 schema:
218 type: object
219 properties:
220 status:
221 type: string
222 default: success
223 clients:
224 type: object
225 examples:
226 TwoClients:
227 summary: Dos clientes
228 value:
229 {
230 "status":"success",
231 "clients":{
232 "0":"First Client",
233 "1":"Second Client"
234 }
235 }
236 NoClients:
237 summary: Sin clientes
238 value:
239 {"status": "success", "clients": {}}
240 '401':
241 $ref: '#/components/responses/MissingAPIKey'
242
243 /client/{clientId}/:
244 summary: Seleccionar cliente
245 description: Selecciona el cliente a usar en la sesion
246 parameters:
247 - $ref: '#/components/parameters/SessionKey'
248 - in: path
249 name: clientId
250 schema:
251 type: string
252 required: true
253 get:
254 operationId: selectClient
255 responses:
256 '200':
257 description: Cliente seleccionado correctamente
258 content:
259 application/json:
260 schema:
261 type: object
262 properties:
263 status:
264 type: string
265 default: success
266 example:
267 {"status" : "success"}
268 '401':
269 $ref: '#/components/responses/MissingAPIKey'
270
271 /account/:
272 summary: Accounts
273 description: Get all user accounts
274 parameters:
275 - $ref: '#/components/parameters/SessionKey'
276 get:
277 operationId: getAccounts
278 responses:
279 '200':
280 description: Get accounts success
281 content:
282 application/json:
283 schema:
284 type: object
285 properties:
286 status:
287 type: string
288 accounts:
289 type: array
290 items:
291 $ref: '#/components/schemas/Account'
292 example:
293 {
294 "accounts": [
295 {
296 "balance": 1234.95,
297 "branch": "02 - 18 De Julio",
298 "currency": "UYU",
299 "id": "hash1",
300 "name": "Cuenta total",
301 "number": "001234567890"
302 },
303 {
304 "balance": 53.96,
305 "branch": "61 - Ciudad Vieja",
306 "currency": "USD",
307 "id": "hash4",
308 "name": "Caja De Ahorro Atm",
309 "number": "007234567890"
310 }
311 ],
312 "status": "success"
313 }
314 '401':
315 $ref: '#/components/responses/MissingAPIKey'
316
317 /movement/:
318 summary: Listar movimientos
319 description: Obtiene todos los movimientos de una cuenta en un rango de fechas
320 parameters:
321 - $ref: '#/components/parameters/SessionKey'
322 get:
323 operationId: getMovements
324 parameters:
325 - in: query
326 name: account
327 schema:
328 type: string
329 required: true
330 - in: query
331 name: currency
332 schema:
333 $ref: '#/components/schemas/Currency'
334 required: true
335 - in: query
336 name: date_start
337 schema:
338 $ref: '#/components/schemas/Date'
339 required: true
340 - in: query
341 name: date_end
342 schema:
343 $ref: '#/components/schemas/Date'
344 required: true
345 responses:
346 '200':
347 description: Get movements success
348 content:
349 application/json:
350 schema:
351 type: object
352 properties:
353 status:
354 type: string
355 movements:
356 type: array
357 items:
358 $ref: '#/components/schemas/Movement'
359 example:
360 {
361 "movements": [
362 {
363 "credit": "",
364 "date": "12/01/2017",
365 "debit": 3500,
366 "detail": "RETIRO EFECTIVO CAJERO AUTOMATICO J.C. GOMEZ 1372, MONTEVIDEO TARJ: 4303090202018993",
367 "id": -890185180,
368 "reference": "000000005084"
369 },
370 {
371 "credit": "",
372 "date": "05/01/2017",
373 "debit": 16000,
374 "detail": "RETIRO EFECTIVO CAJERO AUTOMATICO J.H Y OBES 1389, MONTEVIDEO TARJ: 4303090202018993",
375 "id": 1024917397,
376 "reference": "000000002931"
377 },
378 {
379 "credit": 98640,
380 "date": "03/01/2017",
381 "debit": "",
382 "detail": "SUELDOS 123456TT RECIBIDA /Qualia Fintech S.R.L",
383 "id": 1303899175,
384 "reference": "TR0003858408"
385 }
386 ],
387 "status": "success"
388 }
389 '401':
390 $ref: '#/components/responses/MissingAPIKey'
391 '400':
392 $ref: '#/components/responses/InvalidOrMissingParameters'
393
394 /provider/:
395 summary: Listar proveedores
396 description: Lista todos los proveedores de datos disponibles en Prometeo
397 get:
398 operationId: getProviders
399 responses:
400 '200':
401 description: Proveedores listados exitosamente
402 content:
403 application/json:
404 schema:
405 type: object
406 properties:
407 status:
408 type: string
409 default: success
410 providers:
411 type: array
412 items:
413 type: object
414 properties:
415 code:
416 type: string
417 country:
418 $ref: '#/components/schemas/Country'
419 name:
420 type: string
421 example:
422 {
423 "providers": [
424 {
425 "code": "test",
426 "country": "UY",
427 "name": "Test Provider"
428 }
429 ],
430 "status": "success"
431 }
432 '401':
433 $ref: '#/components/responses/MissingAPIKey'
434
435 /provider/{providerCode}/:
436 summary: Detalle de proveedor
437 description: Detalles adicionales sobre el proveedor
438 parameters:
439 - in: path
440 name: providerCode
441 schema:
442 type: string
443 required: true
444 get:
445 operationId: getProviderDetail
446 responses:
447 '200':
448 description: Proveedor listado exitosamente
449 content:
450 application/json:
451 schema:
452 type: object
453 properties:
454 status:
455 type: string
456 provider:
457 type: object
458 example:
459 {
460 "provider": {
461 "auth_fields": [
462 {
463 "interactive": false,
464 "name": "username",
465 "type": "text"
466 },
467 {
468 "interactive": false,
469 "name": "password",
470 "type": "password"
471 }
472 ],
473 "country": "UY",
474 "name": "test"
475 },
476 "status": "success"
477 }
478 '401':
479 $ref: '#/components/responses/MissingAPIKey'