A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | ||||||||||||||||||||||||||
2 | FORMATO DE ESPECIFICACION DE SERVICIO REST | Obs | ||||||||||||||||||||||||
3 | ||||||||||||||||||||||||||
4 | Descripción del Recurso | Permite realizar el envío del comprobante | ||||||||||||||||||||||||
5 | ||||||||||||||||||||||||||
6 | Método HTTP | POST | ||||||||||||||||||||||||
7 | URI pública | https://api-cpe.sunat.gob.pe/v1/contribuyente/gem/comprobantes/{numRucEmisor}-{codCpe}-{numSerie}-{numCpe} | ||||||||||||||||||||||||
8 | ||||||||||||||||||||||||||
9 | ||||||||||||||||||||||||||
10 | REQUEST | |||||||||||||||||||||||||
11 | ||||||||||||||||||||||||||
12 | Request URI | |||||||||||||||||||||||||
13 | Parámetros de Entrada | Descripción | Formato | Tipo dato | Condición | |||||||||||||||||||||
14 | numRucEmisor | RUC del contribuyente Emisor | alfanumerico (11) | string | M | |||||||||||||||||||||
15 | codCpe | Solo se permite 09: Guía de Remisión Remitente - Electrónica 31: Guía de Remisión Transportista - Electrónica | alfanumerico (2) | string | M | |||||||||||||||||||||
16 | numSerie | Numero de serie de comprobante: Solo se permite: Si codCpe 09: T### Si codCpe 31: V### | alfanumerico (4) | string | M | |||||||||||||||||||||
17 | numCpe | Número de comprobante De 1 hasta 8 valores numéricos | numérico (1..8) | number | M | |||||||||||||||||||||
18 | ||||||||||||||||||||||||||
19 | Request Header | |||||||||||||||||||||||||
20 | Parámetros | Valor | ||||||||||||||||||||||||
21 | Authorization | Bearer + token(*) | ||||||||||||||||||||||||
22 | (*) El token debe ser obtenido a través de la invocación del servicio api-seguridad descrito en el "Manual de servicios web Plataforma Nueva GRE" | |||||||||||||||||||||||||
23 | ||||||||||||||||||||||||||
24 | Request Body | |||||||||||||||||||||||||
25 | Parámetros de Entrada | Descripcion | Formato | Tipo dato | Condición | |||||||||||||||||||||
26 | archivo | object | M | |||||||||||||||||||||||
27 | archivo.nomArchivo | Nombre del archivo zip enviado. Estructura: RRRRRRRRRRR-TT-SSSS-NNNNNNNN.zip Donde: RRRRRRRRRR: Número de RUC, de 11 valores numéricos TT: Tipo de comprobante, solo se permite 09 y 31 SSSS: Serie del comprobante, solo se permite T### y V### NNNNNNNN: Número de comprobante, se permite de 1 hasta 8 valores numéricos | string | M | ||||||||||||||||||||||
28 | archivo.arcGreZip | Base 64 del archivo zip enviado | string | M | ||||||||||||||||||||||
29 | archivo.hashZip | Hash del archivo zip enviado Debe calcularse el hash del archivo zip haciendo uso del algoritmo SHA-256. | string | M | ||||||||||||||||||||||
30 | ||||||||||||||||||||||||||
31 | Ejemplo Request | |||||||||||||||||||||||||
32 | JSON en el body | |||||||||||||||||||||||||
33 | { "archivo" : { "nomArchivo" : "20480072872-31-VA28-407.zip", "arcGreZip" : "UEsDBBQAAAAIAHd8i1QWA3AR2QwAAPVNAAAbAAAAMjA0ODAwNzI4NzItMzEtVkEyOC00MDcueG1s7RztcqM28Hc703dQ3T/tD59t", "hashZip" : "bAAAAMjA0ODAwNzI4NzItMzEtVkEyOC00MDcueG1s7RztcqM28Hc703dQ3T/tD59t" } } | |||||||||||||||||||||||||
34 | ||||||||||||||||||||||||||
35 | ||||||||||||||||||||||||||
36 | ||||||||||||||||||||||||||
37 | ||||||||||||||||||||||||||
38 | RESPONSE | |||||||||||||||||||||||||
39 | ||||||||||||||||||||||||||
40 | Response Header | |||||||||||||||||||||||||
41 | Parámetros | valor | ||||||||||||||||||||||||
42 | HTTP status | 200 | ||||||||||||||||||||||||
43 | Content-Type | application/json | ||||||||||||||||||||||||
44 | ||||||||||||||||||||||||||
45 | ||||||||||||||||||||||||||
46 | Response Body | |||||||||||||||||||||||||
47 | Parámetros de Salida | Descripcion | Formato | Tipo dato | ||||||||||||||||||||||
48 | numTicket | Número de ticket (UUID) generado por el envío realizado. UUID se expresa mediante 32 dígitos hexadecimales divididos en cinco grupos separados por guiones de la forma 8-4-4-4-12. Ejemplo: 550e8400-e29b-41d4-a716-446655440026 | alfanumerico | string | ||||||||||||||||||||||
49 | fecRecepcion | Fecha de recepción de envío del comprobante. Formato: 'yyyy-mm-dd,'T','hh:ii:ss' | Date | string | ||||||||||||||||||||||
50 | ||||||||||||||||||||||||||
51 | Ejemplo JSON Response Body | |||||||||||||||||||||||||
52 | { "numTicket": "7f7b00ab-4fee-4ae2-9e04-fbd16ca18677", "fecRecepcion": "2022-04-11T15:37:41" } | |||||||||||||||||||||||||
53 | ||||||||||||||||||||||||||
54 | Formato de mensaje de ERROR 500 | |||||||||||||||||||||||||
55 | ||||||||||||||||||||||||||
56 | Response Header | |||||||||||||||||||||||||
57 | Parámetros | valor | ||||||||||||||||||||||||
58 | HTTP status | Revisar la tabla de codigos de Error | ||||||||||||||||||||||||
59 | Content-Type | application/json | ||||||||||||||||||||||||
60 | ||||||||||||||||||||||||||
61 | Response Body | |||||||||||||||||||||||||
62 | Parámetros de Salida | Descripción | Formato | Tipo dato | ||||||||||||||||||||||
63 | cod | codigo de error(Revisar la tabla de codigos de Error) | String | |||||||||||||||||||||||
64 | msg | mensaje de error para el usuario | String | |||||||||||||||||||||||
65 | exc | traza del error | String | |||||||||||||||||||||||
66 | ||||||||||||||||||||||||||
67 | Ejemplo de Response | |||||||||||||||||||||||||
68 | { "cod":"500", "msg":"Internal Server Error - Se presento una condicion inesperada que impidio completar el Request", "exc":"java.lang.NullPointerException at ..." } | |||||||||||||||||||||||||
69 | ||||||||||||||||||||||||||
70 | ||||||||||||||||||||||||||
71 | Formato de mensaje de ERROR 422 | |||||||||||||||||||||||||
72 | ||||||||||||||||||||||||||
73 | Response Header | |||||||||||||||||||||||||
74 | Parámetros | Valor | ||||||||||||||||||||||||
75 | HTTP status | Revisar la tabla de codigos de Error | ||||||||||||||||||||||||
76 | Content-Type | application/json | ||||||||||||||||||||||||
77 | ||||||||||||||||||||||||||
78 | Response Body | |||||||||||||||||||||||||
79 | Parámetros de Salida | Descripción | Formato | Tipo dato | ||||||||||||||||||||||
80 | cod | Código de error(Revisar la tabla de codigos de Error) | number | |||||||||||||||||||||||
81 | msg | Mensaje de error para el usuario | String | |||||||||||||||||||||||
82 | errors | Array de errores y descripcion del error | String | |||||||||||||||||||||||
83 | errors.cod | Código de error encontrado | number | |||||||||||||||||||||||
84 | errors.msg | Descripción de error encontrado | string | |||||||||||||||||||||||
85 | ||||||||||||||||||||||||||
86 | Ejemplo de Response | |||||||||||||||||||||||||
87 | { "cod": 422, "msg": "Unprocessable Entity - Se presentaron errores de validación que impidieron completar el Request", "errors": [ { "cod": 501, "msg": "El valor de codCpe no permitido o no válido" } ] } | |||||||||||||||||||||||||
88 | ||||||||||||||||||||||||||
89 | ||||||||||||||||||||||||||
90 | ||||||||||||||||||||||||||
91 | ||||||||||||||||||||||||||
92 | Cuadro de mensajes de Error | |||||||||||||||||||||||||
93 | Campo | Validación | Ámbito | Código y descripción del mensaje de error | Condición | |||||||||||||||||||||
94 | codCpe | Solo se permite 09: Guía de Remisión Remitente - Electrónica 31: Guía de Remisión Transportista - Electrónica | Validaciones de forma | 501 : El valor de codCpe no permitido o no válido | M | |||||||||||||||||||||
95 | numSerie | Numero de serie de comprobante: Solo se permite: Si codCpe 09: T### Si codCpe 31: V### | Validaciones de forma | 502 : El valor de numSerie no permitido o no válido | M | |||||||||||||||||||||
96 | archivo.nomArchivo | El valor no enviado o es vacio | Validaciones de obligatoriedad | 503 : El campo nomArchivo no enviado o es vacío | M | |||||||||||||||||||||
97 | archivo.nomArchivo | Debe tener el siguiente formato: {numRucEmisor}-{codCpe}-{numSerie}-{numCpe}.zip La extension ".zip" en minusculas, y Debe coincidir con los datos del comprobante que viene en la URL del servicio. | Validaciones de forma | 504 : El campo nomArchivo no cumple con el formato establecido o nombre incorrecto | M | |||||||||||||||||||||
98 | archivo.arcGreZip | El valor no enviado o es vacio | Validaciones de obligatoriedad | 505 : El campo arcGreZip no enviado o es vacío | M | |||||||||||||||||||||
99 | archivo.hashZip | El valor no enviado o es vacio | Validaciones de obligatoriedad | 506 : El campo hashZip no enviado o es vacío | M | |||||||||||||||||||||
100 | archivo.hashZip | El valor Hash no coincide con el archivo zip enviado | Validaciones de forma | 507 : El valor Hash no coincide con el archivo zip enviado | M |