Gerenciamento de Envios

O recurso de Shipments contém todas as informações relacionadas ao envio que deve ser realizado para finalizar a transação. Nota: Lembre que, para trabalhar com o JSON de shipments, ao fazer o GET, você deverá enviar o parâmetro "x-format-new: true".

Conteúdo

→Novos recursos
→Itens
→Costs
    ↳Parámetros
→Lead Time
→Descrição dos tempos de estimativa
→History
→Informações de rastreio
→Informações sobre status e substatus
→Payments
→Parâmetros disponíveis
→Itens não combináveis (nova funcionalidade)
→Valores posibles en el campo "reason"


É importante lembrar que o novo JSON de Orders não vai mais conter os dados de Shipping, como tem sido até agora. O recurso /shipments/shipment_id/ continuará tendo sua estrutura, mostrando as informações básicas para a realização do envio. Introduzimos algumas mudanças na estrutura do JSON, que você pode ver abaixo:

curl -X GET https://api.mercadolibre.com/shipments/shipment_id?access_token=$ACCESS_TOKEN
{
  "id": 0,
  "external_reference": "string",
   "status": "string",
  "substatus": "string",
  "date_created": "string",
  "last_updated": "string",
  "declared_value": 0,
  "dimensions": {
    "height": 0,
    "width": 0,
    "length": 0,
    "weight": 0
  },
  "logistic": {
    "direction": "forward",
    "mode": "me2",
    "type": "drop_off"
  },
  "source": {
    "site_id": "MLM",
    "market_place": "MELI",
    "application_id": null
  },
  "tracking_number": "string",
  "origin": {
    "type": "selling_address",
    "sender_id": 0,
    "shipping_address": {
      "id": 0,
      "address_id": 0,
      "address_line": "string",
      "street_name": "string",
      "street_number": 0,
      "comment": "string",
      "zip_code": "string",
      "city": {
        "id": "string",
        "name": "string"
      },
      "state": {
        "id": "string",
        "name": "string"
      },
      "country": {
        "id": "string",
        "name": "string"
      },
      "neighborhood": {
        "id": "string",
        "name": "string"
      },
      "municipality": {
        "id": "string",
        "name": "string"
      },
      "types": {
        "default_buying_address": 0
      },
      "agency": {
        "carrier_id": 0,
        "agency_id": "string",
        "description": "string",
        "phone": "string",
        "open_hours": "string"
      },
      "latitude": 0,
      "longitude": 0,
      "geolocation_type": "string",
      "is_valid_for_carrier": true
    }
  },
  "destination": {
    "type": "buying_address",
    "receiver_id": 0,
    "receiver_name": "string",
    "receiver_phone": "string",
    "comments": "string",
    "shipping_address": {
      "id": 0,
      "address_id": 0,
      "address_line": "string",
      "street_name": "string",
      "street_number": 0,
      "comment": "string",
      "zip_code": "string",
      "city": {
        "id": "string",
        "name": "string"
      },
      "state": {
        "id": "string",
        "name": "string"
      },
      "country": {
        "id": "string",
        "name": "string"
      },
      "neighborhood": {
        "id": "string",
        "name": "string"
      },
      "municipality": {
        "id": "string",
        "name": "string"
      },
      "types": {
        "default_buying_address": 0
      },
      "agency": {
        "carrier_id": 0,
        "agency_id": "string",
        "description": "string",
        "phone": "string",
        "open_hours": "string"
      },
      "latitude": 0,
      "longitude": 0,
      "geolocation_type": "string",
      "is_valid_for_carrier": true
    }
  },
  "lead_time": {
    "option_id": 0,
    "shipping_method": {
      "id": 0,
      "type": "standard",
      "name": "string",
      "deliver_to": "address"
    },
    "currency_id": "string",
    "cost": 0,
    "cost_type": "charged",
    "service_id": 0,
    "estimated_delivery_time": {
      "type": "known",
      "date": "string",
      "shipping": 0,
      "handling": 0,
      "unit": "string",
      "offset": {
        "date": "string",
        "shipping": 0
      },
      "time_frame": {
        "from": 0,
        "to": 0
      },
      "pay_before": "string"
    }
  },
  "tags": [
    "string"
  ]
}

Para entender a que refere cada um dos parâmetros, faça a seguinte chamada:

curl -X OPTION https://api.mercadolibre.com/shipments/shipment_id?access_token=$ACCESS_TOKEN
Nota:
external_reference faz referência ao número de pack relacionado com o envio.


Novos recursos

Com a nova versão do recurso Shipments, há novos recursos complementares que trarão informações detalhadas para poder trabalhar de maneira mais eficiente. A seguir, ampliamos cada um deles. Veja nossos API docs.


Itens

O recurso /shipments/shipment_id/items retorna os itens associados a um shipment. Caso o item contenha variações (Por exemplo, tamanho ou cor em vestuário), você também poderá ver qual corresponde à ordem dentro do envio. À medida que envios com mais de um item forem sendo habilitados, a lista passará a conter cada um deles.

Nota:
Cada vendedor só visualizará seus próprios produtos.
curl -X GET https://api.mercadolibre.com/shipments/shipment_id/items?access_token=$ACCESS_TOKEN

[
  {
    "item_id": "string",
    "description": "string",
    "quantity": 0,
    "variation_id": 0,
    "dimensions": {
      "height": 0,
      "width": 0,
      "length": 0,
      "weight": 0
    },
    "order_id": 0,
    "sender_id": 0
  }
]


Costs

O recurso /shipments/shipment_id/costs retorna os custos do envio a serem pagos pelo usuário. Também poderá ser visualizada a economia atingida pelo envio de mais de um produto na mesma caixa (quando esta funcionalidade estiver habilitada), através do parâmetro "save", caso exista.

Nota:
Durante a implementação das mudanças, se manterá a resposta atual de shipments.api costs em paralelo e para acessar o novo formato, deverá ser utilizado o header "X-Costos-New = true".
curl -X GET https://api.mercadolibre.com/shipments/SHIPMENT_ID/costs?access_token=$ACCESS_TOKEN 
{
  "gross_amount": 24.55,
  "receiver": {
      "user_id": 74425755,
      "cost": 0,
      "compensation": 0,
      "save": 0,
      "discounts": [
          {
              "rate": 1,
              "type": "loyal",
              "promoted_amount": 4.07
          }
        ]
  },
  "senders": [
      {
          "user_id": 81387353,
          "cost": 8.19,
          "compensation": 0,
          "save": 0,
          "discounts": [
              {
                  "rate": 0.6,
                  "type": "mandatory",
                  "promoted_amount": 12.29
              }
          ]
      }
  ]
}

Parâmetros

  • “gross_amount”: É o custo total do shipment sem nenhum tipo de desconto.
  • “discounts”: representa uma lista que pode vir vazia se não houver nenhum desconto e se não tiver um ou mais descontos associados.
  • “senders”: é uma lista adaptada à versões futuras do Carrinho de Compras onde um só envio poderá conter produtos de diferentes vendedores.
  • “cost”: representa o custo final do envio que corresponde a cada usuario.


Lead Time

O recurso /shipments/shipment_id/lead_time retorna tudo o referido a prazos de entrega de um envio e tipo de serviço, adicionando datas-limite de encaminhamento e entrega. Embora o recurso de shipment já contenha informações úteis para fazer essas estimativas, aqui você poderá visualizá-lo de forma mais detalhada, ajudando a oferecer uma melhor experiência ao usuário.

curl -X GET https://api.mercadolibre.com/shipments/shipment_id/lead_time?access_token=$ACCESS_TOKEN
{
  "option_id": 0,
  "shipping_method": {
    "id": 0,
    "type": "standard",
    "name": "string",
    "deliver_to": "address"
  },
  "currency_id": "string",
  "cost": 0,
  "cost_type": "charged",
  "service_id": 0,
  "estimated_delivery_time": {
    "type": "known",
    "date": "string",
    "shipping": 0,
    "handling": 0,
    "unit": "string",
    "offset": {
      "date": "string",
      "shipping": 0
    },
    "time_frame": {
      "from": 0,
      "to": 0
    },
    "pay_before": "string"
  },
  "estimated_handling_limit": {
    "date":  "2016-12-30T12:32:35.000Z"
  },
  "estimated_delivery_extended": {
    "date":  "2016-12-30T12:32:35.000Z"
  },
  "estimated_delivery_limit": {
    "date":  "2016-12-30T12:32:35.000Z"
  },
  "estimated_delivery_final": {
    "date":  "2016-12-30T12:32:35.000Z"
  },
  "delay": [
    "shipping_delayed",
  ]
}
Nota:
O campo cost_type pode ser "free", "charged" ou "partially_free”.


Descrição dos tempos de estimativa

São as datas-limite para o envio ser encaminhado e enviado.
estimated_handling_limit: Data-limite para o vendedor encaminhar. Considere que apenas é levada em conta a data, pois a hora é informada somente para manter uma estrutura. Isto é, você tem todo o dia informado no campo para realizar o envio antes de este ser marcado como demorado para o dia seguinte.
estimated_delivery_extended: Segunda promessa de entrega, caso a primeira não tenha sido atendida.
estimated_delivery_limit: Data-limite para o comprador cancelar a compra e pedir a devolução de dinheiro, desde que o envio ainda não tenha chegado.
estimated_delivery_final: Data final para a chegada do envio e para determinação do status final, que pode ser delivered ou, caso haja alguma reclamação, not_delivered. Ver mais informações sobre tipos de promessa de entrega.


History

O recurso /shipments/shipment_id/history retorna o histórico de status e substatus associados ao ciclo de vida do shipment.

curl -X GET https://api.mercadolibre.com/shipments/shipment_id/history?access_token=$ACCESS_TOKEN

[
  {
    "status": "string",
    "substatus": "string",
    "date": "2016-12-30T12:32:35.000Z"
  }
]

Exemplo:

https://api.mercadolibre.com/shipments/1234567899/history?access_token=$ACCESS_TOKEN

[
  {
    "status": "ready_to_ship",
    "substatus": "printed",
    "date":  "2016-12-30T12:32:35.000Z"
  },
  {
    "status": "handling",
    "substatus": "waiting_for_label_generation",
    "date":  "2016-12-30T12:32:35.000Z"
  },

]

Informações de rastreio

O recurso /shipments/shipment_id/carrier devolver o URL para acessar as informações específicas de rastreio que está gerenciando o envio.

curl -X GET https://api.mercadolibre.com/shipments/shipment_id/carrier?access_token=$ACCESS_TOKEN

  {
          "url": "string"
    }

Ejemplo:

curl -X GET  https://api.mercadolibre.com/shipments/27691621451/carrier?access_token=$ACCESS_TOKEN

{
    "url":"http://tracking.totalexpress.com.br/poupup_track.php?reid=3&pedido=14&nfiscal=1"
}

Informações sobre status e substatus

Ver informações sobre status e substatus pelos que um envio pode passar:

Chamada:

curl -X GET https://api.mercadolibre.com/shipment_statuses

Resposta:

{
    "id": "to_be_agreed",
    "name": "To be agreed",
    "substatuses": [
    ]
  },
  {
    "id": "pending",
    "name": "Pending",
    "substatuses": [
      {
        "id": "cost_exceeded",
        "name": "Cost exceeded"
      }
    ]
  },
  {
    "id": "handling",
    "name": "Handling",
    "substatuses": [
      {
        "id": "regenerating",
        "name": "Regenerating"
      },
      {
        "id": "waiting_for_label_generation",
        "name": "Waiting for label generation"
      }
    ]
  },
  {
    "id": "ready_to_ship",
    "name": "Ready to ship",
    "substatuses": [
      {
        "id": "ready_to_print",
        "name": "Ready to print"
      },
      {
        "id": "invoice_pending",
        "name": "Invoice pending"
      },
      {
        "id": "printed",
        "name": "Printed"
      },
      {
        "id": "in_pickup_list",
        "name": "In pikcup list"
      },
      {
        "id": "ready_for_pkl_creation",
        "name": "Ready for pkl creation"
      },
      {
        "id": "ready_for_pickup",
        "name": "Ready for pickup"
      },
      {
        "id": "picked_up",
        "name": "Picked up"
      },
      {
        "id": "stale",
        "name": "Stale Ready To Ship"
      },
      {
        "id": "in_hub",
        "name": "In hub"
      },
      {
        "id": "measures_ready",
        "name": "Measures and weight ready"
      },
      {
        "id": "waiting_for_carrier_authorization",
        "name": "Waiting for carrier authorization"
      },
      {
        "id": "authorized_by_carrier",
        "name": "Authorized by carrier"
      },
      {
        "id": "in_plp",
        "name": "In PLP"
      }
    ]
  },
  {
    "id": "shipped",
    "name": "Shipped",
    "substatuses": [
      {
        "id": "delayed",
        "name": "Delayed"
      },
      {
        "id": "waiting_for_withdrawal",
        "name": "Waiting for withdrawal"
      },
      {
        "id": "contact_with_carrier_required",
        "name": "Contact with carrier required"
      },
      {
        "id": "receiver_absent",
        "name": "Receiver absent"
      },
      {
        "id": "reclaimed",
        "name": "Reclaimed"
      },
      {
        "id": "not_localized",
        "name": "Not localized"
      },
      {
        "id": "forwarded_to_third",
        "name": "Forwarded to third party"
      },
      {
        "id": "soon_deliver",
        "name": "Soon deliver"
      },
      {
        "id": "refused_delivery",
        "name": "Delivery refused"
      },
      {
        "id": "bad_address",
        "name": "Bad address"
      },
      {
        "id": "negative_feedback",
        "name": "Stale shipped with negative feedback by buyer"
      },
      {
        "id": "need_review",
        "name": "Need to review carrier status to understand what happened"
      },
      {
        "id": "stale",
        "name": "Stale shipped"
      }
    ]
  },
  {
    "id": "delivered",
    "name": "Delivered",
    "substatuses": [
      {
        "id": "damaged",
        "name": "damaged"
      },
      {
        "id": "fulfilled_feedback",
        "name": "Fulfilled by buyer feedback"
      },
      {
        "id": "no_action_taken",
        "name": "No action taken by buyer"
      },
      {
        "id": "double_refund",
        "name": "Double Refund"
      }
    ]
  },
  {
    "id": "not_delivered",
    "name": "Not delivered",
    "substatuses": [
      {
        "id": "returning_to_sender",
        "name": "Returning to sender"
      },
      {
        "id": "retained",
        "name": "Retained"
      },
      {
        "id": "stolen",
        "name": "Stolen"
      },
      {
        "id": "returned",
        "name": "Returned"
      },
      {
        "id": "receiver_absent",
        "name": "Receiver absent"
      },
      {
        "id": "confiscated",
        "name": "confiscated"
      },
      {
        "id": "to_review",
        "name": "Closed shipment"
      },
      {
        "id": "destroyed",
        "name": "Destroyed"
      },
      {
        "id": "waiting_for_withdrawal",
        "name": "Waiting for withdrawal"
      },
      {
        "id": "negative_feedback",
        "name": "Stale shipped forced to not delivered due to negative feedback by buyer"
      },
      {
        "id": "claimed_me",
        "name": "Stale shipped with claim that was forced to not delivered"
      },
      {
        "id": "not_localized",
        "name": "Not localized"
      },
      {
        "id": "double_refund",
        "name": "Double Refund"
      }
    ]
  },
  {
    "id": "not_verified",
    "name": "Not verified",
    "substatuses": [
    ]
  },
  {
    "id": "cancelled",
    "name": "Cancelled",
    "substatuses": [
    ]
  },
  {
    "id": "closed",
    "name": "Closed",
    "substatuses": [
    ]
  },
  {
    "id": "error",
    "name": "Error",
    "substatuses": [
    ]
  },
  {
    "id": "active",
    "name": "Active",
    "substatuses": [
    ]
  },
  {
    "id": "not_specified",
    "name": "Not specified",
    "substatuses": [
    ]
  },
  {
    "id": "stale_ready_to_ship",
    "name": "Stale ready to ship",
    "substatuses": [
    ]
  },
  {
    "id": "stale_shipped",
    "name": "Stale shipped",
    "substatuses": [
    ]
  }


Payments

O recurso /shipments/shipment_id/payments retorna os payments associados ao envio. Lembre que agora o pagamento do envio será discriminado e você poderá, a partir deste recurso, consumir informações básicas sobre ele. O payment_id funciona da mesma forma que o de uma ordem.

curl -X GET https://api.mercadolibre.com/shipments/shipment_id/payments
[
  {
    "payment_id": 0,
    "amount": 0,
    "status": "string"
  }
]


Parâmetros disponíveis

A seguir, mostramos os valores disponíveis para cada parâmetro:
logistic.direction: forward, return
logistic.mode: me2, me1, custom
logistic.type: default, drop_off, xd_drop_off, cross_docking, fulfillment
source.site_id: sites
source.market_place: Mercado Livre, OFF
lead_time.shipping_method.type:
next_day, express, standard, same_day
lead_time.shipping_method.deliver_to: address, agency
lead_time.currency_id: currencies
lead_time.cost_type: free, partially_free, charged
lead_time.delay: handling_delayed, shipping_delayed, shipping_delayed_extended
destination/origin.type: agency, buying_address, selling_address
discount.type: loyal, special


Itens não combináveis (nova funcionalidade)

No caso em que você tenha um problema no momento de agrupar diferentes produtos em um mesmo pacote (seja porque estão em depósitos diferentes, ou são frágeis, ou não entram em uma mesma caixa, etc) você pode utilizar o recurso que te permite gerar pacotes adicionais para poder despachar todos os produtos. Exemplo:

curl -X POST https://api.mercadolibre.com/shipments/shipment_id/split?access_token=token

JSON:

 {
  "shipments": [
    {
      "reason": "text",
                   “description”: “text”
      "orders": [
        {
          "id": "order_id",

        }
      ]
    }
  ]
}

Tenha em conta que esse recurso é para evitar problemas na hora de empacotar os produtos mas não deve ser usada em todos os casos. Somente em casos de extrema necessidade. Mais pra frente estaremos melhorando esse processo.


Valores possíveis no campo "reason"

  • fragile
  • another_warehouse
  • irregular_shape
  • other_motive
Notas:
- O "order_ID" acima se refere ao produto a ser retirado do "Shipping" original.
- Um novo shipping será gerado contendo o order ID acima.
- A API não irá devolver nenhuma resposta após esta chamada somente o status 201.
- Deve-se escutar via notificações se existe algum novo shipping e fazer o GET deste novo.

Siguiente: Manejo de Pagos.