Autenticación básica
Para poder obtener el access-token
necesario para realizar las llamadas a la api de a3factura, deberemos hacer una petición POST al endpoint https://a3api.wolterskluwer.es/a3factura/api/users/login, informando en el body el usuario y contraseña que utilizamos para hacer login en la aplicación a3factura:
- Http
- Curl
- C#
POST /a3factura/api/users/login desc HTTP/1.1
Host: a3api.wolterskluwer.es
Ocp-Apim-Subscription-Key: 2kxwf5rb7ffb65dd5
Api-Version: 2.0
Content-Type: application/json
Content-Length: 68
{"mail":"a3developers@wolterskluwer.com","password":"xxxxxxxxxxxxx"}
curl --location 'https://a3api.wolterskluwer.es/a3factura/api/users/login' \
--header 'Api-Version: 2.0' \
--header 'Ocp-Apim-Subscription-Key: 2kxwf5rb7ffb65dd5' \
--header 'Content-Type: application/json' \
--data-raw '{"mail":"a3developers@wolterskluwer.com","password":"xxxxxxxxxxxxx"}'
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://a3api.wolterskluwer.es/a3factura/api/users/login");
request.Headers.Add("Api-Version", "2.0");
request.Headers.Add("Ocp-Apim-Subscription-Key", "2kxwf5rb7ffb65dd5");
var content = new StringContent("{\"mail\":\"a3developers@wolterskluwer.com\",\"password\":\"xxxxxxxxxxxxx\"}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
Ocp-Apim-Subscription-Key
: es la subscription key de tu cuenta de a3developer.Api-Version
: valor fijo2.0
body.request
: usuario y contraseña con el que quieres realizar el login
Si la autenticación es correcta, la api nos devolverá el siguiente body.response
:
{
"token": "Bearer eyJhbG ...",
"refreshToken": "230d969638b7754e0fb983",
"mail": "a3developers@wolterskluwer.com",
"locale": "es",
"name": "a3developers@wolterskluwer.com",
"id": 1234,
"version": "2.0.0.0",
"isAdvisor": false,
"companies": [
{
"id": 1,
"name": "EMPRESA PRUEBAS S.A.",
"idCDA": "1234A",
"default": false,
"companyStatus": 1
},
{
"id": 2,
"name": "PRODUCTOS Y CONEXIONES ELÉCTRICAS, S.L.",
"idCDA": "4321A",
"default": false,
"companyStatus": 1
}
]
}
token
: es el token que necesitas enviar en cada petición a la API en el headerAuthorization
. Tiene un tiempo de expiración de 1 hora. Recuerda que siempre debe ir precedido del literalBearer
refreshToken
cuando expire eltoken
necesitarás refrescarlo para obtener uno nuevo.companies
: relación de empresas a las que tiene acceso tu usuario.
Si tienes acceso a más de una empresa, el siguiente paso que debes realizar es seleccionar con cuál quieres trabajar. Deberás lanzar una petición POST al endpoint /a3factura/api/companies/{companyId}/select
En el body de la petición deberás incluir el valor del refresh-token
delimitado por comillas dobles
POST /a3factura/api/companies/2/select HTTP/1.1
Host: a3api.wolterskluwer.es
Authorization: Bearer eyJhbG ...
Ocp-Apim-Subscription-Key: 2kxwf5rb7ffb65dd5
Content-Type: application/json
Content-Length: 30
"714ca1ec927da2922cd79559567b"
Respuesta:
{
"companyStatus": 1,
"token": "Bearer eyJhbGc...Ex2Q",
"refreshToken": "652833af0c7cc661117f77b8",
"productType": 3
}
Este nuevo token
y refreshToken
son los que debes utilizar para realizar las peticiones a la API para la empresa seleccionada.
Ahora ya podrás realizar cualquier petición a la API de a3factura. Por ejemplo, para obtener los clientes de la empresa seleccionada:
- Http
- Curl
- C#
GET /a3factura/api/customers?filter=creationDate gt datetime'2023-03-31' HTTP/1.1
Host: a3api.wolterskluwer.es
Ocp-Apim-Subscription-Key: 2kxwf5rb7ffb65dd5
Authorization: Bearer eyJhbGc...Ex2Q
Api-Version: 2.0
Content-Type: application/json
curl --location 'https://a3api.wolterskluwer.es/a3factura/api/customers?filter=creationDate gt datetime'2023-03-31' \
--header 'Api-Version: 2.0' \
--header 'Ocp-Apim-Subscription-Key: 2kxwf5rb7ffb65dd5' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGc...Ex2Q
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://a3api.wolterskluwer.es/a3factura/api/customers?filter=creationDate gt datetime'2023-03-31");
request.Headers.Add("Api-Version", "2.0");
request.Headers.Add("Ocp-Apim-Subscription-Key", "2kxwf5rb7ffb65dd5");
request.Headers.Add("Authorization", "Bearer eyJhbGc...Ex2Q");
var content = new StringContent("", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
[
{
"id": "21fd9c07-d083-473a-abe3-9ff4539f2397",
"creationDate": "2023-03-31T10:44:26.84+00:00",
"vatNumber": "B05650874",
"vatNumberType": 1,
"code": " 151",
"name": "RAZON SOCIAL CLIENTE",
"businessName": "CLIENTE1",
"web": "www.cliente1.es",
"street": "CL. Muntaner, 12",
"zipCode": "28001",
"town": "MADRID",
"phone": "93.345.67.89",
"mail": "comercial@abcsports.es",
"businessPhone": "935709387",
"businessMail": "epiglez@gmail.com",
"accountCode": "43000151",
"enabled": true
},
{
"id": "898286f0-e6f8-4264-8fa3-94bba7524dfe",
"creationDate": "2023-03-31T10:46:05.7+00:00",
"vatNumber": "B05650874",
"vatNumberType": 1,
"code": " 1510",
"name": "RAZON SOCIAL CLIENTE",
"businessName": "CLIENTE2",
"web": "www.cliente2.es",
"street": "CL. Muntaner, 12",
"zipCode": "28001",
"town": "MADRID",
"phone": "93.345.67.89",
"mail": "comercial@abcsports.es",
"businessPhone": "935709387",
"businessMail": "epiglez@gmail.com",
"accountCode": "43001510",
"enabled": true
}
]
Refresco del token
Cuando haya caducado la vigencia del token, deberás refrescarlo para obtener uno nuevo:
POST /a3factura/api/token/refresh HTTP/1.1
Host: a3api.wolterskluwer.es
Ocp-Apim-Subscription-Key: 2kxwf5rb7ffb65dd5
Authorization: Bearer eyJhbG ...
Content-Type: application/json
Content-Length: 1259
{
"access_token": "Bearer eyJhbG ...",
"refresh_token": "714ca1ec927da2922cd79559567b"
}