{ "openapi": "3.0.0", "info": { "description": "API para catálogo, venta y postventa de servicios en Hércules", "version": "0.3.5", "title": "Hércules API" }, "servers": [ { "url": "https://sistemahercules.deportesxxxx.com/v1", "description": "Sistema de Producción" }, { "url": "https://sistemahercules.deportesxxxx.org/v1", "description": "Sistema de Pruebas y Desarrollo (usa datos migrados de producción algunas veces. Se debe validar para usar este sistema con INP)" }, { "url": "https://sistemahercules.deportesxxxx.net/v1", "description": "Sistema pre-producción (Usa datos de prueba)" } ], "tags": [ { "name": "Cotizacion" }, { "name": "Inscripcion" }, { "name": "Catalogo" } ], "paths": { "/cotizacion/buscar": { "parameters": [ { "name": "documento", "in": "query", "description": "Número de documento del titular de la cotización a buscar", "required": true, "schema": { "$ref": "#/components/schemas/Documento" } }, { "name": "tipoDocumento", "in": "query", "description": "Tipo de Documento del titular de la cotización", "required": false, "schema": { "$ref": "#/components/schemas/TipoDocumento" } }, { "name": "items", "in": "query", "description": "Flag para enviar los ítems de cada cotización encontrada.\n - true: Envía dentro de cada cotización el detalle de sus ítems\n - false: No envía los ítems", "required": false, "schema": { "type": "boolean", "default": false } }, { "name": "tablaDeProductos", "in": "query", "description": "Id de la tabla de productos a usar para los códigos de precio y centros de beneficios", "required": false, "schema": { "type": "integer", "format": "int64", "default": 1 } }, { "name": "precios", "in": "query", "description": "Flag para enviar los precios dentro de cada item de cotización.\n - true: Envía dentro de cada ítem de cotización el detalle de su precio\n - false: No se incluye el precio dentro de los items", "required": false, "schema": { "type": "boolean", "default": false } }, { "name": "descuentos", "in": "query", "description": "Flag para enviar los descuentos (aplicados) dentro de cada item de cotización.\n - true: Envía dentro de cada ítem de cotización el detalle de sus descuentos aplicados\n - false: No se incluyen los descuentos dentro de los items", "required": false, "schema": { "type": "boolean", "default": false } } ], "get": { "tags": [ "Cotizacion" ], "summary": "Busca las cotizaciones mediante el tipo de documento y el número de documento", "description": "Busca las cotizaciones en el sistema que coincidan con el tipo de documento y numero de documento del titular, el parámetro tipo de documento no es requerido (opcional).", "operationId": "findCotizacionByTipoYNumeroDocumento", "responses": { "200": { "description": "Exitoso", "content": { "application/json": { "schema": { "description": "Colección que contiene varias cotizaciones que coinciden con el numero de documento y el tipo de documento", "type": "object", "properties": { "cotizaciones": { "type": "array", "items": { "$ref": "#/components/schemas/Cotizacion" } } } } } } }, "401": { "description": "No autorizado" }, "500": { "description": "Error interno" } } } }, "/cotizacion/{id}": { "parameters": [ { "name": "id", "in": "path", "description": "Id de la Cotización (también llamado Número de Referencia)", "required": true, "schema": { "type": "integer", "format": "int64", "example": 65450 } }, { "name": "logs", "in": "query", "description": "Flag para delvolver el listado de log de la cotización, por defecto es false", "required": false, "schema": { "type": "boolean", "default": false } }, { "name": "items", "in": "query", "description": "Flag para enviar los ítems de cada cotización encontrada.\n - true: Envía dentro de cada cotización el detalle de sus ítems\n - false: No envía los ítems", "required": false, "schema": { "type": "boolean", "default": false } }, { "name": "tablaDeProductos", "in": "query", "description": "Id de la tabla de productos a usar para los códigos de precio y centros de beneficios", "required": false, "schema": { "type": "integer", "format": "int64", "default": 1 } }, { "name": "precios", "in": "query", "description": "Flag para enviar los precios dentro de cada item de cotización.\n - true: Envía dentro de cada ítem de cotización el detalle de su precio\n - false: No se incluye el precio dentro de los items", "required": false, "schema": { "type": "boolean", "default": false } }, { "name": "descuentos", "in": "query", "description": "Flag para enviar los descuentos (aplicados) dentro de cada item de cotización.\n - true: Envía dentro de cada ítem de cotización el detalle de sus descuentos aplicados\n - false: No se incluyen los descuentos dentro de los items", "required": false, "schema": { "type": "boolean", "default": false } } ], "get": { "tags": [ "Cotizacion" ], "summary": "Consulta de una cotización por número de referencia (tambien llamado id)", "description": "Capacidad que realiza la búsqueda de una cotización por el número de referencia único o también llamado id", "operationId": "getCotizacionById", "responses": { "200": { "description": "Exitoso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Cotizacion" } } } }, "401": { "description": "No autorizado" }, "404": { "description": "Entidad no encontrada en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } }, "post": { "tags": [ "Cotizacion" ], "operationId": "updateCotizacion", "summary": "Actualiza la cotización", "description": "Actualiza una cotización con todos los datos que se reciben. Esta operación sirve para actualizar tanto el estado como el valor y los ítems de una cotización. En cualquier caso se deben enviar al menos los campos obligatorios de la cotización así sólo se requiera actualizar una de las propiedades. La actualización de estado genera cambios internos de la siguiente manera:\n - PAGO_RECHAZADO: Al actualizar a pago rechazado se cancelan todos los ítems de la cotización liberando los cupos y eliminando las inscripciones que estos estén reservando. También deja la cotización en valor 0 tanto para impuesto como para base. Esta actualización se debe usar también para *CANCELAR* cotizaciones. Si una cotización está en estado PAGO_APROBADO la cancelación genera también la anulación de la factura (nota crédito si es facturación electrónica).\n - PAGO_APROBADO: Al actualizar a pago aprobado la cotización entra en proceso de facturación en caso de no tener una factura asociada. Además se confirma la transacción a los clientes a través de notificaciones de correo electrónico, SMS, Push Notificaction etc.\n - CHECKOUT: La cotización queda en estado de espera para el proceso de pago. En este estado no corre el tiempo de expiración de la cotización y los cajeros puede empezar a hacer nuevas cotizaciones en simultánea. Las cotizaciones en CHECKOUT *pueden* ser canceladas por Hércules dependiendo de las reglas de negocio de cada servicio, por ejemplo al final del día o después de un tiempo determinado de espera de pago. ", "requestBody": { "description": "La cotización que se desea actualizar. **Solo campos obligatorios son necesarios**", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Cotizacion" } } } }, "responses": { "200": { "description": "Cotización actualizada exitosamente", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Cotizacion" } } } }, "401": { "description": "No autorizado" }, "404": { "description": "Entidad no encontrada en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/cotizacion/{id}/item/{idItem}": { "parameters": [ { "name": "id", "in": "path", "description": "Id de la Cotización (también llamado número de Referencia)", "required": true, "schema": { "type": "integer", "format": "int64", "example": 65450 } }, { "name": "idItem", "in": "path", "description": "Id del item en la Cotización", "required": true, "schema": { "type": "integer", "format": "int64", "example": 86656 } } ], "delete": { "tags": [ "Cotizacion" ], "summary": "Elimina el item asociado a la cotización", "description": "Elimina el item de una cotización borrando su servicio asociado para recalcular la cotización", "operationId": "borrarItem", "responses": { "200": { "description": "Exitoso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Cotizacion" } } } }, "404": { "description": "Entidad no encontrada en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/cotizacion/{id}/item/{idItem}/descuento": { "parameters": [ { "name": "id", "in": "path", "description": "Id de la Cotización (también llamado número de Referencia)", "required": true, "schema": { "type": "integer", "format": "int64", "example": 65450 } }, { "name": "idItem", "in": "path", "description": "Id del item en la Cotización", "required": true, "schema": { "type": "integer", "format": "int64", "example": 86656 } }, { "name": "items", "in": "query", "description": "Flag para enviar los ítems de cada cotización encontrada.\n - true: Envía dentro de cada cotización el detalle de sus ítems\n - false: No envía los ítems", "required": false, "schema": { "type": "boolean", "default": false } }, { "name": "precios", "in": "query", "description": "Flag para enviar los precios dentro de cada item de cotización.\n - true: Envía dentro de cada ítem de cotización el detalle de su precio\n - false: No se incluye el precio dentro de los items", "required": false, "schema": { "type": "boolean", "default": false } }, { "name": "descuentos", "in": "query", "description": "Flag para enviar los descuentos (aplicados) dentro de cada item de cotización.\n - true: Envía dentro de cada ítem de cotización el detalle de sus descuentos aplicados\n - false: No se incluyen los descuentos dentro de los items", "required": false, "schema": { "type": "boolean", "default": false } } ], "get": { "tags": [ "Cotizacion" ], "summary": "Busca los descuentos que pueden aplicar a aun ítem", "description": "Busca los descuentos activos y los descuentos posibles a aplicar para el ítem que el usuario ingresó", "operationId": "getDescuentosItem", "responses": { "200": { "description": "Descuentos encontrados", "content": { "application/json": { "schema": { "description": "Objeto con el arreglo de descuentos activos en el sistema y los decuentos posibles para aplicar al ítem seleccionado", "type": "object", "properties": { "activos": { "type": "array", "items": { "$ref": "#/components/schemas/Descuento" } }, "posibles": { "type": "array", "items": { "$ref": "#/components/schemas/Descuento" } } } } } } }, "401": { "description": "No autorizado" }, "404": { "description": "Codigo HTTP de error para notificaer un error en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } }, "post": { "tags": [ "Cotizacion" ], "summary": "Realiza la reliquidación del ítem junto con los descuentos enviados para aplicar", "description": "Reliquida el ítem, es decir, aplica los descuentos que se reciben. esta operación sirve para cambiar de precio al ítem que se recibe aplicandole los descuentos que el usuario escogio. Se pueden enviar hasta un numero maximo de 2 descuentos.", "operationId": "liquidarItemDescuento", "requestBody": { "description": "El objeto que contiene los descuentos para aplicar", "required": true, "content": { "application/json": { "schema": { "type": "array", "description": "Arreglo que contiene descuentos, este arreglo será máximo de tamaño dos. Se debe tener en cuenta que en el caso de que se envíen dos descuentos, deben ser de tipo diferente, es decir, que uno sea con convenio y el otro no.", "minItems": 0, "maxItems": 2, "items": { "$ref": "#/components/schemas/Descuento" } } } } }, "responses": { "200": { "description": "Cotización actualizada exitosamente", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Cotizacion" } } } }, "401": { "description": "No autorizado" }, "404": { "description": "Codigo HTTP de error para notificaer un error en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/cotizacion/{id}/recibo/imprimir": { "parameters": [ { "name": "id", "in": "path", "description": "Id de la Cotización (también llamado Número de Referencia)", "required": true, "schema": { "type": "integer", "format": "int64", "example": 65450 } } ], "get": { "tags": [ "Cotizacion" ], "summary": "Genera un documento pdf con el recibo de la cotización", "description": "Genera el comprobante de caja con la información de una cotización como sus items asociados, precio de cada uno valor total con y sin impuestos,\n los descuentos asociados, los servicios relacionados, entre otros.", "operationId": "imprimirRecibo", "responses": { "200": { "description": "Exitoso", "content": { "application/pdf": {} } }, "401": { "description": "No autorizado" }, "404": { "description": "Entidad no encontrada en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/cursos/persona/{documento}/canceladas": { "parameters": [ { "name": "documento", "in": "path", "description": "Documento del titular de las cotizaciones", "required": true, "schema": { "$ref": "#/components/schemas/Documento" } } ], "get": { "tags": [ "Inscripcion" ], "summary": "Lista de los servicios cancelados para un titular de cotización", "description": "Según el documento de titular se busca los ítems que estan cancelados, para realizar en traslado por cancelación de servicios.", "operationId": "getServiciosCancelados", "responses": { "200": { "description": "Exitoso", "content": { "application/json": { "schema": { "description": "Arreglo de servicios que cumplen con los parametros establecidos.", "type": "array", "items": { "$ref": "#/components/schemas/Servicio" } } } } }, "404": { "description": "Entidad no encontrada en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/cursos/persona/{documento}/curso/{idServicio}/habilitados": { "parameters": [ { "name": "documento", "in": "path", "required": true, "description": "Documento del titular de la cotización", "schema": { "type": "string" } }, { "name": "idServicio", "in": "path", "description": "Id del servicio que se quiere cambiar", "required": true, "schema": { "type": "string" } } ], "get": { "tags": [ "Inscripcion" ], "operationId": "getServiciosHabilitados", "summary": "Listar los servicios habilitados para cambio", "description": "Segun el id del item se lista los servicios habilitados para cambio por cancelaciòn que tengan el mismo precio, que pertenezcan a la misma sede y que sean del mismo material.", "responses": { "200": { "description": "Exitoso", "content": { "application/json": { "schema": { "description": "Arreglo de servicios que cumplen con los parametros establecidos.", "type": "array", "items": { "$ref": "#/components/schemas/Servicio" } } } } }, "401": { "description": "No autorizado" }, "404": { "description": "Entidad no encontrada en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/cursos/persona/{documento}/curso/{idServicio}/trasladar": { "parameters": [ { "name": "documento", "in": "path", "description": "Documento del titular de la cotización", "required": true, "example": 1022498756, "schema": { "type": "string" } }, { "name": "idServicio", "in": "path", "description": "Id del servicio que se quiere cambiar", "required": true, "schema": { "type": "string" } }, { "name": "idCotización", "in": "query", "required": false, "description": "Id de la cotización (tambien llamado número de referencia) al cúal pertenece el servicio a trasladar.", "schema": { "type": "integer", "format": "int64", "example": 64 } } ], "post": { "tags": [ "Inscripcion" ], "summary": "Trasladar un servicio cancelado", "description": "Según el servicio antiguo y el nuevo, se realiza el cambio en la cotización, se crea un ìtem nuevo para la cotizaciòn con el mismo valor y se inscribe a la persona en este servicio; tambien se borra el ìtem antiguo de la cotizaciòn", "operationId": "setServicioCotizacion", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Servicio" } } }, "description": "Objeto con el servicio nuevo.", "required": true }, "responses": { "200": { "description": "El traslado se realizo con exito", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Cotizacion" } } } }, "401": { "description": "No autorizado" }, "404": { "description": "Codigo HTTP de error para notificaer un error en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/persona/{documento}/inscripcion": { "parameters": [ { "name": "documento", "in": "path", "description": "Documento de la persona", "required": true, "example": 1022498756, "schema": { "type": "string" } }, { "name": "tipoDocumento", "in": "query", "description": "Tipo de Documento de la persona", "required": false, "example": "CC", "schema": { "type": "string" } } ], "get": { "tags": [ "Inscripcion" ], "operationId": "consultarInscripcionPersona", "summary": "Capacidad para consultar la inscripción de una persona", "description": "Según el documento ingresado, se busca la inscripción de una persona en el evento base y se devuelve su información esecencial según lo que obtenga del datasource", "responses": { "200": { "description": "Información de la persona inscrita en el sistema.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Persona" } } } }, "401": { "description": "No autorizado" }, "404": { "description": "Entidad no encontrada en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } }, "post": { "tags": [ "Inscripcion" ], "operationId": "inscribirPersona", "summary": "Capacidad para inscribir una persona", "description": "Realiza la inscripción de una persona en el sistema con la información enviada", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Persona" } } } }, "responses": { "200": { "description": "La inscripción se realizó con éxito", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Persona" } } } }, "404": { "description": "Codigo HTTP de error para notificaer un error en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/cursos/inscripcion": { "parameters": [ { "name": "idCotización", "in": "query", "required": false, "description": "Id de la cotización (tambien llamado número de referencia).", "schema": { "type": "integer", "format": "int64" } } ], "post": { "tags": [ "Inscripcion" ], "summary": "Capacidad para asociar una persona al servicio", "description": "Según el documento ingresado, se asocia la persona al servicio y se asocia a la cotizaciòn seleccionada si se envió una.", "operationId": "inscripcionEscuela", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InscripcionEscuela" } } }, "description": "Objeto que contiene el servicio y la persona junto con la información de la compra del material.", "required": true }, "responses": { "200": { "description": "Se asocio correctamente la persona al servicio", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Cotizacion" } } } }, "404": { "description": "Codigo HTTP de error para notificaer un error en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/centro_entrenamiento/{idCentroEntrenamiento}/practicalibre/disponibilidad": { "parameters": [ { "name": "idCentroEntrenamiento", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } }, { "name": "idCaracteristica", "in": "query", "required": false, "schema": { "type": "integer", "format": "int64" } } ], "post": { "tags": [ "Inscripcion" ], "summary": "Consultar disponibilidad de la practica libre", "description": "", "operationId": "consultaDisponibilidadTurnoPracticaLibre", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConsultaDisponibilidadReservaPracticaLibre" } } }, "description": "Objeto que contiene el filtro de disponibilidad para consultar la disponibilidad de una práctica libre y el turno de práctica libre.", "required": true }, "responses": { "200": { "description": "Se encontraron servicios", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HorarioReservaTurnoPracticaLibre" } } } }, "404": { "description": "Codigo HTTP de error para notificaer un error en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/centro_entrenamiento/{idCentroEntrenamiento}/practicalibre/reservar": { "parameters": [ { "name": "idCotizacion", "in": "query", "required": false, "schema": { "type": "integer", "format": "int64" } }, { "name": "idCentroEntrenamiento", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "post": { "tags": [ "Inscripcion" ], "summary": "Inscripción de la persona al turno practica libre", "description": "Capacidad que permite la inscripción de una persona a un turno de practica libre, y lo asocia a una cotización.", "operationId": "inscripcionTurnoPracticaLibre", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InscripcionReservaPracticaLibre" } } }, "description": "Objeto con la información necesaria para inscribir una persona a un turno de practica libre.", "required": true }, "responses": { "200": { "description": "Si la persona que realiza la reserva tiene una membresía activa en el sistema, la respuesta contendrá un objeto 'InscripcionReservaPracticaLibre'. En caso contrario la respuesta contendrá un objeto 'Cotizacion'.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/Cotizacion" }, { "$ref": "#/components/schemas/InscripcionReservaPracticaLibre" } ], "example": { "id": 542682, "estado": 1, "mensaje": "Cotizacion pendiente de pago", "nombre_titular": "Pedro Pérez Benitez", "tipo_documento_titular": "CC", "documento_titular": "1023456789", "telefono_titular": "320456879", "direccion_titular": "Calle 8 # 34a - 23 apto 301 Bloque 2", "email_titular": "cliente@ejemplo.com", "provedor": "PayU", "extra": 54523423423, "extra2": "RA123128532", "id_participacion_organizacion": 324, "organizacion": "Individual", "id_usuario": 8324123, "usuario": "Juan Camilo Martinez", "valor_total": 119000, "valor_impuesto": 19000, "valor_base": 100000, "valor_reversion": 45000, "fecha_creacion": "2018-02-12T15:19:21+00:00", "fecha_actualizacion": "2018-02-12T15:22:21+00:00", "expiracion": "2018-11-21T17:32:28", "transaccion": { "id": "CUS-123123-432", "fecha": "2018-02-12T15:22:21+00:00", "identificador_cajero": "53889001", "identificador_caja": "PAI023123", "canal": 3, "medio_de_pago": { "codigo_medio_pago": 124, "valor": 140000, "consecutivo": 0 } }, "items_cotizacion": [ { "nombre": "Juan Gómez García", "tipo": 1, "documento": "1023928310", "valor": 43740, "impuesto": 10260, "valor_total": 54000, "cantidad": 1, "valor_unitario": 54000, "descuentos": [ { "id": 5451518, "nombre": "Casa ensamble", "tipo": 1, "mercadeo": true, "valor": 150000, "codigo": "CAEDF2213" } ], "descripcion": "Plan Tu CUR 1 MES para Juan Gómez García", "precio": { "nombre": "Plan Tu Equilibrio 1 Año CAT B", "iva": 19000, "base": 100000, "total": 119000, "vigencia_inicio": "2018-09-12 13:00.000", "vigencia_fin": "2018-10-12 13:00.000", "categoria_precio": "B" }, "nombre_precio": "Plan Tu CUR Categoría B Mes", "codigo_precio": "1232355", "codigo_centro_beneficios": "5648-12479", "categoria_precio": "B" } ], "logs_cotizacion": [ { "tipo": 1, "detalles": "Se creo una cotización" } ] } } } } }, "404": { "description": "Codigo HTTP de error para notificaer un error en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/turnos/persona/{documento}": { "parameters": [ { "name": "documento", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "cancelable", "in": "query", "required": true, "schema": { "type": "boolean" } }, { "name": "activo", "in": "query", "required": true, "schema": { "type": "boolean" } }, { "name": "fechaInicio", "in": "query", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "fechaFin", "in": "query", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "idCentroEntrenamiento", "in": "query", "required": false, "schema": { "type": "integer", "format": "int64" } } ], "get": { "tags": [ "Inscripcion" ], "summary": "Consulta los turnos reservados por una persona", "operationId": "consultaTurnosPracticaLibre", "responses": { "200": { "description": "exitoso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InscripcionReservaPracticaLibre" } } } }, "404": { "description": "Entidad no encontrada en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/turnos/persona/{documento}/{idTurno}": { "parameters": [ { "name": "documento", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "idTurno", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "delete": { "tags": [ "Inscripcion" ], "summary": "Borra un turno de práctica libre asociado a una persona.", "description": "Borra el turno completo desasociando todas las personas incluídas en él.\nNOTA: El turno tuvo que ser reservado por Tiquetera para ser cancelable.", "operationId": "borrarTurno", "responses": { "200": { "description": "exitoso", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "string", "example": true }, "message": { "type": "string", "example": "Se ha borrado correctamente el turno" } } } } } }, "404": { "description": "Entidad no encontrada en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/centro_entrenamiento/{idCentroEntrenamiento}/afiliacion": { "parameters": [ { "name": "idCotizacion", "required": false, "in": "query", "schema": { "type": "integer", "format": "int64" } }, { "name": "idCentroEntrenamiento", "required": true, "in": "path", "schema": { "type": "integer", "format": "int64" } } ], "post": { "tags": [ "Inscripcion" ], "summary": "Inscribir afiliacion", "description": "Según el id se puede inscribir a una afiliación", "operationId": "inscribirAfiliacion", "requestBody": { "description": "Objeto con la información necesaria para afiliar una persona un plan de afiliación.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InscripcionAfiliacion" } } } }, "responses": { "200": { "description": "El traslado se realizo con exito", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Cotizacion" } } } }, "404": { "description": "Codigo HTTP de error para notificaer un error en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/material/{idMaterial}/comprar/": { "parameters": [ { "name": "idCotizacion", "in": "query", "required": false, "schema": { "type": "integer", "format": "int64", "example": 9865 } }, { "name": "idMaterial", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64", "example": 516 } } ], "post": { "tags": [ "Inscripcion" ], "summary": "Comprar un material", "description": "Capacidad que permite comprar un material y agregarlo a una cotización, en caso de que no exista la cotización se creará una nueva.", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CompraMaterial" } } }, "description": "Objeto con la información para poder asociar un material a una cotización y un servicio.", "required": true }, "operationId": "comprarMaterial", "responses": { "200": { "description": "exitoso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Cotizacion" } } } }, "404": { "description": "Codigo HTTP de error para notificaer un error en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/centro_entrenamiento/{idCentroEntrenamiento}/citas/reservar": { "parameters": [ { "name": "idCotizacion", "in": "query", "required": false, "schema": { "type": "integer", "format": "int64", "example": 9865 } }, { "name": "idCentroEntrenamiento", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64", "example": 5458 } } ], "post": { "tags": [ "Inscripcion" ], "summary": "Inscripción Cita médica", "description": "Capacidad que permite inscribir una cita médica y agregarla a una cotización, en caso de que no exista la cotización se creará una nueva.", "operationId": "inscripcionCitaMedica", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InscripcionCita" } } }, "description": "Objeto con la información para poder inscribir una cita médica, el objeto contiene una persona, un servicio y el horario de la cita.", "required": true }, "responses": { "200": { "description": "exitoso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Cotizacion" } } } }, "404": { "description": "Codigo HTTP de error para notificaer un error en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/servicio/precio/consultar": { "post": { "tags": [ "Catalogo" ], "summary": "Consultar precio de la inscripción", "description": "Capacidad que permite consultar el precio de varias inscripciones las cuales contienen el Servicio y la Persona", "requestBody": { "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PrecioPersona" } } } }, "description": "Objeto con la información necesaria para la consulta del costo de la inscripción en un servicio de una persona.", "required": true }, "operationId": "consultarPrecioCotizacion", "responses": { "200": { "description": "exitoso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PrecioPersona" } } } }, "404": { "description": "Codigo HTTP de error para notificaer un error en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/centro_entrenamiento/{idCentroEntrenamiento}/citas/disponibilidad": { "parameters": [ { "name": "idCentroEntrenamiento", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "post": { "tags": [ "Inscripcion" ], "description": "Capacidad que dado un centro de entrenamiento puede devolver todas las citas disponibles que cumplan los parametros especificados en el filtro", "operationId": "getCitasByCentroEntrenamiento", "summary": "Listado de citas disponibles", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "persona": { "$ref": "#/components/schemas/Persona" }, "filtroDisponibilidad": { "$ref": "#/components/schemas/FiltroDisponibilidad" } }, "required": [ "filtroDisponibilidad" ] } } }, "description": "Objeto que contiene el ", "required": true }, "responses": { "200": { "description": "Devuelve un arreglo de objetos de tipo HorarioCita que contiene la información de cada cita disponible, como tipo, calendario y horario", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HorarioCita" } } } }, "404": { "description": "Entidad no encontrada en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/catalogo/explorar": { "parameters": [ { "name": "limite", "description": "Límite de resultados para obtener 204", "in": "query", "schema": { "type": "integer", "format": "int32", "example": 20, "default": 20, "maximum": 100 }, "required": false } ], "post": { "tags": [ "Catalogo" ], "summary": "Listar las pruebas según los filtros seleccionados", "description": "Segùn los filtros seleccionados retornara los servicios o pruebas, en el caso de que falte algún filtro se pedira la opción para poder buscar las pruebas. Las opciones que se pueden seleccionar son las siguientes:\n * Documento\n * Antiguedad\n * Clasificación (Curso, Festival, Gimnasio, Práctica Libre, Alquiler de Escenario, Concierto, Taller, etc )\n * Segmento Edad\n * Área\n * Sede\n * Días (Entre Semana / Fin de Semana)\n * Horario (Mañana / Tarde / Noche)\n * Nivel (dentro del plan académico del Curso) /Modalidad \n * Servicio (ESCUELAS, PRACTICA_LIBRE, MATERIAL, PLAN_AFILIACION )", "operationId": "getCatalogo", "requestBody": { "content": { "application/json": { "schema": { "description": "Arreglo de objetos tipo Opcion", "type": "array", "items": { "$ref": "#/components/schemas/Opcion" } } } }, "description": "Objeto con la llave opciones el cual contiene un arreglo de objetos de tipo opcion.", "required": true }, "responses": { "200": { "description": "Se encontraron servicios", "content": { "application/json": { "schema": { "description": "Arreglo de servicios que cumplen con los parametros establecidos, junto con el listado de opciones de filtro\n utilizadas.", "type": "object", "properties": { "servicios": { "type": "array", "items": { "$ref": "#/components/schemas/Servicio" } }, "opciones_aplicadas": { "type": "array", "items": { "$ref": "#/components/schemas/Opcion" } } } } } } }, "204": { "description": "Es necesario filtrar en mayor detalle. La exploración produjo demasiados resultados. Más de 20 resultados", "content": { "application/json": { "schema": { "type": "object", "properties": { "opciones": { "type": "array", "items": { "$ref": "#/components/schemas/Opcion" } }, "opciones_aplicadas": { "type": "array", "items": { "$ref": "#/components/schemas/Opcion" } } } } } } }, "404": { "description": "Codigo HTTP de error para notificaer un error en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/servicio/{tipo}/{id}": { "parameters": [ { "name": "tipo", "in": "path", "required": true, "schema": { "description": "1- Practica Libre 2- Material 3- Cita 4- Plan Afiliación", "type": "integer", "format": "int64", "enum": [ 1, 2, 3, 4 ] } }, { "name": "id", "in": "path", "required": true, "schema": { "description": "id del servicio", "type": "integer", "format": "int64" } } ], "get": { "tags": [ "Catalogo" ], "summary": "Listar los atributos del servicio", "description": "Capacidad que lista todos los atributos de ", "operationId": "getAtributos", "responses": { "200": { "description": "Exitoso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Servicio" } } } }, "404": { "description": "Entidad no encontrada en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/consultar/agenda/{documento}": { "parameters": [ { "name": "documento", "in": "path", "required": true, "description": "Documento de la persona que va a consultar la agenda", "schema": { "$ref": "#/components/schemas/Documento" } }, { "name": "tipoDocumento", "in": "query", "description": "Tipo de documento de la persona que va a consultar la agenda", "schema": { "$ref": "#/components/schemas/TipoDocumento" } }, { "name": "fechaInicio", "in": "query", "required": true, "description": "Fecha de inicio en la cual se quiere consultar la agenda.", "schema": { "type": "string", "format": "date-time", "example": "2018-07-21T08:00:00" } }, { "name": "fechaFin", "in": "query", "required": true, "description": "Fecha de fin en la cual se quiere consultar la agenda.", "schema": { "type": "string", "format": "date-time", "example": "2018-11-28T08:00:00" } } ], "get": { "tags": [ "Catalogo" ], "summary": "Consultar la agenda de una persona y su grupo familiar", "description": "Función para buscar las actividades (Competencias en torneos, clases de escuelas, turnos de practica libre o citas médicas) que tenga entre un par de fechas seleccionadas según el documento del titular de la cuenta. Esta función también devolverá la agenda del grupo familiar de la persona buscada.", "operationId": "consultarAgenda", "responses": { "200": { "description": "Consulta Exitosa", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "fecha_inicio": { "description": "Fecha de inicio del servicio", "type": "string", "format": "date", "example": "2018-10-02" }, "fecha_fin": { "description": "Fecha de fin del servicio", "type": "string", "format": "date", "example": "2018-11-02" }, "hora_inicio": { "description": "Hora de inicio del servicio", "type": "string", "format": "date-time", "example": "2018-10-02T08:00:00" }, "hora_fin": { "description": "Hora de fin del servicio", "type": "string", "format": "date-time", "example": "2018-10-02T10:00:00" }, "sede": { "type": "string", "description": "Nombre de la sede donde se lleva a cabo el servicio", "example": "Sede Club Privado" }, "escenario": { "type": "string", "description": "Nombre del escenario dentro de la sede donde se lleva a cabo el servicio", "example": "Canchas de Polo" }, "zona": { "type": "string", "description": "Nombre de la zona dentro del escenario donde se lleva acabo el servicio", "example": "Cancha No 1" }, "asistencia": { "description": "Flag que indica si asistió o no", "type": "string", "example": "1" }, "caracteristicas": { "type": "array", "description": "Características que contempla la zona", "items": { "type": "object", "properties": { "nombre": { "description": "Nombre de la característica", "type": "string", "example": "Clase de aeróbicos" }, "id_zona": { "description": "Id de la zona a la que pertenece la característica", "type": "string", "example": "83" }, "id_centro_entrenamiento": { "description": "Id del centro entrenamiento que contempla la zona y característica relacionada", "type": "string", "example": "103" } } }, "example": [ { "nombre": "Clase de Aeróbicos", "id_zona": "83", "id_centro_entrenamiento": "103" } ] }, "persona": { "$ref": "#/components/schemas/Persona" }, "servicio": { "$ref": "#/components/schemas/Servicio" } } } } } } }, "401": { "description": "No autorizado" }, "404": { "description": "Entidad no encontrada en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } }, "/consultar/precios/servicio/{idServicio}/tipo/{tipo}": { "parameters": [ { "name": "idServicio", "in": "path", "required": true, "description": "ID del servicio cuyos precios se desean consultar (consistente con el tipo de servicio)", "schema": { "type": "integer", "format": "int64" } }, { "name": "tipo", "in": "path", "required": true, "description": "Tipo de servicio", "schema": { "description": "1- Practica Libre 2- Material 3- Cita 4- Plan Afiliación", "type": "integer", "format": "int64", "enum": [ 1, 2, 3, 4 ] } } ], "get": { "tags": [ "Catalogo" ], "operationId": "consultarPreciosServicioPorCategoria", "summary": "Consultar los precios y mejores descuentos de un servicio por categoría", "description": "Capacidad para buscar por cada categoría los precios que están asociados al servicio, junto a sus mejores descuentos no sujetos a condiciones de audiencia.", "responses": { "200": { "description": "Consulta Exitosa", "content": { "application/json": { "schema": { "description": "Arreglo donde cada elemento es de tipo CategoriaPrecioServicio con la información de cada precio asociado al servicio (por categoría) junto a sus mejores descuentos", "type": "object", "properties": { "precios": { "type": "array", "items": { "$ref": "#/components/schemas/CategoriaPrecioServicio" } } } } } } }, "401": { "description": "No autorizado" }, "404": { "description": "Entidad no encontrada en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/consultar/suscripciones/{documento}": { "parameters": [ { "name": "documento", "in": "path", "required": true, "description": "Documento de la persona que consulta sus suscripciones", "schema": { "$ref": "#/components/schemas/Documento" } }, { "name": "tipoDocumento", "in": "query", "description": "Tipo de documento de la persona que consulta sus suscripciones", "schema": { "$ref": "#/components/schemas/TipoDocumento" } }, { "name": "incluirVencidos", "in": "query", "schema": { "description": "Flag para consultar las suscripciones sin vigencia de la persona\n - true: Se incluyen las suscripciones sin vigencia\n - false: No se incluyen las suscripciones sin vigencia", "type": "boolean", "default": false }, "required": false } ], "get": { "tags": [ "Catalogo" ], "summary": "Consultar las suscripciones de una persona", "description": "Función para consultar las suscripciones vigentes o históricas de los planes de afiliación", "operationId": "consultarSuscripciones", "responses": { "200": { "description": "Consulta Exitosa", "content": { "application/json": { "schema": { "description": "Colección que contiene las suscripciones asociadas al número y tipo de documento", "type": "object", "properties": { "suscripciones": { "type": "array", "items": { "$ref": "#/components/schemas/Suscripcion" } } } } } } }, "401": { "description": "No autorizado" }, "404": { "description": "persona no encontrada en el sistema", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Error interno" } } } } }, "components": { "schemas": { "Atributo": { "type": "object", "properties": { "tipo": { "description": "Tipo de atributo en especifico, estos tipos de atributos se sacan de la lista enumerada en el objeto.", "type": "string", "enum": [ "Antiguedad", "Clasificación", "Área", "Sede", "Días", "Horario", "Nivel", "Servicio", "Descripción", "Objetivos", "Foto", "Video", "Recomendaciones", "Requisitos del Servicio", "Segmentos", "Materiales" ], "readOnly": true, "example": "Sede" }, "valor": { "description": "Valor de atributo", "type": "string", "readOnly": true, "example": "CUR" } } }, "Afiliacion": { "type": "object", "properties": { "id_centro_entrenamiento": { "type": "integer", "format": "int64", "example": 11 }, "centro_entrenamiento": { "type": "string", "example": "Gimnasio" }, "fecha_inicio": { "type": "string", "format": "date-time" }, "fecha_fin": { "type": "string", "format": "date-time" }, "estado": { "type": "integer", "description": "Parámetro para saber el estado de la afiliación dentro de su ciclo de vida.\nLos estados son los siguientes:\n - 0) CANCELADA\n - 1) ACTIVA\n - 2) ADQUIRIDA\n - 3) TERMINADA", "format": "int32", "example": 1, "enum": [ 0, 1, 2, 3 ] }, "entradas": { "type": "integer", "format": "int64", "example": 30 }, "principal": { "type": "boolean", "example": true }, "medico": { "type": "boolean", "example": true }, "validar_afiliacion": { "type": "boolean", "example": true } } }, "BeneficioSuscripcion": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64", "example": 6545 }, "area": { "type": "string", "example": "Gimnasio" }, "sede": { "type": "string", "example": "Centro de Recreación" }, "id_centro_enrenamiento": { "type": "integer", "format": "int64", "example": 3654 }, "centro_entrenamiento": { "type": "string", "example": "Gimnasio CUR" }, "numero_sesiones": { "description": "Cantidad de usos máximos del beneficio", "type": "integer", "format": "int64", "example": 5 }, "tiempo": { "description": "Tiempo en días de la vigencia del beneficio", "type": "integer", "format": "int64", "example": 60 }, "principal": { "description": "Indicador que muestra cuál es el beneficio principal del plan de afiliación", "type": "boolean", "example": true }, "medico": { "description": "Indicador que muestra si este plan tiene citas médicas incluídas", "type": "boolean", "example": false } } }, "CategoriaPrecioServicio": { "type": "object", "description": "Objeto con la información del precio para un servicio asociado a cierta categoría independiente de persona (con los mejores descuentos no sujetos a condiciones de audiencia)", "properties": { "categoria": { "type": "string", "readOnly": true, "example": "B" }, "servicio": { "$ref": "#/components/schemas/Servicio" }, "precio": { "$ref": "#/components/schemas/Precio" }, "descuentos": { "readOnly": true, "type": "array", "items": { "$ref": "#/components/schemas/Descuento" } } } }, "CentroEntrenamiento": { "type": "object", "description": "Objeto que contiene toda la información del centro de entrenamiento", "properties": { "id": { "type": "integer", "format": "int64", "example": 35742165 }, "nombre": { "type": "string", "readOnly": true, "example": "Gimnasio CUR" } } }, "CompraMaterial": { "type": "object", "properties": { "servicio": { "$ref": "#/components/schemas/Servicio" }, "persona": { "$ref": "#/components/schemas/Persona" }, "informacion_compra_material": { "$ref": "#/components/schemas/InformacionCompraMaterial" } } }, "ConsultaDisponibilidadReservaPracticaLibre": { "type": "object", "properties": { "filtro_disponibilidad": { "$ref": "#/components/schemas/FiltroDisponibilidad" }, "turno_practica_libre": { "$ref": "#/components/schemas/TurnoPracticaLibre" } } }, "Cotizacion": { "description": "Información de una cotización. Las cotizaciones se componen de Ítems de Cotización que indican los servicios a adquirir. Los Ítems tiene diferntes tipos dependiendo del servicio que se adquirió. Además las Cotizaciones tienen un log de auditoría y una Transacción de pago asociada que incluye la forma de pago detallada", "type": "object", "properties": { "id": { "description": "Id de la cotización en Hércules", "type": "integer", "format": "int64", "example": 8623467 }, "estado": { "description": "Estado de la cotización. Posibles Valores\n - 1) PAGO PENDIENTE > No ha sido pagada *nueva*\n - 2) PAGO REALIZADO > Ya ha sido pagada *facturada*\n - 3) RECHAZADA > El pago no ha sido exitoso *cancelada*\n - 4) CHECKOUT > En espera del medio de pago *en proceso de pago*", "type": "number", "enum": [ 1, 2, 3, 4 ], "example": 2 }, "mensaje": { "description": "Mensaje de la cotización", "type": "string", "example": "Pago aprobado con éxito en Módulos con consecutivo 53231231" }, "nombre_titular": { "description": "Nombre del titular que realizó la cotización", "type": "string", "example": "Pedro Pérez Benitez" }, "tipo_documento_titular": { "description": "Tipo de documento del titular de la cotización", "allOf": [ { "$ref": "#/components/schemas/TipoDocumento" } ], "example": "CC" }, "documento_titular": { "description": "Identificación del titular de la cotización", "example": "1023456789", "oneOf": [ { "$ref": "#/components/schemas/Documento" } ] }, "telefono_titular": { "description": "Número de telefono del titular", "type": "string", "example": "320456879", "readOnly": true }, "direccion_titular": { "description": "Dirección del titular", "type": "string", "example": "Calle 8 # 34a - 23 apto 301 Bloque 2", "readOnly": true }, "email_titular": { "description": "Correo electrónico del titular de la cotización", "type": "string", "example": "cliente@ejemplo.com", "readOnly": true }, "provedor": { "description": "Nombre del proveedor de pago de la cotización", "type": "string", "maxLength": 255, "example": "PayU", "readOnly": true }, "extra": { "description": "Identificador de la Cotización en el sistema facturador. ( Por ejemplo Número de Factura o de la Orden de Venta)", "type": "string", "example": 54523423423, "readOnly": true }, "extra2": { "description": "Identificador secundario de la Cotización en el sistema facturador. (Por ejemplo Número de Factura Empresarial)", "type": "string", "example": "RA123128532", "readOnly": true }, "id_participacion_organizacion": { "description": "Id de la ParticipacionOrganizacion en Hércules de la cotización (uso interno)", "type": "integer", "format": "int64", "example": 324 }, "organizacion": { "description": "Nombre de la organización o empresa", "type": "string", "example": "Individual" }, "id_usuario": { "description": "Id del usuario en Hércules que realiza la cotización (si se hace por servicio sería el client_id)", "type": "integer", "format": "int64", "example": 8324123 }, "usuario": { "description": "Nombre del usuario que reqliza la cotización", "type": "string", "example": "Juan Camilo Martinez" }, "valor_total": { "description": "Suma del total de cada ítem en la cotización. Total Pagado", "type": "number", "example": 119000, "readOnly": true }, "valor_impuesto": { "description": "Valor total del IVA en la cotización", "type": "number", "example": 19000, "readOnly": true }, "valor_base": { "description": "Valor de la base del IVA en la cotización", "type": "number", "example": 100000, "readOnly": true }, "valor_reversion": { "description": "Suma del total de las reversiones de cada ítem", "type": "number", "example": 45000, "readOnly": true }, "fecha_creacion": { "description": "Fecha de creación de la cotización", "type": "string", "format": "date-time", "example": "2018-02-12T15:19:21+00:00", "readOnly": true }, "fecha_actualizacion": { "description": "Fecha de actualización de la cotización", "type": "string", "format": "date-time", "example": "2018-02-12T15:22:21+00:00", "readOnly": true }, "expiracion": { "description": "Fecha de expiración de la cotización", "type": "string", "format": "date-time", "example": "2018-11-21T17:32:28" }, "transaccion": { "$ref": "#/components/schemas/Transaccion" }, "items_cotizacion": { "type": "array", "items": { "$ref": "#/components/schemas/ItemCotizacion" } }, "logs_cotizacion": { "readOnly": true, "type": "array", "items": { "$ref": "#/components/schemas/LogCotizacion" } } }, "required": [ "id", "estado", "mensaje", "nombre_titular", "tipo_documento_titular", "documento_titular", "telefono_titular", "email_titular", "proveedor", "valor_total", "valor_impuesto", "valor_base", "fecha_creacion", "fecha_actualizacion" ] }, "Dias": { "type": "object", "properties": { "lunes": { "type": "boolean", "example": false }, "martes": { "type": "boolean", "example": true }, "miercoles": { "type": "boolean", "example": false }, "jueves": { "type": "boolean", "example": true }, "viernes": { "type": "boolean", "example": false }, "sabado": { "type": "boolean", "example": false }, "domingo": { "type": "boolean", "example": false }, "entre_semana": { "type": "boolean", "example": true }, "fin_de_semana": { "type": "boolean", "example": false } } }, "Documento": { "description": "Número de documento de una persona", "type": "string", "maxLength": 50, "example": "1015234567" }, "Descuento": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64", "description": "Identificador del descuento", "example": 5451518 }, "nombre": { "type": "string", "description": "Nombre del descuento", "minLength": 5, "maxLength": 255, "example": "Casa ensamble" }, "tipo": { "type": "integer", "format": "int32", "enum": [ 0, 1, 2 ], "description": "Parametro para saber el tipo del descuento.\nLos tipos son los siguientes:\n - 0) CONVENIO: Los convenios son aquellos que no tienen recobro por subsidio a la demanda.\n - 1) DESCUENTO\n - 2) MERCADEO\n\nUn ítem de cotización puede tener a lo sumo tres descuentos, uno de cada tipo entre: convenio, no convenio y mercadeo.", "example": 1 }, "mercadeo": { "type": "boolean", "description": "Parámetro que indica que el precio fue modificado por un sistema externo con autorización para cambiar precios." }, "valor": { "type": "integer", "format": "int64", "description": "Valor final con el descuento aplicado al valor del ítem consultado.", "example": 150000 }, "codigo": { "type": "string", "description": "Código de descuento a aplicar (en caso de escritura) o aplicado (en caso de lectura), puede ser un código único o un código repetible (Cupón)", "example": "CAEDF2213" } } }, "Error": { "type": "object", "properties": { "codigo": { "description": "Codigo de error:\n * -1 ) No se encontró la cotización\n * -2 ) El material no existe o no es valido\n * -3 ) El parametro no corresponde a un dato válido o no ha sido encontrado\n * -4 ) Documento inválido\n * -5 ) No se encontró el servicio\n * -6 ) La información enviada para actualizar es inválida\n * -7 ) El centro de entrenamiento no existe\n * -8 ) El turno no existe\n * -9 ) No se encontró a la persona\n * -10 ) El tipo de documento especificado no se encuentra en la lista de tipos de documentos válidos\n * -11 ) No se encontro el item\n * -12 ) Fechas inválidas\n * -13 ) Error de inscripción\n * -14 ) La persona ya se encuentra inscrita en la prueba\n * -15 ) No existe un precio para el servicio\n * -16 ) No se reconoce el tipo de servicio\n * -17 ) La información relacionada en el body, no coincide con la información relacionada en el path\n * -999 ) Error Interno", "type": "integer", "format": "int64", "enum": [ -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -999 ], "example": -13 }, "mensaje": { "type": "string", "maxLength": 255, "example": "No cumple con la antiguedad para inscribirse al curso" } } }, "FiltroDisponibilidad": { "description": "Objeto que representa una búsqueda de disponibilidad en un rango de fechas para práctica libre.", "type": "object", "properties": { "fecha_inicio": { "description": "Fecha de inicio de búsqueda de la disponibilidad. Sujeto al mínimo del centro de entrenamiento con relación a la fecha actual.", "type": "string", "format": "date-time", "example": "2018-09-22T21: 00:00" }, "fecha_fin": { "description": "Fecha límite a la cual se le busca disponibilidad. Sujeto al maximo del centro de entrenamiento con relación a la fecha actual.", "type": "string", "format": "date-time", "example": "2018-12-10T21: 00:00" }, "inicio_inmediato": { "description": "Indicador para buscar turnos que inicien en los próximos 5, 10 o 15 minutos", "type": "boolean", "example": false } } }, "Horario": { "description": "Objeto que reprensenta un rango horario en una fecha específica", "type": "object", "properties": { "fecha": { "description": "Fecha del horario", "type": "string", "format": "date", "example": "2018-09-10" }, "hora_inicio": { "type": "string", "format": "time", "example": "09:30:00" }, "hora_fin": { "type": "string", "format": "time", "example": "11:30:00" } } }, "HorarioCita": { "description": "Objeto que identifica una cita con un calendario, tipo de cita y horario específico.", "type": "object", "properties": { "calendario": { "description": "Nombre del médico al que le aplica el calendario", "type": "string", "example": "Alfonso Esguerra Gómez" }, "tipo": { "description": "Tipo de cita solicitada", "type": "string", "example": "Primera Vez" }, "horario": { "$ref": "#/components/schemas/Horario" } } }, "HorarioReservaTurnoPracticaLibre": { "description": "Objeto que representa un posible turno de práctica libre en un horario específico para unas zonas específicas.", "type": "object", "properties": { "horario": { "$ref": "#/components/schemas/Horario" }, "duracion": { "description": "Cantidad de minutos del turno", "type": "integer", "format": "int64", "example": 50 }, "numero_participantes": { "description": "Número de personas máximas acompañantes para el turno", "type": "integer", "format": "int64", "example": 10 }, "numero_usos": { "description": "Número de usos que require el turno", "type": "integer", "format": "int64", "example": 2 }, "cupos": { "description": "Cupos disponibles en el horario", "type": "integer", "format": "int64", "example": 7 }, "precio": { "description": "Precio asociado a la práctica libre, para la categoría A", "type": "string", "format": "string", "example": 67226.89 }, "temporada": { "description": "Temporada de acuerdo a la plantilla asociada al centro de entrenamiento", "type": "string", "example": "Alta" }, "zonas": { "description": "Zonas en donde hay disponibilidad (los cupos se reparten en estas zonas)", "type": "array", "example": [ { "id": 445, "nombre": "Carril 1", "id_escenario": 45, "escenario": "Psicina Olimpica" } ], "items": { "$ref": "#/components/schemas/Zona" } } } }, "InformacionCompraMaterial": { "type": "object", "properties": { "direccion": { "type": "string", "readOnly": true, "example": "Tv 80 #65f-59s" }, "barrio": { "type": "string", "readOnly": true, "example": "Kenedy" }, "telefono": { "type": "string", "readOnly": true, "example": "3102867423" }, "materiales": { "type": "array", "items": { "$ref": "#/components/schemas/Material" } } } }, "InscripcionCita": { "type": "object", "properties": { "servicio": { "$ref": "#/components/schemas/Servicio" }, "persona": { "$ref": "#/components/schemas/Persona" }, "horario": { "$ref": "#/components/schemas/HorarioCita" } } }, "InscripcionEscuela": { "description": "Entidad con la información que recibe el servicio de \"Inscripción\" '#/paths/inscripcion/escuela'", "type": "object", "properties": { "servicio": { "$ref": "#/components/schemas/Servicio" }, "persona": { "$ref": "#/components/schemas/Persona" }, "fecha_inicio": { "type": "string", "format": "date-time", "example": "2018-10-08T15:00:00" }, "informacion_compra_material": { "$ref": "#/components/schemas/InformacionCompraMaterial" } } }, "InscripcionAfiliacion": { "type": "object", "properties": { "servicio": { "$ref": "#/components/schemas/Servicio" }, "persona": { "$ref": "#/components/schemas/Persona" }, "fecha_inicio": { "type": "string", "format": "date-time", "example": "2018-09-22T21: 00:00" } } }, "InscripcionReservaPracticaLibre": { "type": "object", "properties": { "turnos_practica_libre": { "type": "array", "items": { "$ref": "#/components/schemas/TurnoPracticaLibre" } } } }, "ItemCotizacion": { "description": "Hace referencia al servicio que se quiere inscribit, a la persona, y el valor de la inscripción al servicio", "type": "object", "properties": { "nombre": { "description": "Nombre de la persona asociada al ítem", "type": "string", "example": "Juan Gómez García" }, "tipo": { "description": "Tipo del ítem (INSCRIPCION = 1, MATRICULA = 2, MATERIAL = 3, AFILIACION = 4, RESERVA_TURNO = 5, CITA = 6)", "type": "integer", "format": "int64", "example": 1, "enum": [ 1, 2, 3, 4, 5, 6 ] }, "documento": { "description": "Número de documento de la persona asociada al ítem", "type": "string", "example": "1023928310" }, "valor": { "description": "Valor base del ítem sin impuesto.", "type": "integer", "format": "int64", "example": 43740 }, "impuesto": { "description": "Valor del impuesto aplicado sobre el valor", "type": "integer", "format": "int64", "example": 10260 }, "valor_total": { "description": "Valor total de la suma del valor más el impuesto", "type": "integer", "format": "int64", "example": 54000 }, "cantidad": { "description": "Cantidad del ítem adquirida", "type": "integer", "format": "int64", "example": 1 }, "valor_unitario": { "description": "Valor Total / Cantidad", "type": "integer", "format": "int64", "example": 54000 }, "descuentos": { "description": "Lista de descuentos aplicados al ítem", "type": "array", "items": { "$ref": "#/components/schemas/Descuento" } }, "descripcion": { "description": "Descripción del ítem", "type": "string", "example": "Plan Tu CUR 1 MES para Juan Gómez García" }, "precio": { "$ref": "#/components/schemas/Precio" }, "nombre_precio": { "description": "Nombre del precio aplicado", "type": "string", "example": "Plan Tu CUR Categoría B Mes" }, "codigo_precio": { "description": "Código del precio según la tabla de productos enviada. Id Material en SAP", "type": "string", "example": "1232355" }, "codigo_centro_beneficios": { "description": "Código del centro de beneficios (Centro de Beneficios SAP)", "type": "string", "example": "5648-12479" }, "categoria_precio": { "description": "Nombre de la categoría de precio", "type": "string", "example": "B" } } }, "LogCotizacion": { "description": "Cambio realizado en la cotización en un instante de tiempo", "type": "object", "properties": { "tipo": { "description": "Tipo de modificación que se realiza Tipo:\n * 1) CREACION\n * 2) ACTUALIZACION\n * 3) INFORMATIVO\n * 4) PRUEBAS", "type": "integer", "format": "int64", "enum": [ 1, 2, 3, 4 ], "example": 1 }, "detalles": { "description": "Descripción del log", "type": "string", "example": "Se creo una cotización" } } }, "Material": { "type": "object", "properties": { "id": { "description": "Identificador o id del material", "type": "integer", "format": "int64", "example": 8578 }, "nombre": { "description": "Nombre del material", "type": "string", "example": "Zapatos Bolos" }, "tipo": { "description": "Tipo del material:\n * 1) Referencia\n * 2) Transporte\n * 3) Turno\n * 4) Articulo", "type": "integer", "format": "int64", "enum": [ 1, 2, 3, 4 ], "example": 2 } } }, "MedioDePago": { "description": "Propiedades del medio de pago", "type": "object", "properties": { "codigo_medio_pago": { "description": "Código del medio de pago", "type": "integer", "format": "int64", "example": 124 }, "valor": { "description": "Valor pagado con este medio de pago", "type": "integer", "format": "int64", "example": 140000 }, "consecutivo": { "description": "Consecutivo generado por el medio de pago", "type": "number" } }, "required": [ "codigo_medio_pago", "valor" ] }, "Opcion": { "description": "Objeto que contiene la información de las opciones utilizadas para buscar los servicios. Los tipos de opción pueden ser los siguientes:\n * 1) Documento\n * 2) Antiguedad\n * 3) Clasificación\n * 4) Área (Deporte)\n * 5) Sede\n * 6) Días (Entre Semana / Fin de Semana)\n * 7) Horario (Mañana / Tarde / Noche)\n * 8) Nivel (Prueba)\n * 9) Servicio (Prueba Campeonato)\n * 10) Segmento (Edad)", "type": "object", "properties": { "tipo": { "description": "Nombre del tipo de la opción", "type": "string", "example": "clasificacion", "enum": [ "documento", "antiguedad", "clasificacion", "area", "sede", "dias", "horario", "nivel", "servicio", "segmento_edad" ] }, "nombre": { "description": "Nombre de la opción", "type": "string", "example": "Cursos" }, "atributos": { "description": "Características adicionales de la opción", "type": "object" }, "valor": { "description": "Valor para la opción seleccionada", "type": "integer", "example": 3 } } }, "Persona": { "description": "Información de una persona", "type": "object", "properties": { "id": { "type": "integer", "format": "int64", "description": "Id de la persona", "example": 544598 }, "tipo_documento": { "$ref": "#/components/schemas/TipoDocumento" }, "documento": { "$ref": "#/components/schemas/Documento" }, "nombre": { "description": "Nombre de la persona", "type": "string", "example": "Nicolás Andrés Cupitra León" }, "primerNombre": { "description": "Primer nombre de la persona", "type": "string", "example": "Nicolás" }, "otrosNombres": { "description": "Otros nombres de la persona", "type": "string", "example": "Andrés" }, "primerApellido": { "description": "Primer apellido de la persona", "type": "string", "example": "Cupitra" }, "otrosApellidos": { "description": "Otros apellidos de la persona", "type": "string", "example": "León" }, "genero": { "description": "Género de la persona: * 0) FEMENINO * 1) MASCULINO", "type": "integer", "format": "int64", "example": 0, "enum": [ 0, 1 ] }, "datos": { "description": "Datos adicionales de la persona", "type": "object", "additionalProperties": true, "example": { "email": "persona1@persona.com", "edad": 56, "categoria": "A" } } } }, "Precio": { "type": "object", "properties": { "nombre": { "description": "Nombre del precio", "type": "string", "maxLength": 250, "example": "Plan Tu Equilibrio 1 Año CAT B" }, "iva": { "description": "Valor del IVA para el precio", "type": "integer", "format": "int64", "example": 19000 }, "base": { "description": "Valor de la base (Sin IVA) del precio", "type": "integer", "format": "int64", "example": 100000 }, "total": { "description": "Valor total (incluye IVA) del precio", "type": "integer", "format": "int64", "example": 119000 }, "vigencia_inicio": { "description": "Fecha de inicio de la vigencia del precio", "type": "string", "format": "date-time", "example": "2018-09-12T13:00:00" }, "vigencia_fin": { "description": "Fecha de fin de la vigencia del precio", "type": "string", "format": "date-time", "example": "2018-10-12T13:00:00" }, "categoria_precio": { "description": "Nombre de la categoría de precio", "type": "string", "example": "B" } } }, "PrecioPersona": { "type": "object", "properties": { "persona": { "writeOnly": true, "$ref": "#/components/schemas/Persona" }, "Servicio": { "writeOnly": true, "$ref": "#/components/schemas/Servicio" }, "precio": { "readOnly": true, "$ref": "#/components/schemas/Precio" }, "descuentos": { "description": "Lista que contiene todos los descuentos que se pueden aplicar a la inscripción de la persona al servicio especificado", "readOnly": true, "type": "array", "items": { "$ref": "#/components/schemas/Descuento" } } } }, "Servicio": { "description": "Objeto que contiene toda la información del servicio", "type": "object", "properties": { "id": { "description": "Id del servicio", "type": "integer", "format": "int64", "example": 68274984 }, "nombre": { "type": "string", "description": "Nombre del servicio", "readOnly": true, "example": "Natación - ambientación principiante infantil - niños 6-7 años" }, "nombre_corto": { "description": "Nombre corto del servicio con un tamaño máximo de 25 caracteres ", "type": "string", "maxLength": 25, "readOnly": true, "example": "Natación Ambientación PI 6-7" }, "tipo": { "description": "Tipo de servicio que puede existir, los tipos pueden ser los siguientes:\n * 1 ) Escuela\n * 2 ) Practica Libre\n * 3 ) Plan Afiliación\n * 4 ) Cita\n * 5 ) Material", "type": "integer", "format": "int64", "enum": [ 1, 2, 3, 4, 5 ], "example": 1 }, "detalle": { "description": "El detalle del servicio puede ser diferentes tipos el detalle dependiendo el tipo de servicio que sea", "oneOf": [ { "$ref": "#/components/schemas/ServicioEscuela" }, { "$ref": "#/components/schemas/ServicioPracticaLibre" }, { "$ref": "#/components/schemas/ServicioPlanAfiliacion" }, { "$ref": "#/components/schemas/ServicioCita" }, { "$ref": "#/components/schemas/ServicioMaterial" } ], "example": { "id": 542682, "id_area": 342123, "area": "Natación", "id_nivel": 24156, "nivel": "Ambientación Principiante Infantil", "id_categoria": 6541, "categoria": "6 a 7 años", "id_ciclo": 72349, "ciclo": "Ciclo 10 Entre Semana", "id_sede": 3524312, "sede": "CUR Centro Urbano de Reacreación", "fecha_inicio": "2018-10-09", "fecha_fin": "2018-11-09", "hora_inicio": "10:00", "hora_fin": "11:30", "dias": { "lunes": false, "martes": true, "miercoles": false, "jueves": true, "viernes": false, "sabado": false, "domingo": false, "entre_semana": true, "fin_de_semana": false }, "fecha_inicio_inscripcion_antiguos": "2018-10-02T08:00:00", "fecha_fin_inscripcion_antiguos": "2018-10-078T08:00:00", "fecha_inicio_inscripcion_nuevos": "2018-10-078T08:00:00", "fecha_fin_inscripcion_nuevos": "2018-10-11T11:29:00", "descripcion": "Natación - Ambientación Principiante Infantil - 6 a 7 años - Mar y Jue 10:00-11:30 - Ciclo 10 Entre Semana" } }, "atributos": { "description": "Lista de los atributos de un servicio", "type": "array", "items": { "$ref": "#/components/schemas/Atributo" }, "example": [ { "tipo": "Antiguedad", "valor": "Antiguo" }, { "tipo": "Sede", "valor": "CUR Centro Urbano de Recreación" } ] }, "precios": { "description": "Precios *vigentes* del servicio, uno por cada categoría de precios que aplique.", "type": "array", "items": { "$ref": "#/components/schemas/Precio" } }, "cupos": { "type": "integer", "format": "int32", "description": "Cantidad de cupos disponibles para el servicio", "example": 10 } } }, "ServicioEscuela": { "type": "object", "properties": { "id_area": { "description": "Identificador del área asociada al servicio tipo escuela", "type": "integer", "format": "int64", "example": 342123 }, "area": { "description": "Nombre del área", "type": "string", "example": "Natación" }, "id_nivel": { "description": "Identificador del nivel asociado al servicio tipo escuela", "type": "integer", "format": "int64", "example": 24156 }, "nivel": { "description": "Nombre del nivel", "type": "string", "example": "Ambientación Principiante Infantil" }, "id_categoria": { "description": "Identificador de la categoria asociada a servicio tipo escuela", "type": "integer", "format": "int64", "example": 6541 }, "categoria": { "description": "Nombre de la categoría de edad", "type": "string", "example": "6 a 7 años" }, "id_ciclo": { "description": "Identificador del ciclo de inscripción del servicio", "type": "integer", "format": "int64", "example": 72349 }, "ciclo": { "description": "Nombre del ciclo de inscripción", "type": "string", "example": "Ciclo 10 Entre Semana" }, "id_sede": { "description": "Identificador de la sede del servicio de tipo escuela", "type": "integer", "format": "int64", "example": 3524312 }, "sede": { "type": "string", "readOnly": true, "example": "CUR Centro Urbano de Reacreación" }, "fecha_inicio": { "type": "string", "format": "date", "example": "2018-10-09" }, "fecha_fin": { "type": "string", "format": "date", "example": "2018-11-09" }, "hora_inicio": { "type": "string", "format": "time", "example": "10:00" }, "hora_fin": { "type": "string", "format": "time", "example": "11:30" }, "dias": { "$ref": "#/components/schemas/Dias" }, "fecha_inicio_inscripcion_antiguos": { "type": "string", "format": "date-time", "example": "2018-10-02T08:00:00" }, "fecha_fin_inscripcion_antiguos": { "type": "string", "format": "date-time", "example": "2018-10-078T08:00:00" }, "fecha_inicio_inscripcion_nuevos": { "type": "string", "format": "date-time", "example": "2018-10-078T08:00:00" }, "fecha_fin_inscripcion_nuevos": { "type": "string", "format": "date-time", "example": "2018-10-11T11:29:00" }, "habilitaPruebasTorneo": { "type": "boolean", "description": "Flag que indica si este servicio habilita pruebas para inscripción a torneo", "example": false } } }, "ServicioPracticaLibre": { "type": "object", "properties": { "turno_grupal": { "type": "boolean", "description": "Indicador que muestra si el turno aplica para varias personas al tiempo" }, "duracion": { "type": "integer", "format": "int32", "example": 50, "description": "Duración en minutos del turno" }, "cantidad_personas": { "type": "integer", "format": "int32", "example": 4, "description": "Cantidad de personas máximas por turno" }, "inicio_inmediato": { "type": "boolean", "example": false, "description": "Indicador que muestra si puede tener inicio inmediato el turno (dentro de los siguientes 5, 10 o 15 min)" }, "intervalo_entre_turnos": { "type": "integer", "format": "int32", "description": "Duración en minutos de cada cuanto se puede obtener turnos", "example": 60 }, "tiempo_fijo": { "type": "boolean", "description": "Indicador que muestra si los usos aumentan el tiempo o solo el valor", "example": false }, "edad_minima": { "type": "integer", "format": "int32", "description": "Edad mínima con la cual se pueden registrar los participantes", "example": 12 }, "edad_maxima": { "type": "integer", "format": "int32", "description": "Edad máxima con la cual se pueden registrar los participantes", "example": 60 }, "genero": { "type": "string", "description": "Género que aplica al centro de entrnamiento" }, "centro_entrenamiento": { "description": "Objeto que contiene toda la información del centro de entrenamiento de la practica libre", "$ref": "#/components/schemas/CentroEntrenamiento" } } }, "ServicioPlanAfiliacion": { "type": "object", "properties": { "centro_entrenamiento": { "description": "Objeto que contiene toda la información del centro de entrenamiento del plan de afiliación", "$ref": "#/components/schemas/CentroEntrenamiento" }, "numero_sesiones": { "description": "Número de sesiones del beneficio principal plan de afiliación", "type": "integer", "format": "int64", "example": null }, "tiempo": { "description": "Tiempo de duración en días del beneficio principal del plan de afiliación", "type": "integer", "format": "int64", "example": 60 }, "medico": { "description": "Parametro que describe si el plan de afiliación tiene médico", "type": "boolean", "example": false }, "reservaAlComprar": { "type": "boolean", "description": "Requiere reservar todos los turnos al momento de comprar. Por ejemplo para un pasadía", "example": false }, "dias": { "description": "Días en los que estará disponible el plan", "$ref": "#/components/schemas/Dias" }, "beneficios": { "description": "Lista del beneficio principal y secundarios del plan de afiliación", "type": "array", "readOnly": true, "items": { "$ref": "#/components/schemas/BeneficioSuscripcion" } } } }, "ServicioCita": { "type": "object", "properties": { "tipo": { "type": "integer", "format": "int32", "example": 3 }, "centro_entrenamiento": { "$ref": "#/components/schemas/CentroEntrenamiento" } } }, "ServicioMaterial": { "type": "object", "properties": { "material": { "$ref": "#/components/schemas/Material" } } }, "Suscripcion": { "type": "object", "properties": { "id_plan_afiliacion": { "type": "integer", "format": "int64", "example": 3654 }, "nombre": { "type": "string", "example": "Gimnasio un mes" }, "cantidad_aplazamientos": { "type": "integer", "format": "int64", "example": 1 }, "duracion_aplazamientos": { "type": "integer", "format": "int64", "example": 15 }, "principal": { "type": "boolean", "example": true }, "medico": { "type": "boolean", "example": true }, "afiliaciones": { "type": "array", "items": { "$ref": "#/components/schemas/Afiliacion" } } } }, "Transaccion": { "description": "Propiedades de la transacción de pago de una cotización", "type": "object", "properties": { "id": { "description": "El id de la transacción enviado por el sistema de pago.", "type": "string", "example": "CUS-123123-432" }, "fecha": { "description": "Fecha en la que se completó la transacción de pago", "type": "string", "format": "date-time", "example": "2018-02-12T15:22:21+00:00" }, "identificador_cajero": { "description": "Identificador del cajero quien realiza la cotización en el sistema Hércules (Normalmente la cédula o código de máquina)", "type": "number", "example": "53889001" }, "identificador_caja": { "description": "Identificador de la máquina que hizo el pago (Módulo, Caja). En caso de transacción en línea se usará algún identificador del proveedor de pago.", "type": "string", "example": "PAI023123" }, "canal": { "description": "Identificador del canal de pago - 1) Caja - 2) Módulos - 3) Web - 4) App - 5) IVR - 6) Interno", "type": "integer", "example": 3, "enum": [ 1, 2, 3, 4, 5, 6 ] }, "medio_de_pago": { "type": "array", "items": null, "$ref": "#/components/schemas/MedioDePago" } } }, "TipoDocumento": { "description": "Enumeración de tipos de documento soportados", "type": "string", "example": "CC", "enum": [ "CC", "CE", "NIT", "TI", "PAS", "FN", "RC", "NUIP", "MSI", "CD", "PEP" ] }, "TurnoPracticaLibre": { "type": "object", "properties": { "horario": { "$ref": "#/components/schemas/Horario" }, "tiquetera": { "description": "Parametro que informa si la practica libre se reserva a través de una tiquetera", "type": "boolean", "default": false, "example": true }, "cantidad_usos": { "description": "Número de la cantidad de usos que se desean reservar", "type": "integer", "format": "int64", "default": 1, "example": 12 }, "cancelable": { "readOnly": true, "description": "Parametro que describe si el turno de practica libre es aún cancelable", "type": "boolean", "example": true }, "id": { "description": "Identificador del turno de la practica libre", "type": "integer", "format": "int64", "example": 1254 }, "persona": { "description": "Persona que tiene la tiquetera o a la que se quiere asociar el turno de práctica libre", "$ref": "#/components/schemas/Persona" }, "materiales": { "description": "Lista de los materiales para le turno de practica libre", "type": "array", "items": { "$ref": "#/components/schemas/Material" } }, "zona": { "description": "Lista de las zonas habilitadas para realizar la practica libre", "type": "array", "items": { "description": "Lista de los identificadores de los ítems del turno de practica libre", "$ref": "#/components/schemas/Zona" } } }, "required": [ "tiquetera", "cantidad_sesiones" ] }, "Zona": { "type": "object", "properties": { "id": { "description": "Identificador de la zona", "type": "integer", "format": "int64", "example": 6586 }, "id_escenario": { "description": "Identificador del escenario al que pertenece la zona", "type": "integer", "format": "int64", "example": 6543564 }, "escenario": { "description": "Nombre del escenario al que pertenece la zona", "type": "string", "readOnly": true, "example": "Canchas de Football" }, "nombre": { "description": "Nombre de la zona", "type": "string", "example": "Cancha 1" }, "caracteristicas": { "type": "array", "description": "Características que contempla la zona", "items": { "type": "object", "properties": { "nombre": { "description": "Nombre de la característica", "type": "string", "example": "Clase de aeróbicos" }, "id_zona": { "description": "Id de la zona a la que pertenece la característica", "type": "string", "example": "83" }, "id_centro_entrenamiento": { "description": "Id del centro entrenamiento que contempla la zona y característica relacionada", "type": "string", "example": "103" } } }, "example": [ { "nombre": "Clase de Aeróbicos", "id_zona": "83", "id_centro_entrenamiento": "103" } ] } } } }, "securitySchemes": { "api_key": { "type": "apiKey", "name": "Api-Key", "in": "header", "description": "Llave *secreta* del API" }, "id_client": { "type": "apiKey", "name": "Client-Id", "in": "header", "description": "Id del cliente del API" } } }, "security": [ { "api_key": [], "client_id": [] } ] }