## Administración del catálogo de proveedores

La autenticación puede hacerse con Id de sesión (ids) o con usuario (correo/teléfono) y contraseña (pwd), a través de parámetros en la URL o bien, 
con el encabezado ```Authorization: Bearer p_ids```

La determinación de la base de datos del emisor, se realiza por medio del parámetro rfc o nic, se requiere uno de los dos, pero no ambos.

Parámetros generales

* ```p_rfc```. RFC del emisor
* ```p_nic```. NIC del emisor
* ```p_ids```. Identificador de sesión del usuario
* ```p_uid```. Identificador del usuario, correo o teléfono móvil
* ```p_pwd```. Contraseña correspondiente al p_uid

## Consultar proveedores

Obtiene un array con la información de proveedores que corresponde a los parámetros suministrados.

### Solicitud

```
Method: GET 
https://factudesk.api.induxsoft.net/{p_rfc|p_nic}/proveedores/?ids=p_ids&uid=p_uid&pwd=p_wd&filtro=p_filtro&limit=p_limit
```
#### Parámetros

* ```p_filtro```. Texto de filtro para los resultados
* ```p_limit```. Cantidad máxima de filas a devolver, si se omite se asumen 500, el máximo admitido es 2000

```
Respuesta
{
    "success":true,
    "data":[
			{
			"sys_pk": Clave primaria interna,
			"sys_guid": "GUID de la fila",
			"sys_dtcreated": "Fecha de creación",
			"sys_timestamp": "Fecha",
			"sys_recver": 0,
			"sys_deleted": true/false,
			"sys_lock": 0,
			"codigo": "Codigo del proveedor",
			"rfc": "RFC del proveedor",
			"nombrefiscal": "Nombre fiscal del proveedor",
			"nombre_comercial": "Nombre comercial del proveedor",
			"curp": "CURP  del proveedor",
			"email": "Correo electrónico",
			"fax": "",
			"telefono": "Teléfono",
			"contacto": "",
			"domicilios": [{
				 "calle": "Calle",
				"numext": "Número exterior",
				"numint": "Número interior",
				"colonia": "Colonia",
				"referencia": "Referencia",
				"localidad": "Localidad",
				"codpos": "Código postal",
				"pkmunicipio": "sys_pk del municipio",
				"municipio": "Código del municipio",
				"pkestado": "sys_pk del estado",
				"estado": "Código del estado",
				"pkpais": "sys_pk del pais",
				"pais": "Código del pais",
				"sys_pk": Clave primaria del domicilio
			},
			...
			]
		},
        ...
    ]
}
```

## Consultar un proveedor

Obtiene la información del proveedor que correspondiente.

### Solicitud

```
Method: GET 
https://factudesk.api.induxsoft.net/{p_rfc|p_nic}/proveedores/{sys_pk}/?ids=p_ids&uid=p_uid&pwd=p_wd
```
```
Respuesta
{
    "success":true,
    "data":{
			"sys_pk": Clave primaria interna,
			"sys_guid": "GUID de la fila",
			"sys_dtcreated": "Fecha de creación",
			"sys_timestamp": "Fecha",
			"sys_recver": 0,
			"sys_deleted": true/false,
			"sys_lock": 0,
			"codigo": "Codigo del proveedor",
			"rfc": "RFC del proveedor",
			"nombrefiscal": "Nombre fiscal del proveedor",
			"nombre_comercial": "Nombre comercial del proveedor",
			"curp": "CURP  del proveedor",
			"email": "Correo electrónico",
			"fax": "",
			"telefono": "Teléfono",
			"contacto": "",
			"domicilios": [{
				 "calle": "Calle",
				"numext": "Número exterior",
				"numint": "Número interior",
				"colonia": "Colonia",
				"referencia": "Referencia",
				"localidad": "Localidad",
				"codpos": "Código postal",
				"pkmunicipio": "sys_pk del municipio",
				"municipio": "Código del municipio",
				"pkestado": "sys_pk del estado",
"estado": "Código del estado",
				"pkpais": "sys_pk del pais",
				"pais": "Código del pais",
"sys_pk": Clave primaria del domicilio
			},
			...
]
}
```
## Agregar un proveedor
Agrega un proveedor a la base de datos del emisor

### Solicitud
```

Method: POST
https://factudesk.api.induxsoft.net/{p_rfc|p_nic}/proveedores/?ids=p_ids&uid=p_uid&pwd=p_wd

Payload
{
     "codigo":"Código del proveedor",
	  "nombrefiscal":"Nombre fiscal del proveedor",
	  "rfc":"RFC del proveedor",
	  "contacto":"",
	  "curp":"CURP",
	  "email":"Correo electrónico",
	  "fax":"",
	  "nombrecomercial":"Nombre comercial",
	  "telefono":"Número telefónico"
}
```
### Respuesta

```
{
    "success":true,
    "data":{
			"sys_pk": Clave primaria interna,
			"sys_guid": "GUID de la fila",
			"sys_dtcreated": "Fecha de creación",
			"sys_timestamp": "Fecha",
			"sys_recver": 0,
			"sys_deleted": true/false,
			"sys_lock": 0,
			"codigo": "Codigo del proveedor",
			"rfc": "RFC del proveedor",
			"nombrefiscal": "Nombre fiscal del proveedor",
			"nombre_comercial": "Nombre comercial del proveedor",
			"curp": "CURP  del proveedor",
			"email": "Correo electrónico",
			"fax": "",
			"telefono": "Teléfono",
			"contacto": "",
			"domicilios": [{
				 "calle": "Calle",
				"numext": "Número exterior",
				"numint": "Número interior",
				"colonia": "Colonia",
				"referencia": "Referencia",
				"localidad": "Localidad",
				"codpos": "Código postal",
				"pkmunicipio": "sys_pk del municipio",
				"municipio": "Código del municipio",
				"pkestado": "sys_pk del estado",
				"estado": "Código del estado",
				"pkpais": "sys_pk del pais",
				"pais": "Código del pais",
				"sys_pk": Clave primaria del domicilio
			},
			...
			]
	}
}
```

## Modificar un proveedor

Actualiza información de un proveedor en la base de datos del emisor, solo los datos que se suministran.

En este servicio no se actualizan los domicilios fiscales.

### Solicitud
```
Method: PATCH
https://factudesk.api.induxsoft.net/{p_rfc|p_nic}/proveedores/{p_sys_pk}/?ids=p_ids&uid=p_uid&pwd=p_wd

{
    "curp": "CURP  del proveedor",
	"email": "Correo electrónico",
	"telefono": "Teléfono"
}
```

* ```p_sys_pk``` Sys_pk del proveedor

## Agregar un domicilio fiscal a un proveedor

Agrega un domicilio fiscal a un proveedor

### Solicitud
```
Method: POST
https://factudesk.api.induxsoft.net/{p_rfc|p_nic}/proveedores/{p_sys_pk}/domicilios/?ids=p_ids&uid=p_uid&pwd=p_wd

{
   "numint":"Número interior",
  "numext":"Número exterior",
  "municipio":"Código o sys_pk del municipio",
  "codpos":"Código postal",
  "calle":"Calle"
}
```

* p_sys_pk. sys_pk del proveedor a Modificar

### Respuesta
```
{
    "success":true,
    "data":{
        ...datos del nuevo domicilio
    }
}
```

## Actualizar un domicilio fiscal a un proveedor

Actualiza información de un domicilio de un proveedor en la base de datos del emisor, solo los datos que se suministran.


### Solicitud
```
Method: PATCH
https://factudesk.api.induxsoft.net/{p_rfc|p_nic}/proveedores/{p_sys_pk}/domicilios/{p_sys_pk}?ids=p_ids&uid=p_uid&pwd=p_wd

{
    ...datos del domicilio...
}
```

* p_sys_pk. sys_pk del proveedor a Modificar
* p_sys_pk. Clave primaria del domicilio

### Respuesta
```
{
    "success":true,
    "data":{
        ...datos del domicilio
    }
}
```


## Eliminar un domicilio fiscal a un proveedor

Elimina un domicilio de un proveedor en la base de datos del emisor


### Solicitud
```
Method: DELETE
https://factudesk.api.induxsoft.net/{p_rfc|p_nic}/proveedores/{p_sys_pk}/domicilios/{p_sys_pk}?ids=p_ids&uid=p_uid&pwd=p_wd

```

* p_sys_pk. Clave primaria del proveedor
* p_sys_pk. Clave primaria del domicilio

### Respuesta
```
{
    "success":true,
    "data":null
}
```
## Eliminar un proveedor

Elimina un proveedor en la base de datos del emisor


### Solicitud
```
Method: DELETE
https://factudesk.api.induxsoft.net/{p_rfc|p_nic}/proveedores/{p_sys_pk}?ids=p_ids&uid=p_uid&pwd=p_wd

```

* p_sys_pk. Clave primaria del proveedor

### Respuesta
```
{
    "success":true,
    "data":null
}
```
