He tenido que lidiar con muchas API a lo largo de mi (no tan larga) carrera como desarrollador, pero nunca me he encontrado una tan mala como la del marketplace de Amazon (Selling Partner API, o SP-API para abreviar). Todo han sido problemas con Amazon, de principio a fin, un porculo constante, una larga serie de despropósitos y muchas ganas de dedicarles una larga ristra de insultos.
Empezamos con la autenticación, que en vez de OAuth normal o una API Key como la gente normal, deciden reinventar la rueda y hacerla lo más horriblemente engorrosa posible, teniendo que tener un usuario de AWS, tokens de acceso/refresco, claves LWA (Login con Amazon), mil y un endpoints, firmas HTTP... Todo teniendo que implementarse a mano.
Porque no es que haya tampoco SDKs que te lo automaticen. Puedes crearte uno a partir de su esquema OpenAPI para el lenguaje que sea, pero lo hacen (en el caso de Java) de la forma más chapucera que podría haber, y en mi caso ni siquiera funcionaba. ¿Podrían subir su "build"? Sí, pero visto lo visto, una empresa como es Amazon no tiene los recursos para eso.
Luego las mil y una peticiones. Ponte que quieres obtener un listado de pedidos para cruzar con otros datos y extraer informes. Pues buena suerte, porque aparte de descargar los pedidos de 100 en 100 (como es habitual), tendrás que hacer otra petición por cada pedido para obtener los artículos de este. O dicho de otra manera, para 1000 pedidos tendrás que hacer 1010 peticiones.
Y tampoco es que puedas paralelizarlas, porque te limitan a una petición cada 2 segundos en el caso de obtener los ítems de un pedido. Dicho de otro modo ¿los mil pedidos de los que hablábamos antes? Mínimo 2000 segundos (34 minutos) para descargarlos.
Luego el formato absurdamente complejo de las respuestas, en vez de darte los datos "sin más", tienen mil objetos intermedios, lo cual implica que deserializar en un lenguaje como Java es un auténtico dolor de cabeza sin herramientas que generen el código por ti.
Y todo esto no sería tan horrible (lo sería, pero un poco menos), si además de todo esto, no tuvieran mil páginas de documentación basura, en muchos casos enlazando a sitios no actualizados, desperdigando la información entre mil páginas distintas y en general, dando asco.
Y ya está, esa es mi rant de hoy. Amazon tiene mucha más mierda de la que hablar, pero eso queda para otro momento.