Changeset 1489193 in murachi for murachi


Ignore:
Timestamp:
Sep 9, 2015, 10:43:28 AM (9 years ago)
Author:
antonioaraujob <aaraujo@…>
Branches:
master
Children:
5dcf8b7
Parents:
d732178
Message:

Agregadas clases para realizar autenticación básica de HTTP en el servicio web. Mejoras en la documentación del API (apidoc). Ahora los recursos del servicio se consumen con autenticación básica HTTP y sobre HTTPS.

Location:
murachi/src/main/java/ve/gob/cenditel/murachi
Files:
3 added
1 edited

Legend:

Unmodified
Added
Removed
  • murachi/src/main/java/ve/gob/cenditel/murachi/MurachiRESTWS.java

    rd732178 r1489193  
    4545import javax.ws.rs.FormParam;
    4646import javax.ws.rs.GET;
     47import javax.ws.rs.NameBinding;
    4748import javax.ws.rs.POST;
    4849import javax.ws.rs.Path;
     
    180181         *
    181182         * @apiExample Example usage:
    182      * curl -i https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/version
     183     * curl -i https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/version -H "Authorization: Basic YWRtaW46YWRtaW4="
    183184         *
    184185         * @apiSuccess {String} murachiVersion Versión del API
     
    187188        @GET
    188189        @Produces(MediaType.APPLICATION_JSON)
     190        @Authenticator
    189191        public Response returnVersion() {
    190192                logger.info("/version: Murachi Version: " + API_VERSION);       
     
    224226     *           contentType: false,
    225227         *           processData: false,
     228         *           headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
    226229     *           success: function(response) {
    227230     *                  //identificador del archivo en el servidor
     
    239242         *       "error": "datos recibidos del formulario son nulos"
    240243         *     }
     244         *     HTTP/1.1 401 Unauthorized
     245         *     {
     246         *       "error": "acceso no autorizado"
     247         *     }
    241248         *     
    242249         *     HTTP/1.1 500
     
    252259        @Consumes(MediaType.MULTIPART_FORM_DATA)
    253260        @Produces(MediaType.APPLICATION_JSON)
     261        @Authenticator
    254262        public Response uploadFile(
    255263                        @FormDataParam("upload") InputStream uploadedInputStream,
     
    534542     *           contentType: false,
    535543         *           processData: false,
     544         *           headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
    536545     *           success: function(response) {
    537546         *                  var json = JSON.stringify(response);
     
    551560         *     }
    552561         *     
     562         *     HTTP/1.1 401 Unauthorized
     563         *     {
     564         *       "error": "acceso no autorizado"
     565         *     }     
    553566         *     
    554567         *     HTTP/1.1 500
     
    562575        @Consumes(MediaType.MULTIPART_FORM_DATA)
    563576        @Produces(MediaType.APPLICATION_JSON)
     577        @Authenticator
    564578        public Response uploadFileAndVerify(
    565579                        @FormDataParam("upload") InputStream uploadedInputStream,
     
    714728         *
    715729         * @apiExample Example usage:
    716      * curl -i https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/f011ff87-f0d0-4a5e-a0b9-a64eb70661ee
     730     * curl -i https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/f011ff87-f0d0-4a5e-a0b9-a64eb70661ee -H "Authorization: Basic YWRtaW46YWRtaW4="
    717731         *
    718732         * @apiErrorExample {json} Error-Response:
     733         *     HTTP/1.1 401 Unauthorized
     734         *     {
     735         *       "error": "acceso no autorizado"
     736         *     }
     737         *     
    719738         *     HTTP/1.1 404 Bad Request
    720739         *     {
     
    780799        @Path("/{idFile}")
    781800        @Produces("application/json")
     801        @Authenticator
    782802        public Response verifyAFile(@PathParam("idFile") String idFile) throws MurachiException {
    783803               
     
    13641384     *           data: parameters,
    13651385     *           contentType: "application/json",
     1386     *           headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
    13661387     *           success: function(data, textStatus, jqXHR){
    13671388         *                              var json_x = data;
     
    13861407         *     }
    13871408         *     
     1409         *     HTTP/1.1 401 Unauthorized
     1410         *     {
     1411         *       "error": "acceso no autorizado"
     1412         *     }
     1413         *     
    13881414         *     HTTP/1.1 500 Internal Server Error
    13891415         *     {
     
    13981424        @Consumes(MediaType.APPLICATION_JSON)
    13991425        @Produces(MediaType.APPLICATION_JSON)
     1426        @Authenticator
    14001427        //public PresignHash presignPdf(PresignParameters presignPar, @Context HttpServletRequest req) {
    14011428        public Response presignPdf(PresignParameters presignPar, @Context HttpServletRequest req) throws MurachiException {
     
    17131740     *           data: JSON.stringify({"signature":signature.hex}),
    17141741     *           contentType: "application/json",
     1742     *           headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
    17151743     *           success: function(data, textStatus, jqXHR){
    17161744     *                              alert('Archivo firmado correctamente: ' + data['signedFileId']);
     
    17241752         *
    17251753         * @apiErrorExample {json} Error-Response:
     1754         *     HTTP/1.1 401 Unauthorized
     1755         *     {
     1756         *       "error": "acceso no autorizado"
     1757         *     }
     1758         *
    17261759         *     HTTP/1.1 500 Internal Server Error
    17271760         *     {
     
    17331766        @Path("/pdfs/resenas")
    17341767        @Consumes(MediaType.APPLICATION_JSON)
    1735         @Produces(MediaType.APPLICATION_JSON)   
     1768        @Produces(MediaType.APPLICATION_JSON)
     1769        @Authenticator
    17361770        public Response postsignPdf(PostsignParameters postsignPar, @Context HttpServletRequest req) throws IOException, MurachiException {
    17371771               
     
    18671901        @GET
    18681902        @Path("/pdfs/{idFile}")
     1903        @Authenticator
    18691904        public Response getPdfSigned(@PathParam("idFile") String idFile) {
    18701905                logger.info("/pdfs/{idFile}");
     
    23522387     *           data: parameters,
    23532388     *           contentType: "application/json",
     2389     *           headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
    23542390     *           success: function(data, textStatus, jqXHR){
    23552391         *                              var json_x = data;
     
    23682404         *
    23692405         * @apiErrorExample {json} Error-Response:
     2406         *     HTTP/1.1 401 Unauthorized
     2407         *     {
     2408         *       "error": "acceso no autorizado"
     2409         *     }
     2410         *     
    23702411         *     HTTP/1.1 500 Internal Server Error
    23712412         *     {
     
    23802421        @Consumes(MediaType.APPLICATION_JSON)
    23812422        @Produces(MediaType.APPLICATION_JSON)
     2423        @Authenticator
    23822424        public Response presignBdoc(PresignParametersBdoc presignPar, @Context HttpServletRequest req) throws MurachiException {
    23832425               
     
    25522594     *           data: JSON.stringify({"signature":signature.hex}),
    25532595     *           contentType: "application/json",
     2596     *           headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
    25542597     *           success: function(data, textStatus, jqXHR){
    25552598     *                              alert('Archivo firmado correctamente: ' + data['signedFileId']);
     
    25632606         *
    25642607         * @apiErrorExample {json} Error-Response:
     2608         *     HTTP/1.1 401 Unauthorized
     2609         *     {
     2610         *       "error": "acceso no autorizado"
     2611         *     }
     2612         *     
    25652613         *     HTTP/1.1 500 Internal Server Error
    25662614         *     {
     
    25722620        @Path("/bdocs/resenas")
    25732621        @Consumes(MediaType.APPLICATION_JSON)
    2574         @Produces(MediaType.APPLICATION_JSON)   
     2622        @Produces(MediaType.APPLICATION_JSON)
     2623        @Authenticator
    25752624        public Response postsignBdoc(PostsignParameters postsignPar, @Context HttpServletRequest req) throws IOException, MurachiException {
    25762625               
     
    26602709         * @apiSuccess {String} containerId Identificador único del contenedor BDOC creado.
    26612710         *
     2711         * @apiExample Example usage:
     2712         *
     2713         * var formData = new FormData();
     2714     * var fileInput = document.getElementById("file-sign");
     2715     * var list = fileInput.files;
     2716     * for (var i=0; i<list.length; i++){
     2717         *    formData.append("upload", $("#file-sign")[0].files[i]);
     2718         * }
     2719         *
     2720         * $.ajax({
     2721     *          url: "https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/cargas",
     2722     *          type: "post",
     2723     *          dataType: "json",
     2724     *          data: formData,
     2725     *          cache: false,
     2726     *          contentType: false,
     2727         *          processData: false,
     2728         *          headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
     2729         *          success: function(response) {
     2730         *             var fileId = response.containerId.toString();
     2731         *          },
     2732         *          error: function(jqXHR, textStatus, errorThrown){
     2733         *             alert('ajax error function: ' + jqXHR.responseText);                             
     2734         *          }
     2735     *  });
     2736     * 
    26622737         * @apiErrorExample {json} Error-Response:
     2738         *     HTTP/1.1 401 Unauthorized
     2739         *     {
     2740         *       "error": "acceso no autorizado"
     2741         *     }
     2742         *
    26632743         *     HTTP/1.1 500 Internal Server Error
    26642744         *     {
     
    26712751        @Consumes(MediaType.MULTIPART_FORM_DATA)
    26722752        @Produces(MediaType.APPLICATION_JSON)
     2753        @Authenticator
    26732754        public Response uploadFilesToBDOC(FormDataMultiPart formParams) throws MurachiException {
    26742755               
     
    27862867         *
    27872868         * @apiErrorExample {json} Error-Response:
     2869         *     HTTP/1.1 401 Unauthorized
     2870         *     {
     2871         *       "error": "acceso no autorizado"
     2872         *     }
     2873         *     
    27882874         *     HTTP/1.1 500 Internal Server Error
    27892875         *     {
     
    27962882        @Consumes(MediaType.MULTIPART_FORM_DATA)
    27972883        @Produces(MediaType.APPLICATION_JSON)
     2884        @Authenticator
    27982885        public Response appendFilesToBDOC(FormDataMultiPart formParams, @PathParam("containerId")  String containerId) throws MurachiException {
    27992886               
     
    29533040         * @apiSuccess {String} dataFileNumber Número de archivos que se encuentran en el contendor BDOC.
    29543041         *
     3042         * @apiExample Example usage:
     3043         *
     3044         * curl -i https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/archivos/f011ff87-f0d0-4a5e-a0b9-a64eb70661ee -k -H "Authorization: Basic YWRtaW46YWRtaW4="
     3045         *
     3046         *
    29553047         * @apiErrorExample {json} Error-Response:
     3048         *     HTTP/1.1 401 Unauthorized
     3049         *     {
     3050         *       "error": "acceso no autorizado"
     3051         *     }
     3052         *     
     3053         *     HTTP/1.1 404 Not Found
     3054         *     {
     3055         *       "error": "el contenedor con identificador containerId no existe ."
     3056         *     }
     3057         *
    29563058         *     HTTP/1.1 500 Internal Server Error
    29573059         *     {
    29583060         *       "error": "error interno al leer el contenedor."
    29593061         *     }
     3062         *     
    29603063         *     HTTP/1.1 500 Internal Server Error
    29613064         *     {
    29623065         *       "error": "no se pudo leer el contenedor."
    29633066         *     }
    2964          *     HTTP/1.1 404 Not Found
    2965          *     {
    2966          *       "error": "el contenedor con identificador containerId no existe ."
    2967          *     }
    29683067         *
    29693068         */
     
    29713070        @Path("/bdocs/archivos/{containerId}")
    29723071        @Produces(MediaType.APPLICATION_JSON)
     3072        @Authenticator
    29733073        public Response getDataFileNumber(@PathParam("containerId")  String containerId) {
    29743074                logger.info("recurso /bdocs/archivos/"+containerId);
     
    30513151         *
    30523152         * @apiExample Example usage:
    3053      * curl -i https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/archivos/f011ff87-f0d0-4a5e-a0b9-a64eb70661ee/0
     3153     * curl -i https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/archivos/f011ff87-f0d0-4a5e-a0b9-a64eb70661ee/0 -H "Authorization: Basic YWRtaW46YWRtaW4="
    30543154         *       
    30553155         *
    30563156         * @apiErrorExample {json} Error-Response:
     3157         *     HTTP/1.1 401 Unauthorized
     3158         *     {
     3159         *       "error": "acceso no autorizado"
     3160         *     }
     3161     *
    30573162         *     HTTP/1.1 404 Not Found
    30583163         *     {
     
    30723177        @Path("/bdocs/archivos/{containerId}/{dataFileId}")
    30733178        @Produces(MediaType.APPLICATION_OCTET_STREAM)
     3179        @Authenticator
    30743180        public Response downloadDataFileFromBDOC(@PathParam("containerId")  String containerId, @PathParam("dataFileId")  int dataFileId) {
    30753181                logger.info("recurso /bdocs/archivos/"+containerId+"/"+Integer.toString(dataFileId));
     
    31643270         *
    31653271         * @apiExample Example usage:
    3166      * curl -i https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/archivos/papelera/f011ff87-f0d0-4a5e-a0b9-a64eb70661ee/0
     3272     * curl -i https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/archivos/papelera/f011ff87-f0d0-4a5e-a0b9-a64eb70661ee/0 -H "Authorization: Basic YWRtaW46YWRtaW4="
    31673273         *       
    31683274         *
    31693275         * @apiErrorExample {json} Error-Response:
     3276         *     HTTP/1.1 401 Unauthorized
     3277         *     {
     3278         *       "error": "acceso no autorizado"
     3279         *     }
     3280         *     
    31703281         *     HTTP/1.1 404 Not Found
    31713282         *     {
    31723283         *       "fileExist": false
    31733284         *     }
     3285         *     
    31743286         *     HTTP/1.1 500 Internal server Error
    31753287         *     {
     
    31813293        @Path("/bdocs/archivos/papelera/{containerId}/{dataFileId}")
    31823294        @Produces(MediaType.APPLICATION_JSON)
     3295        @Authenticator
    31833296        public Response removeDataFile(@PathParam("containerId")  String containerId, @PathParam("dataFileId") int dataFileId) {
    31843297                logger.info("recurso /bdocs/archivos/papelera/"+containerId+"/"+Integer.toString(dataFileId));
     
    32913404         *
    32923405         * @apiExample Example usage:
    3293      * curl -i https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/archivos/lista/f011ff87-f0d0-4a5e-a0b9-a64eb70661ee
     3406     * curl -i https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/archivos/lista/f011ff87-f0d0-4a5e-a0b9-a64eb70661ee -H "Authorization: Basic YWRtaW46YWRtaW4="
    32943407         *       
    32953408         *
    32963409         * @apiErrorExample {json} Error-Response:
     3410         *     HTTP/1.1 401 Unauthorized
     3411         *     {
     3412         *       "error": "acceso no autorizado"
     3413         *     }
     3414         *     
    32973415         *     HTTP/1.1 404 Not Found
    32983416         *     {
    32993417         *       "error": "El contenedor con identificador containerId no existe."
    33003418         *     }
     3419         *     
    33013420         *     HTTP/1.1 500 Internal server Error
    33023421         *     {
    33033422         *       "error": "no se pudo leer el contenido del contenedor."
    33043423         *     }
     3424     *     
    33053425     *     HTTP/1.1 500 Internal server Error
    33063426         *     {
     
    33123432        @Path("/bdocs/archivos/lista/{containerId}")
    33133433        @Produces(MediaType.APPLICATION_JSON)
     3434        @Authenticator
    33143435        public Response getDataFileList(@PathParam("containerId")  String containerId) {
    33153436       
     
    34123533         * @apiDescription Retorna el número de firmas del contendor BDOC.
    34133534         *
     3535         * @apiExample Example usage:
     3536     * curl -i https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/firmas/f011ff87-f0d0-4a5e-a0b9-a64eb70661ee -H "Authorization: Basic YWRtaW46YWRtaW4="
     3537         *
    34143538         * @apiSuccess {String} signatureNumber Número de firmas del contendor BDOC.
    34153539         *
    34163540         * @apiErrorExample {json} Error-Response:
     3541         *     HTTP/1.1 401 Unauthorized
     3542         *     {
     3543         *       "error": "acceso no autorizado"
     3544         *     }
     3545         *     
     3546         *     HTTP/1.1 404 Not Found
     3547         *     {
     3548         *       "error": "el contenedor con identificador containerId no existe ."
     3549         *     }
     3550         *     
    34173551         *     HTTP/1.1 500 Internal Server Error
    34183552         *     {
    34193553         *       "error": "error interno al leer el contenedor."
    34203554         *     }
    3421          *     HTTP/1.1 404 Not Found
    3422          *     {
    3423          *       "error": "el contenedor con identificador containerId no existe ."
    3424          *     }
     3555         
    34253556         */
    34263557        @GET
    34273558        @Path("/bdocs/firmas/{containerId}")
    34283559        @Produces(MediaType.APPLICATION_JSON)
     3560        @Authenticator
    34293561        public Response getSignatureNumber(@PathParam("containerId")  String containerId) {
    34303562                logger.info("/bdocs/firmas/"+containerId);
     
    34883620         * @return identificador del contenedor.
    34893621         *
    3490          * * @api {get} /Murachi/0.1/archivos/bdocs/firmas/papelera{containerId}/{signatureId} Elimina una firma de un contenedor.
     3622         * * @api {get} /Murachi/0.1/archivos/bdocs/firmas/papelera/{containerId}/{signatureId} Elimina una firma de un contenedor.
    34913623         * @apiName BDocEliminaFirmas
    34923624         * @apiGroup BDOCS
     
    34973629         *
    34983630         * @apiDescription Elimina una firma del contendor BDOC.
    3499          *
     3631     *
     3632         * @apiExample Example usage:
     3633     * curl -i https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/firmas/papelera/f011ff87-f0d0-4a5e-a0b9-a64eb70661ee -H "Authorization: Basic YWRtaW46YWRtaW4="
     3634     *
    35003635         * @apiSuccess {String} mensaje firma eliminada correctamente
    35013636         *
    35023637         * @apiErrorExample {json} Error-Response:
     3638         *     HTTP/1.1 401 Unauthorized
     3639         *     {
     3640         *       "error": "acceso no autorizado"
     3641         *     }
     3642         *     
     3643         *     HTTP/1.1 404 Not Found
     3644         *     {
     3645         *       "error": "el contenedor con identificador containerId no existe ."
     3646         *     }
     3647         *     
    35033648         *     HTTP/1.1 500 Internal Server Error
    35043649         *     {
    35053650         *       "error": "no se pudo leer el contenido del contenedor."
    35063651         *     }
    3507          *     HTTP/1.1 404 Not Found
    3508          *     {
    3509          *       "error": "el contenedor con identificador containerId no existe ."
    3510          *     }
    35113652         *
    35123653         */
     
    35143655        @Path("/bdocs/firmas/papelera/{containerId}/{signatureId}")
    35153656        @Produces(MediaType.APPLICATION_JSON)
     3657        @Authenticator
    35163658        public Response removeSignature(@PathParam("containerId")  String containerId, @PathParam("signatureId") int signatureId) {
    35173659                logger.info("recurso /bdocs/firmas/papelera/"+containerId+"/"+Integer.toString(signatureId));
     
    36323774         * @apiSuccess {String} signatures.signerCertificateIssuer Emisor del certificado firmante.
    36333775         * @apiSuccess {String} signatures.signatureCountry País donde se realiza la firma.
     3776         *
     3777     * @apiExample Example usage:
     3778     * curl -i https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/firmas/lista/f011ff87-f0d0-4a5e-a0b9-a64eb70661ee -H "Authorization: Basic YWRtaW46YWRtaW4="
    36343779         *
    36353780         * @apiSuccess {Boolean}   containerValidation: Especifica si el contenedor posee una estructura válida. 
    3636 
    36373781         *
    36383782         * @apiErrorExample {json} Error-Response:
     3783         *     HTTP/1.1 401 Unauthorized
     3784         *     {
     3785         *       "error": "acceso no autorizado"
     3786         *     }
     3787         *     
     3788         *     HTTP/1.1 404 Not Found
     3789         *     {
     3790         *       "error": "el contenedor con identificador containerId no existe ."
     3791         *     }
     3792         *     
    36393793         *     HTTP/1.1 500 Internal Server Error
    36403794         *     {
    36413795         *       "error": "error interno al leer el contenedor."
    36423796         *     }
     3797         *     
    36433798         *     HTTP/1.1 500 Internal Server Error
    36443799         *     {
    36453800         *       "error": "El contenedor tiene un número menor que cero de firmas"
    36463801         *     }
    3647 
    3648          *     HTTP/1.1 404 Not Found
    3649          *     {
    3650          *       "error": "el contenedor con identificador containerId no existe ."
    3651          *     }
     3802         *     
    36523803         */
    36533804        @GET
    36543805        @Path("/bdocs/firmas/lista/{containerId}")
    36553806        @Produces(MediaType.APPLICATION_JSON)
     3807        @Authenticator
    36563808        public Response getSignaturesList(@PathParam("containerId")  String containerId) {
    36573809                logger.info("/bdocs/firmas/lista/"+containerId);
     
    37763928     *           data: parameters,
    37773929     *           contentType: "application/json",
     3930     *           headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
    37783931     *           success: function(data, textStatus, jqXHR){
    37793932         *                              var json_x = data;
     
    37923945         *
    37933946         * @apiErrorExample {json} Error-Response:
     3947         *     HTTP/1.1 401 Unauthorized
     3948         *     {
     3949         *       "error": "acceso no autorizado"
     3950         *     }
     3951         *     
     3952         *     HTTP/1.1 404 Not Found
     3953         *     {
     3954         *       "error": "el contenedor con identificador containerId no existe ."
     3955         *     }
     3956         *     
    37943957         *     HTTP/1.1 500 Internal Server Error
    37953958         *     {
    37963959         *       "hash": "",
    37973960         *       "error": "Error en el certificado del firmante"
    3798          *     }
    3799          *     HTTP/1.1 404 Not Found
    3800          *     {
    3801          *       "error": "el contenedor con identificador containerId no existe ."
    3802          *     }
    3803          *
     3961         *     }
    38043962         *
    38053963         */
     
    38083966        @Consumes(MediaType.APPLICATION_JSON)
    38093967        @Produces(MediaType.APPLICATION_JSON)
     3968        @Authenticator
    38103969        public Response presignBDOCContainer(PresignParametersBdoc presignPar) throws MurachiException {
    38113970               
     
    40404199     *                  }),
    40414200     *           contentType: "application/json",
     4201     *           headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
    40424202     *           success: function(data, textStatus, jqXHR){
    40434203     *                              alert('Archivo firmado correctamente: ' + data['signedFileId']);
     
    40514211         *
    40524212         * @apiErrorExample {json} Error-Response:
     4213         *     HTTP/1.1 401 Unauthorized
     4214         *     {
     4215         *       "error": "acceso no autorizado"
     4216         *     }
     4217         *     
     4218         *     HTTP/1.1 404 Not Found
     4219         *     {
     4220         *       "error": "el contenedor con identificador containerId no existe ."
     4221         *     }
     4222         *         
    40534223         *     HTTP/1.1 500 Internal Server Error
    40544224         *     {
    40554225         *       "error": "Error en proceso de deserialización y completación de firma"
    40564226         *     }
    4057          *     HTTP/1.1 404 Not Found
    4058          *     {
    4059          *       "error": "el contenedor con identificador containerId no existe ."
    4060          *     }
     4227
    40614228         *
    40624229         */
     
    40654232        @Consumes(MediaType.APPLICATION_JSON)
    40664233        @Produces(MediaType.APPLICATION_JSON)   
     4234        @Authenticator
    40674235        public Response postsignBDOCContainer(PostsignParameters postsignPar) throws IOException, MurachiException {
    40684236               
Note: See TracChangeset for help on using the changeset viewer.