diff --git a/apigee/recreacionyturismo-venta.json b/apigee/recreacionyturismo-venta.json index 3a2235a..54a84b9 100644 --- a/apigee/recreacionyturismo-venta.json +++ b/apigee/recreacionyturismo-venta.json @@ -34,7 +34,7 @@ } ], "paths": { - "/v1/recreacionyturismo/catalogo": { + "/v1/recreacionyturismo/catalogo": { "post": { "tags": [ "cols-recreacionyturismo-catalogo" @@ -70,6 +70,103 @@ } } }, + "/v1/recreacionyturismo/catalogo/costo": { + "post": { + "tags": [ + "cols-recreacionyturismo-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", + "operationId": "consultaCostoInscripcion.v1", + "responses": { + "200": { + "description": "Operación exitosa", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/consultaCostoInscripcionResponse" + } + } + } + }, + "400": { + "description": "Estado inválido" + } + }, + "security": [ + { + "apigee_auth": [ + "write:apigee", + "read:apigee" + ] + } + ], + "requestBody": { + "$ref": "#/components/requestBodies/consultaCostoInscripcionRequestBody" + } + } + }, + "/v1/recreacionyturismo/catalogo/costo/categoria": { + "get": { + "tags": [ + "cols-recreacionyturismo-catalogo" + ], + "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.", + "operationId": "consultaCostoCategoria.v1", + "parameters": [ + { + "name": "idServicio", + "in": "query", + "description": "Numero de identificacion del servicio cuyos precios se desean consultar (consistente con el tipo de servicio).", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "tipoServicio", + "in": "query", + "description": "Tipo de servicios.", + "required": true, + "schema": { + "description": "1- Practica Libre 2- Material 3- Cita 4- Plan Afiliación", + "type": "integer", + "format": "int64", + "enum": [ + 1, + 2, + 3, + 4 + ] + } + }, + ], + "responses": { + "200": { + "description": "Operación exitosa", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/consultaCostoCategoriaResponse" + } + } + } + }, + "400": { + "description": "Estado inválido" + } + }, + "security": [ + { + "apigee_auth": [ + "write:apigee", + "read:apigee" + ] + } + ] + } + }, "/v1/recreacionyturismo/cotizacion": { "get": { "tags": [ @@ -157,44 +254,98 @@ ] } ] + }, + "put": { + "tags": [ + "cols-recreacionyturismo-cotizacion" + ], + "summary": "Actualiza una cotización por número de referencia o id", + "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.", + "operationId": "actualizaCotizacionId.v1", + "parameters": [ + { + "name": "idCotizacion", + "in": "query", + "description": "Id de la Cotización (también llamado Número de Referencia)", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "idTablaProducto", + "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" + } + }, + { + "name": "articulos", + "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 encontrada.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "costos", + "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" + } + }, + { + "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" + } + }, + { + "name": "logs", + "in": "query", + "description": "Flag para delvolver el listado de log de la cotización", + "required": false, + "schema": { + "type": "boolean" + } + }, + ], + "responses": { + "200": { + "description": "Operación exitosa", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/actualizaCotizacionIdResponse" + } + } + } + }, + "400": { + "description": "Estado inválido" + } + }, + "security": [ + { + "apigee_auth": [ + "write:apigee", + "read:apigee" + ] + } + ], + "requestBody": { + "$ref": "#/components/requestBodies/actualizaCotizacionIdRequestBody" + } } - }, - # "/v1/medicamentos/localizacion/departamentos": { - # "post": { - # "tags": [ - # "sura-medicamentos-localizacion" - # ], - # "summary": "Recepción prescripciones", - # "description": "Recepción de fórmulas médicas emitida por una EPS asociada", - # "operationId": "recepcionFormulas", - # "responses": { - # "200": { - # "description": "Operación exitosa", - # "content": { - # "application/json": { - # "schema": { - # "$ref": "#/components/schemas/recepcionFormulasResponse" - # } - # } - # } - # }, - # "400": { - # "description": "Estado inválido" - # } - # }, - # "security": [ - # { - # "apigee_auth": [ - # "write:apigee", - # "read:apigee" - # ] - # } - # ], - # "requestBody": { - # "$ref": "#/components/requestBodies/recepcionFormulasRequestBody" - # } - # } - # }, + } }, "externalDocs": { "description": "Encontrar más información en EnterpriseArchitect", @@ -234,6 +385,276 @@ "name": "resultado" } }, + "actualizaCotizacionIdResponse": { + "type": "object", + "required": [ + "resultado" + ], + "properties": { + "resultado": { + "type": "array", + "xml": { + "name": "resultado" + }, + "items": { + "$ref": "#/components/schemas/resultadoCotizacion" + }, + }, + "actualizaCotizacion": { + "items":{ + "$ref": "#/components/schemas/actualizaCotizacion" + } + } + } + }, + "actualizaCotizacion": { + "type": "object", + "properties": { + "afiliado": { + "$ref": "#/components/schemas/afiliado" + }, + "cotizacion": { + "$ref": "#/components/schemas/cotizacion" + }, + "transaccion": { + "$ref": "#/components/schemas/transaccion" + }, + "logs": { + "type": "array", + "items":{ + "$ref": "#/components/schemas/logs" + } + } + } + }, + "actualizaCotizacionIdRequest": { + "properties": { + "afiliado": { + "$ref": "#/components/schemas/afiliadoActualizar" + }, + "cotizacion": { + "$ref": "#/components/schemas/cotizacionActualizar" + }, + "transaccion": { + "$ref": "#/components/schemas/transaccion" + }, + "logs": { + "type": "array", + "items":{ + "$ref": "#/components/schemas/logs" + } + } + } + }, + "consultaCostoCategoriaResponse": { + "type": "object", + "required": [ + "resultado" + ], + "properties": { + "resultado": { + "type": "array", + "xml": { + "name": "resultado" + }, + "items": { + "$ref": "#/components/schemas/resultado" + } + }, + "consultaCostoCategoria": { + "type": "array", + "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", + "items": { + "$ref": "#/components/schemas/consultaCostoCategoria" + } + } + } + }, + "consultaCostoCategoria": { + "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": { + "$ref": "#/components/schemas/categoria" + }, + "servicio": { + "$ref": "#/components/schemas/servicio" + }, + "costo": { + "$ref": "#/components/schemas/costo" + }, + "descuento": { + "type": "array", + "items": { + "$ref": "#/components/schemas/descuento" + } + } + } + }, + "consultaCostoInscripcionResponse": { + "type": "object", + "required": [ + "resultado" + ], + "properties": { + "resultado": { + "type": "array", + "xml": { + "name": "resultado" + }, + "items": { + "$ref": "#/components/schemas/resultado" + } + }, + "consultaCostoInscripcion": { + "type": "array", + "items": { + "$ref": "#/components/schemas/consultaCostoInscripcion" + } + } + } + }, + "consultaCostoInscripcion": { + "type": "object", + "properties": { + "cliente": { + "$ref": "#/components/schemas/cliente" + }, + "servicio": { + "$ref": "#/components/schemas/servicio" + }, + "costo": { + "$ref": "#/components/schemas/costo" + }, + "descuento": { + "type": "array", + "items": { + "$ref": "#/components/schemas/descuento" + } + } + } + }, + "consultaCostoInscripcionRequest": { + "type": "array", + "items": { + "properties": { + "cliente": { + "$ref": "#/components/schemas/cliente" + }, + "servicio": { + "$ref": "#/components/schemas/servicio" + }, + "costo": { + "$ref": "#/components/schemas/costo" + } + } + } + }, + "genero": { + "type": "object", + "properties": { + "codigo": { + "type": "string", + "description": "Género de la persona: * 0) FEMENINO * 1) MASCULINO", + "enum": [ + 0, + 1 + ] + }, + } + }, + "documento": { + "type": "object", + "properties": { + "tipo": { + "type": "string", + "description": "Tipo de documento del titular de la cotización", + "enum": [ + "CC", + "CE", + "NIT", + "TI", + "PAS", + "FN", + "RC", + "NUIP", + "MSI", + "CD", + "PEP" + ] + }, + "numero": { + "type": "string", + "description": "Número de documento de una persona" + } + } + }, + "nombre": { + "type": "object", + "properties": { + "primero": { + "type": "string", + "description": "Primer nombre" + }, + "segundo": { + "type": "string", + "description": "Segundo nombre" + }, + "primerApellido": { + "type": "string", + "description": "Primer apellido" + }, + "segundoApellido": { + "type": "string", + "description": "Segundo apellido" + }, + "completo": { + "type": "string", + "description": "Nombre completo" + } + }, + "xml": { + "name": "nombre" + } + }, + "categoria": { + "type": "object", + "properties": { + "sigla": { + "type": "string", + "description": "Sigla de la categoria" + } + } + }, + "cliente": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Id del cliente" + }, + "edad": { + "type": "string", + "description": "Edad del cliente" + }, + "correoElectronico": { + "type": "string", + "description": "Correo electronico del cliente" + }, + "documento": { + "$ref": "#/components/schemas/documento" + }, + "nombre": { + "$ref": "#/components/schemas/nombre" + }, + "genero": { + "$ref": "#/components/schemas/genero" + }, + "categoria": { + "$ref": "#/components/schemas/categoria" + } + } + }, "consultaCatalogoRequest": { "type": "object", "properties": { @@ -369,12 +790,71 @@ }, "medio": { "type": "string", - "description": "Código del medio de pago" + "description": "Código del medio de pago" + }, + "valor": { + "type": "string", + "description": "Valor pagado con este medio de pago" + } + } + } + } + }, + "cotizacionActualizar": { + "type": "object", + "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", + "properties": { + "id": { + "type": "string", + "description": "Id de la cotización en Hércules" + }, + "estado": { + "type": "string", + "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*" + }, + "mensaje": { + "type": "string", + "description": "Mensaje de la cotización" + }, + "idParticipacionOrganizacion": { + "type": "string", + "description": "Id de la ParticipacionOrganizacion en Hércules de la cotización (uso interno)" + }, + "fechaExpiracion": { + "type": "string", + "description": "Fecha de expiración de la cotización" + }, + "usuario": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Id del usuario en Hércules que realiza la cotización (si se hace por servicio sería el client_id)" + }, + "nombre": { + "type": "object", + "properties":{ + "completo": { + "type": "string", + "description": "Nombre del usuario que reqliza la cotización" + }, + } + } + } + }, + "empresa": { + "type": "object", + "properties":{ + "nombre": { + "type": "string", + "description": "Nombre de la organización o empresa" }, - "valor": { - "type": "string", - "description": "Valor pagado con este medio de pago" - } + } + }, + "articulo": { + "type": "array", + "items":{ + "$ref": "#/components/schemas/articuloActualizar" } } } @@ -486,6 +966,117 @@ } } }, + "articuloActualizar": { + "type": "object", + "description": "Hace referencia al servicio que se quiere inscribit, a la persona, y el valor de la inscripción al servicio ", + "properties": { + "tipo": { + "type": "string", + "description": "Tipo del ítem (INSCRIPCION = 1, MATRICULA = 2, MATERIAL = 3, AFILIACION = 4, RESERVA_TURNO = 5, CITA = 6)", + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6 + ] + }, + "cantidad": { + "type": "string", + "description": "Cantidad del ítem adquirida" + }, + "descripcion": { + "type": "string", + "description": "Descripción del ítem" + }, + "centroBeneficio": { + "type": "string", + "description": "Código del centro de beneficios (Centro de Beneficios SAP)" + }, + "cliente": { + "type": "object", + "properties":{ + "nombre": { + "type": "object", + "properties":{ + "completo": { + "type": "string", + "description": "Nombre de la persona asociada al ítem" + } + } + }, + "documento": { + "type": "object", + "properties":{ + "numero": { + "type": "string", + "description": "Número de documento de la persona asociada al ítem" + } + } + }, + } + }, + "categoria": { + "type": "object", + "properties":{ + "sigla": { + "type": "string", + "description": "Nombre de la categoría de precio" + } + } + }, + "costo": { + "type": "object", + "properties": { + "nombre": { + "type": "string", + "description": "Nombre del precio aplicado." + }, + "codigo": { + "type": "string", + "description": "Código del precio según la tabla de productos enviada. Id Material en SAP" + }, + "base": { + "type": "string", + "description": "Valor base del ítem sin impuesto." + }, + "impuesto": { + "type": "string", + "description": "Valor del impuesto aplicado sobre el valor" + }, + "total": { + "type": "object", + "properties":{ + "valor": { + "type": "string", + "description": "Valor total de la suma del valor más el impuesto" + } + } + } + } + }, + "servicio": { + "type": "object", + "properties":{ + "nombre": { + "type": "string", + "description": "Nombre del titular que realizó la cotización" + }, + "costo": { + "$ref": "#/components/schemas/costoServicioCotizacion" + } + } + }, + "descuento": { + "type": "array", + "description": "Lista de descuentos aplicados al ítem", + "items":{ + "$ref": "#/components/schemas/descuento" + } + } + } + }, "articulo": { "type": "object", "description": "Hace referencia al servicio que se quiere inscribit, a la persona, y el valor de la inscripción al servicio ", @@ -655,6 +1246,15 @@ "type": "string", "description": "Fecha de fin de la vigencia del precio" }, + "categoria": { + "type": "object", + "properties":{ + "sigla": { + "type": "string", + "description": "Nombre de la categoría de precio" + } + } + }, "total": { "type": "object", "properties":{ @@ -666,6 +1266,46 @@ } } }, + "afiliadoActualizar": { + "type": "object", + "properties": { + "nombre": { + "type": "object", + "properties": { + "completo": { + "type": "string", + "description": "Nombre del titular que realizó la cotización" + } + } + }, + "documento": { + "type": "object", + "properties": { + "tipo": { + "type": "string", + "description": "Tipo de documento del titular de la cotización", + "enum": [ + "CC", + "CE", + "NIT", + "TI", + "PAS", + "FN", + "RC", + "NUIP", + "MSI", + "CD", + "PEP" + ] + }, + "numero": { + "type": "string", + "description": "Número de documento de una persona" + } + } + } + } + }, "afiliado": { "type": "object", "properties": { @@ -1111,48 +1751,51 @@ "costo": { "type": "array", "items":{ - "type": "object", - "properties":{ - "nombre": { - "type": "string", - "description": "Nombre del precio" - }, - "iva": { - "type": "string", - "description": "Valor del IVA para el precio" - }, - "base": { - "type": "string", - "description": "Valor de la base (Sin IVA) del precio" - }, - "fechaInicioVigencia": { - "type": "string", - "format": "date-time", - "description": "Fecha de inicio de la vigencia del precio" - }, - "fechaFinVigencia": { - "type": "string", - "format": "date-time", - "description": "Fecha de fin de la vigencia del precio" - }, - "categoria": { - "type": "object", - "properties":{ - "sigla": { - "type": "string", - "description": "Nombre de la categoría de precio" - } - } - }, - "total": { - "type": "object", - "properties":{ - "valor": { - "type": "string", - "description": "Valor total (incluye IVA) del precio" - } - } - } + "$ref": "#/components/schemas/costo" + } + } + } + }, + "costo": { + "type": "object", + "properties":{ + "nombre": { + "type": "string", + "description": "Nombre del precio" + }, + "iva": { + "type": "string", + "description": "Valor del IVA para el precio" + }, + "base": { + "type": "string", + "description": "Valor de la base (Sin IVA) del precio" + }, + "fechaInicioVigencia": { + "type": "string", + "format": "date-time", + "description": "Fecha de inicio de la vigencia del precio" + }, + "fechaFinVigencia": { + "type": "string", + "format": "date-time", + "description": "Fecha de fin de la vigencia del precio" + }, + "categoria": { + "type": "object", + "properties":{ + "sigla": { + "type": "string", + "description": "Nombre de la categoría de precio" + } + } + }, + "total": { + "type": "object", + "properties":{ + "valor": { + "type": "string", + "description": "Valor total (incluye IVA) del precio" } } } @@ -1160,6 +1803,28 @@ } }, "requestBodies": { + "actualizaCotizacionIdRequestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/actualizaCotizacionIdRequest" + } + } + }, + "description": "La cotización que se desea actualizar. **Solo campos obligatorios son necesarios**.", + "required": true + }, + "consultaCostoInscripcionRequestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/consultaCostoInscripcionRequest" + } + } + }, + "description": "Objeto con la información necesaria para la consulta del costo de la inscripción en un servicio de una persona.", + "required": true + }, "consultaCatalogoRequestBody": { "content": { "application/json": {