Conexión a la Selling Partner API

Cómo conectarse a la SP-API.

Antes de que su aplicación pueda conectarse a la API del selling partner, debe registrarla y debe ser autorizada por un selling partner. Consulte Registro de su aplicación y Autorización de aplicaciones Selling Partner API .

Estas instrucciones le muestran los pasos para realizar una llamada a la API del Selling Partner. Para obtener ayuda con la construcción de un URI de API de selling partner y agregarle headers, consulte Generación de una biblioteca de cliente Java . Para obtener una solución más completa que incluya código para intercambiar tokens LWA y autenticación, consulte Generación de un SDK de Java con intercambio y autenticación de tokens LWA .

Paso 1. Solicitar un inicio de sesión con token de acceso de Amazon

Un token de acceso Login with Amazon (LWA) autoriza a su aplicación a realizar ciertas acciones en nombre de un selling partner. Un token de acceso LWA caduca una hora después de su emisión.

Nota sobre operaciones restringidas. Se debe incluir un token de acceso LWA en las llamadas a todas las operaciones, excepto las operaciones restringidas, que devuelven información de identificación personal (PII). Al llamar a operaciones restringidas, en lugar de incluir un token de acceso LWA, incluye un token de acceso restringido (RDT). Para obtener información sobre cómo obtener RDT y llamar a operaciones restringidas, consulte la Guía de casos de uso de la API de tokens .

Para solicitar un token de acceso a LWA, realice una POST HTTP segura al servidor de autenticación de LWA (https://api.amazon.com/auth/o2/token ) con los siguientes parámetros:

NombreDescripciónRequerido
grant_typeEl tipo de concesión de acceso solicitada. Valores:

  • refresh_token . Use esto para llamar a operaciones que requieren autorización de un selling partner. Todas las operaciones que no sean de operaciones sin garantía requieren la autorización de un selling partner. Al especificar este valor, incluya el parámetro refreshtoken .

  • clientcredentials . Use esto para llamar operaciones sin garantía . Al especificar este valor, incluya el parámetro de scope .

refresh_tokenEl LWA refresh token. Obtenga este valor cuando el selling partner autorice su aplicación. Para obtener más información, consulte Autorización de aplicaciones API de Selling Partner .No. Incluya refresh_token para operaciones de llamada que requieran autorización de un selling partner. Si incluye refresh_token, no incluya ámbito.
scopeEl scope de la concesión de la autorización LWA. Valores:

  • sellingpartnerapi::notifications. Para la API de notificaciones

  • sellingpartnerapi::migration. Para la API de autorización.

No. Incluir alcance para llamar a una operaciones sin garantía. Si incluye ámbito, no incluya refresh_token.
client_idObtenga este valor cuando registre su aplicación. Consulte Visualización de su información de desarrollador.
client_secretObtenga este valor cuando registre su aplicación. Consulte Visualización de su información de desarrollador.

Ejemplo para llamar a una operación que requiere autorización de selling partner:

POST /auth/o2/token HTTP/l.l
Host: api.amazon.com
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
grant_type=refresh_token
&refresh_token=Aztr|...
&client_id=foodev
&client_secret=Y76SDl2F

Ejemplo para llamar a una grantless:

POST /auth/o2/token HTTP/l.l  
Host: api.amazon.com  
Content-Type: application/x-www-form-urlencoded;charset=UTF-8  
grant_type=client_credentials  
&scope=sellingpartnerapi::notifications  
&client_id=foodev  
&client_secret=Y76SDl2F

Sugerencia: Para evitar recibir un error de autoridad de certificación (CA) que no sea de confianza al llamar al servidor de autorización de LWA, asegúrese de actualizar su trust store para que su aplicación confíe en el servidor de autorización de LWA.

Respuesta

Una respuesta exitosa incluye los siguientes valores.

NombreDescripción
access_tokenEl access_token a LWA. Tamaño máximo: 2048 bytes.
token_typeEl tipo de token devuelto. Debe ser bearer .
expires_inLa cantidad de segundos antes de que el access_token a LWA deje de ser válido.
refresh_tokenEl refresh_token de LWA que envió en la solicitud. Tamaño máximo: 2048 bytes.
HTTP/l.l 200 OK
Content-Type: application/json;charset UTF-8
Cache-Control: no-store
Pragma:no-cache
{
  "access_token":"Atza|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSREXAMPLE",
  "token_type":"bearer",
  "expires_in":3600,
  "refresh_token":"Atzr|IQEBLzAtAhRPpMJxdwVz2Nn6f2y-tpJX2DeXEXAMPLE"
}

Para obtener más información, visite la página Authorization Code Grant en la documentación de Inicio de sesión con Amazon.

Paso 2. Construya un URI Selling Partner API

Estos son los componentes de un URI Selling Partner API .

NombreDescripciónEjemplo
HTTP methodEl método HTTP.GET
EndpointUn Endpoint de Selling Partner API endpoint .https://sellingpartnerapi-na.amazon.com
PathLa sección/versión de la Selling Partner API. número de la sección/recurso./fba/inbound/v0/shipments/{shipmentId}/preorder/confirm
Query stringLos query parameters.?marketplace=ATVPDKIKX0DER
Path parameterLos path parameters.shipmentId1

Por ejemplo:

PUT https://sellingpartnerapi-na.amazon.com/fba/inbound/v0/shipments/shipmentId1/preorder/confirm?MarketplaceId=ATVPDKIKX0DER&NeedByDate=2020-10-10

Paso 3. Agregar headers a la URI

Agregue headers al URI que construyó en el Paso 2. Construya un URI de la Selling Partner API. Estos son los headers HTTP que debe incluir en las solicitudes a la Selling Partner API.

solicitud de headers

hostEl marketplace endpoint. Consulte SP-API Endpoints .
x-amz-access-tokenEl token de acceso a LWA. Vea el Paso 1. Solicite un inicio de sesión con token de acceso de Amazon .
Nota sobre operaciones restringidas. Si está llamando a una operación restringida, pase un token de datos restringidos (RDT) aquí en lugar de un token de acceso LWA. Para obtener información sobre cómo obtener RDT y llamar a operaciones restringidas, consulte la Guía de casos de uso de la API de tokens en la Guía de casos de uso de la API de tokens.
x-amz-dateLa fecha y hora de su solicitud.
user-agentSu nombre de aplicación y número de versión, plataforma y lenguaje de programación. Estos ayudan a Amazon a diagnosticar y solucionar problemas que pueda encontrar con el servicio. Consulte Incluya un User-Agent header en todas solicitudes .

Este es un ejemplo de una solicitud a la Selling Partner API con URI y headers, pero sin información de signing:

PUT /fba/inbound/v0/shipments/shipmentId1/preorder/confirm?MarketplaceId=ATVPDKIKX0DER&NeedByDate=2020-10-10 HTTP/1.1
host: sellingpartnerapi-na.amazon.com
user-agent: My Selling Tool/2.0 (Language=Java/1.8.0.221;
Platform=Windows/10)
x-amz-access-token=Atza|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSREXAMPLE
x-amz-date: 20190430T123600Z

Para firmar una solicitud a la Selling Partner API, consulte el Paso 4. Crea y firmar tu solicitud.

Paso 4. Crea y firmar tu solicitud

La Selling Partner API utiliza el Signature Version 4 Signing Process para autenticar las solicitudes. Cuando envía solicitudes HTTP a la Selling Partner API, firmar las solicitudes para que Amazon pueda identificar quién las envió. Usted firmar las solicitudes con sus AWS access keys, que consisten en un access key ID y una secret access key. Amazon recomienda utilizar el AWS Security Token Service (AWS STS) para solicitud temporary AWS access keys para firmar sus solicitudes. Consulte Creación y configuración de políticas y entidades de IAM para crear un usuario de IAM (con una política de AWS STS adjunta) que asume un IAM role. A continuación, registra su aplicación mediante el IAM role. Para obtener más información sobre el uso de AWS STS y los SDK de AWS que pueden ayudarlo con su implementación, consulte requesting temporary security credentials.

Nota: debe aprender a Firmar solicitudes HTTP solo cuando las crea manualmente. Cuando utiliza uno de los SDK de AWS para calcular las firmas, el SDK firma automáticamente las solicitudes con la AWS access key que especifica cuando lo configura. Cuando usa un SDK, no necesita aprender a firmar solicitudes usted mismo. Los desarrolladores de Java, por ejemplo, pueden usar AWS4Signer.javade AWS SDK para Java como modelo para calcular una signature. Puede encontrar SDK para otros idiomas en el AWS GitHub repository. .

Para crear y firmar su solicitud, complete lo siguiente:

  1. Crear una canonical solicitud
    Siga las instrucciones de la Task 1: Create a Canonical request for Signature Version 4 en la
    documentación de AWS, utilizando esta guía:

    • Vea el Paso 3. Agregar headers a la URI para obtener un ejemplo de una solicitud sin firmar para comenzar
      cuando cree su canonical solicitud.

    • Utilice SHA-256 para el algoritmo hash.

    • No ponga información de autenticación en los parámetros de consulta. Ponlo en el Parámetro de header Authorization . Para obtener información sobre el uso de la Parámetro de header Authorization para la información de autenticación, consulte Authorization header .

  2. Crear una string para sign

    Siga las instrucciones de la Task 2: Create a String to Sign for Signature Version 4 en la
    documentación de AWS, utilizando esta guía:

    • El valor de designación del algoritmo es AWS4-HMAC-SHA256

    • Para determinar el scope de la credencial, consulte Credential scope.

  3. Calcular la signature

    Siga las instrucciones de la Task 3: Calculate the Signature for AWS Signature Version 4 en la documentación de AWS.

    Importante: Consulte Credential scopepara ayudarlo a completar este paso.

  4. Agregar la información de sign

    Siga las instrucciones de la Task 4: Add the Signature to the HTTP request en la documentación de AWS,
    utilizando esta guía:

    • No agregue información de signing a la query string. Agrégalo a la Parámetro de header Authorization .

    • Consulte el Authorization header .para obtener detalles sobre cómo crear un Parámetro de header Authorization .

El siguiente ejemplo muestra el aspecto que podría tener una solicitud después de haberle agregado la
información de signing mediante el Authorization header.

PUT /fba/inbound/v0/shipments/shipmentId1/preorder/confirm?MarketplaceId=ATVPDKIKX0DER&NeedByDate=2020-10-10HTTP/1.1
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIHV6HIXXXXXXX/20201022/us-east-1/execute-api/aws4_request, SignedHeaders=host;user-agent;x-amz-access-token,
Signature=5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924aEXAMPLE
host: sellingpartnerapi-na.amazon.com
user-agent: My Selling Tool/2.0 (Language=Java/1.8.0.221;
Platform=Windows/10)
x-amz-access-token=Atza|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSREXAMPLE
x-amz-date: 20190430T123600Z

Credential scope

El credential scope es un componente de la "string to sign" que crea cuando firmar una solicitud a la Selling Partner API. ConsulteCrea y firmar tu solicitud.

El Credential scope se representa mediante una slash-separated string of dimensions, como se muestra en la siguiente tabla:

Dimensión
DateUna string de ocho dígitos que representa el año (AAAA), el mes (MM) y el día (DD) de la solicitud.20190430
AWS regionLa región a la que está enviando la solicitud. Consulte SP-API Endpoints .us-east-1
ServiceEl servicio que requesting. Puede encontrar este valor en el endpoint. Consulte SP-API Endpoints.execute-api
Termination stringUna string de terminación especial. Para AWS Signature Version 4, el valor es aws4_requestaws4_request

Por ejemplo:

20190430/us-east-1/execute-api/aws4_request

Importante: La date que usa como parte del credential scope debe coincidir con la date de su resquest, como se especifica en el header x-amz-date. Para obtener más información, consulte Handling Dates in Signature Version 4 en la documentación de AWS

Para obtener más información, consulte el Paso 4. Crea y firmar tu solicitud.

Authorization header.

El Authorization header contiene la información de signing de una solicitud. Aunque el header se denomina "Authorization", la información de signing se utiliza para la authentication.

Estos son los componentes de un Authorization header:

ComponenteDescripción
El algoritmo utilizado para signingEl algoritmo hash utilizado durante todo el proceso de signing. La Selling Partner API requiere SHA-256. Usted especifica esto en el Paso 4. Crea y firmar tu solicitud.
credencialSu AWS access key ID más el Credential scope. Obtiene su AWS access key ID en el paso 2. Cree un usuario de IAM .
SignedHeadersUna lista de todos los HTTP headers que incluyó con la solicitud signed. Para ver un ejemplo, consulte el Paso 3. Agregar headers a la URI.
SignatureLa firma calculada en el Paso 4. Crea y firmar tu solicitud.

Por ejemplo:

Authorization: AWS4-HMAC-SHA256 Credential=AKIAIHV6HIXXXXXXX/20201022/us-east-1/execute-api/aws4_request, SignedHeaders=host;user-agent;x-amz-access-token;x-amz-date, Signature=5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924aEXAMPLE

Para obtener más información, consulte el Paso 4. Crea y firmar tu solicitud.