Guía Técnica de Integración
Esta documentación proporciona la información necesaria para consumir la API de Proveedores GEC de forma correcta, eficiente y segura.
| Dato | Valor |
| Base URL | https://proveedores-gobcolima.gob-digital.mx |
| Formato | JSON y multipart/form-data |
| Autenticación | Header x-emp-api-key |
Endpoints
| Método | Ruta | Objetivo |
| GET | /api/proveedores | Consulta proveedores con filtros |
| POST | /api/proveedores | Alta de proveedor con documentos |
| PATCH | /api/proveedores/:IdProv/documentos | Actualización de documentos de un proveedor registrado |
| GET | /api/actividades-sat | Catálogo de actividades SAT |
| GET | /api/documentos | Catálogo de documentos por tipo de persona |
| GET | /healthcheck | Estado operativo del servicio |
Autenticación
Todas las rutas funcionales bajo /api requieren la cabecera x-emp-api-key.
x-emp-api-key: API_KEY_PROPORCIONADA
Formato de error estándar
Códigos comunes: 400, 401 y 500.
| Campo | Tipo | Descripción |
| success | boolean | Siempre false en errores |
| code | string | Código interno de error |
| message | string | Mensaje principal del error |
| details | array | null | Detalle de validaciones por campo |
{
"success": false,
"code": "REQUEST_VALIDATION_FAILED",
"message": "Request validation failed",
"details": [
{
"path": "/query/IdProv",
"message": "must be integer",
"location": "query"
}
]
}
GET /api/proveedores
Consulta proveedores por filtros opcionales de búsqueda.
Tipo de contenido
application/json
Campos y validaciones
| Parámetro | Tipo | Requerido | Validación |
| IdProv | integer | No | Debe ser un número entre 0 y 99,999,999 |
| NombreComercial | string | No | Máximo 500 caracteres |
| DenominacionRazonSocial | string | No | Máximo 500 caracteres |
| Rfc | string | No | Máximo 13 caracteres |
| ActividadSAT | string o array | No | Puedes enviar un solo código (de 1 a 4 dígitos) o una lista de códigos |
GET /api/proveedores?IdProv=15&Rfc=PAP181818AA12&ActividadSAT=1&ActividadSAT=15
Content-Type: application/json
x-emp-api-key: API_KEY_PROPORCIONADA
Ejemplo de respuesta
| Campo | Tipo |
| IdProv | string |
| Rfc | string |
| NombreComercial | string |
| DenomRazonSocial | string |
| Dat_ASat | Lista de Actividades SAT |
Ejemplo de respuesta
[
{
"IdProv": "15",
"Rfc": "PAP181818AA12",
"NombreComercial": "J PEREZ SOLUCIONES",
"DenomRazonSocial": "JUAN PEREZ GOMEZ",
"Dat_ASat": [
{
"IdClave": 1,
"Actividad": "Agricultura"
},
{
"IdClave": 2,
"Actividad": "Ganadería"
}
]
}
]
POST /api/proveedores
Este endpoint permite registrar un nuevo proveedor.
Es posible Enviar la información de dos formas:
- application/json: cuando solo se desea registrar los datos del proveedor.
- multipart/form-data: cuando de desea adjuntar documentos junto con los datos.
Para adjuntar documentos, primero consulta el catálogo disponible en el endpoint
/api/documentos. Ahí encontrarás los identificadores necesarios para cada documento,
el nombre correspondiente al campo IdDoc del catálogo es el nombre del parametro en este método
Flujo recomendado para el registro de proveedores:
- Utilizar el endpoint /api/proveedores por filtro de RFC para verificar que el proveedor a registrar no exista.
- Consultar el catálogo de documentos requeridos en el endpoint /api/documentos.
- Si se usará multipart/form-data, enviar los documentos requeridos como parámetros de tipo archivo con el nombre correspondiente al campo IdDoc del catálogo.
- Utilizar este método para registrar el nuevo proveedor.
- Validar el codigo http de la respuesta. 201 indica que el proveedor se registró correctamente;
202 indica que el proveedor fue registrado pero sus documentos no fueron adjuntados correctamente, y solo aplica cuando se usó multipart/form-data. En ese caso, se debe hacer uso de
api/proveedores/:IdProv/documentos para intentar adjuntar los documentos nuevamente.
- En caso de recibir un código http diferente a 201 o 202, revisar el mensaje de error para identificar la causa y resolverla antes de intentar registrar el proveedor nuevamente.
Tipo de contenido
application/json y multipart/form-data
Campos y validaciones
| Campo | Tipo | Validación | Condición |
| Persona | string | Debe ser "F" (Física) o "M" (Moral) | Siempre requerido |
| Genero | string | Debe ser "M" (Masculino), "F" (Femenino) u "O" (Otro) | Obligatorio cuando la persona es Física |
| DenominacionRazonSocial | string | Máximo 500 caracteres | Siempre requerido |
| Rfc | string | Debe tener entre 12 y 13 caracteres | Siempre requerido |
| NombreComercial | string | Máximo 500 caracteres | Siempre requerido |
| CURP | string | Debe tener exactamente 18 caracteres, solo letras mayúsculas y números | Obligatorio cuando la persona es Física |
| Calle | string | Máximo 50 caracteres | Siempre requerido |
| NoExterior | string | Máximo 5 caracteres | Siempre requerido |
| NoInterior | string | null | Máximo 5 caracteres (puede dejarse vacío) | Opcional |
| Colonia | string | Máximo 30 caracteres | Siempre requerido |
| Localidad | string | Máximo 30 caracteres | Siempre requerido |
| Municipio | string | Máximo 50 caracteres | Siempre requerido |
| Estado | string | Máximo 50 caracteres | Siempre requerido |
| Pais | string | Máximo 50 caracteres | Siempre requerido |
| CodigoPostal | string | Debe contener exactamente 5 números | Siempre requerido |
| ActividadesSAT | string o array | Puedes enviar un solo código (de 1 a 4 dígitos) o una lista de códigos, al menos uno | Siempre requerido |
| ServiciosProductos | string | Máximo 8000 caracteres | Siempre requerido |
| Telefono | string | Hasta 13 dígitos, solo números | Siempre requerido |
| PersonaContacto | string | Máximo 50 caracteres | Siempre requerido |
| CelularContacto | string | Hasta 13 dígitos, solo números | Siempre requerido |
| RepresentanteLegal | string | Máximo 500 caracteres | Obligatorio cuando la persona es Moral |
| CorreoElectronico | string | Debe ser un correo electrónico válido (máximo 100 caracteres) | Siempre requerido |
Documentos
- Consultar el catálogo de documentos requeridos en el endpoint /api/documentos
- Adjuntar documentos según el tipo de persona. Cada IdDoc del catálogo corresponde al nombre del campo para el archivo en el formulario. Por ejemplo, si el IdDoc es "1", el campo para el archivo debe llamarse "1".
Ejemplo de request (solo datos)
POST /api/proveedores
Content-Type: application/json
x-emp-api-key: API_KEY_PROPORCIONADA
{
"Persona": "F",
"Genero": "O",
"DenominacionRazonSocial": "JUAN PEREZ GOMEZ",
"Rfc": "PAP181818AA12",
"NombreComercial": "J PEREZ SOLUCIONES",
"CURP": "QCMPAVTAGI6LA06CLM",
"Calle": "Calle Principal",
"NoExterior": "123",
"NoInterior": "A",
"Colonia": "Centro",
"Localidad": "Colima",
"Municipio": "Colima",
"Estado": "Colima",
"Pais": "Mexico",
"CodigoPostal": "28000",
"ActividadesSAT": ["1", "15"],
"ServiciosProductos": "Asesoria en tecnologia",
"Telefono": "3331234567",
"PersonaContacto": "Maria Lopez",
"CelularContacto": "3121234567",
"CorreoElectronico": "contacto@empresa.com"
}
Ejemplo de request (con documentos)
POST /api/proveedores
Content-Type: multipart/form-data
x-emp-api-key: API_KEY_PROPORCIONADA
Body (form-data):
- Persona
- Genero (si Persona = F)
- DenominacionRazonSocial
- Rfc
- NombreComercial
- CURP (si Persona = F)
- Calle
- NoExterior
- NoInterior
- Colonia
- Localidad
- Municipio
- Estado
- Pais
- CodigoPostal
- ActividadesSAT
- ServiciosProductos
- Telefono
- PersonaContacto
- CelularContacto
- RepresentanteLegal (si Persona = M)
- CorreoElectronico
- 1 (archivo) ejemplo, el nombre final lo determina el IdDoc del catálogo de documentos
- 2 (archivo) ejemplo, el nombre final lo determina el IdDoc del catálogo de documentos
- 3 (archivo) ejemplo, el nombre final lo determina el IdDoc del catálogo de documentos
- 4 (archivo) ejemplo, el nombre final lo determina el IdDoc del catálogo de documentos
- 5 (archivo) ejemplo, el nombre final lo determina el IdDoc del catálogo de documentos
Ejemplo de respuesta
| Campo | Tipo |
| IdProv | string |
| DenomRazonSocial | string |
| Rfc | string |
| Code | string | number |
| Mensaje | string |
{
"IdProv": "10",
"DenomRazonSocial": "",
"Rfc": "PAP181818AA",
"Code": "1",
"Mensaje": "Proveedor creado exitosamente"
}
PATCH /api/proveedores/:IdProv/documentos
Actualiza los documentos de un proveedor registrado usando el RFC en el cuerpo y archivos adjuntos identificados por el IdDoc correspondiente.
Tipo de contenido
multipart/form-data
Campos y validaciones
| Campo | Tipo | Validación | Condición |
| IdProv | string | Identificador del proveedor en la ruta | Siempre requerido |
| Rfc | string | Debe tener entre 12 y 13 caracteres | Siempre requerido |
| Archivos | file | El nombre del campo debe coincidir con el IdDoc del catálogo | Al menos un documento |
Ejemplo de request
PATCH /api/proveedores/123/documentos
Content-Type: multipart/form-data
x-emp-api-key: API_KEY_PROPORCIONADA
Body (form-data):
- Rfc
- 1 (archivo PDF)
- 2 (archivo PDF)
- 3 (archivo PDF)
Ejemplo de respuesta
| Campo | Tipo |
| IdProv | string |
| DenomRazonSocial | string |
| Rfc | string |
| Code | string | number |
| Mensaje | string |
{
"IdProv": "123",
"DenomRazonSocial": "PROVEEDOR DEMO SA DE CV",
"Rfc": "PDM181818AA12",
"Code": "1",
"Mensaje": "Documentos de proveedor actualizados exitosamente"
}
GET /api/actividades-sat
Retorna catálogo de actividades SAT.
Tipo de contenido
application/json
Campos y validaciones
| Parámetro | Tipo | Requerido | Validación |
| Sin parámetros de query | N/A | N/A | N/A |
Ejemplo de request
GET /api/actividades-sat
Content-Type: application/json
x-emp-api-key: API_KEY_PROPORCIONADA
Ejemplo de respuesta
| Campo | Tipo |
| IdClave | integer int32 |
| Actividad | string |
[
{
"IdClave": 1,
"Actividad": "Agricultura"
},
{
"IdClave": 2,
"Actividad": "Ganadería"
}
]
GET /api/documentos
Retorna catálogo de documentos. Si no se envía tipoPersona, devuelve todos.
Tipo de contenido
application/json
Campos y validaciones
| Parámetro | Tipo | Requerido | Validación |
| tipoPersona | string | No | enum F, M |
Ejemplo de request
GET /api/documentos?tipoPersona=F
Content-Type: application/json
x-emp-api-key: API_KEY_PROPORCIONADA
Ejemplo de respuesta
| Campo | Tipo |
| IdDoc | string |
| Documento | string |
| AplicaPara | string |
| EsRequerido | string |
[
{
"IdDoc": "1",
"Documento": "IDENTIFICACION OFICIAL",
"AplicaPara": "FISICA/MORAL",
"EsRequerido": "SI"
},
{
"IdDoc": "4",
"Documento": "ACTA CONSTITUTIVA",
"AplicaPara": "MORAL",
"EsRequerido": "SI"
}
]
GET /healthcheck
Verificación operativa del servicio.
Tipo de contenido
application/json
Campos y validaciones
| Parámetro | Tipo | Requerido | Validación |
| Sin parámetros de query | N/A | N/A | N/A |
Ejemplo de request
GET /healthcheck
Content-Type: application/json
Ejemplo de respuesta
{
"status": "UP",
"service": "api-proveedores-gec",
"build": "1.2.0"
}