Controle de versão da API da FedEx

Na FedEx, usamos o controle de versão semântico para gerenciar as versões da API. Cada versão é representada pelo formato principal.secundária (por exemplo, API de Remessa 1.1). Uma nova versão principal significa que a mudança não é compatível com versões anteriores, e uma nova versão secundária indica uma mudança que é compatível com versões anteriores.

Na FedEx, seguimos o controle de versão simples de URIs. Isso significa que apenas o número da versão principal é representado no caminho do URI. Observe que os números de versões secundárias não são incluídos no caminho do URI. Essa estratégia usa o roteamento do URI para indicar versões específicas da API.

Exemplo: /ship/v1/shipments

Princípios básicos da estratégia do controle de versão

Nosso plano é lançar menos versões principais das APIs da FedEx e tornar obsoleta uma versão principal dois anos após o lançamento de uma nova versão principal. Por exemplo, depois que uma versão principal "N" for lançada, a versão "N-1" terá suporte por dois anos.

Exemplo:
em 2020, a versão principal V1.0 é lançada. Se a versão principal V2.0 for lançada em 2021, a V1.0 se tornará obsoleta em 2023.

Versão

As versões secundárias oferecerão suporte à maioria das novas funcionalidades e às atualizações de recursos.

Exemplo: depois da versão principal 1.0, as versões secundárias 1.1, 1.2 etc. serão lançadas para introduzir novas funcionalidades e atualizações de recursos.

Em qualquer momento, todos os endpoints de uma API específica terão a mesma versão principal. A versão mais recente da documentação só estará disponível no FedEx Developer Portal. Contudo, a página de visão geral de cada API terá um registro de mudanças detalhando as mudanças da versão principal e das versões secundárias.

Quando são lançadas versões principais das APIs?

Estamos nos esforçando para limitar o número de versões principais de nossas APIs. Contudo, há casos em que é inevitável lançar uma nova versão principal. Estes são alguns dos motivos mais importante para o lançamento de uma nova versão principal:

  • Quando um valor de enumeração existente é removido ou tem seu formato ou o próprio valor alterado na solicitação ou na resposta

    Exemplo: o valor de enumeração “GEOGRAPHIC_COORDINATES” do elemento locationSearchCriterion é removido na versão N; a sintaxe dos dados muda de YY-MM-DD para MM-DD-YYYY; mudança de tipo de localidade de FEDEX_ONSITE para ONSITE na resposta

  • Quando um elemento existente é removido da solicitação ou da resposta

    Exemplo: o elemento pickupType é removido (ou renomeado) da solicitação de taxa na versão N

  • Quando um método existente é removido

    Exemplo: não há mais suporte para o método de criação e cancelamento de etiquetas do FedEx Express na versão N

  • Quando um elemento existente que era opcional ou condicional é mudado para obrigatório na solicitação

    Exemplo: o número de reserva agora é um elemento obrigatório em remessas do FedEx Express® Freight na versão N

  • Quando há mudanças no projeto da API

    Exemplo: a estrutura da solicitação e da resposta é reorganizada

  • Quando há mudanças nos códigos e nas mensagens de erro

    Exemplo: o código de erro mudou de INCORRECT.WEIGHT para WEIGHT.LIMIT.EXCEEDED

Quando são lançadas versões secundárias das APIs?

  • Quando um novo valor de enumeração é adicionado

    Exemplo: uma nova oferta de transporte é adicionada ao elemento serviceType na versão N

  • Quando um novo elemento é adicionado

    Exemplo: um novo elemento opcional para incluir o número de telefone do despachante em remessas internacionais

  • Quando um novo método é adicionado

    Exemplo: um método para modificar documentos comerciais internacionais depois que eles são transferidos é adicionado na versão N.

  • Quando um elemento existente que era obrigatório é mudado para opcional

    Exemplo: o ID do documento agora é opcional porque a FedEx pode obter o ID da documentação com base nas informações do usuário.

Perguntas mais frequentes

Você precisará atualizar o URI para a versão mais recente no prazo de dois anos para que a FedEx possa desativar a versão mais antiga. 

Versões secundárias são lançadas para abranger novos recursos e alterações que são compatíveis com versões anteriores, portanto, elas não devem prejudicar sua integração. A atualização para uma nova versão secundária não é obrigatória, mas é geralmente recomendada como uma boa prática para utilizar os novos recursos criados para atender às necessidades dos clientes.

No FedEx Web Services, toda mudança exige o lançamento de um novo WSDL ou de uma versão principal, tornando as atualizações mais difíceis para os clientes. Com as APIs da FedEx, será possível introduzir a maioria dos novos recursos em versões secundárias, facilitando a atualização para os clientes. Haverá mais versões secundárias de API e menos versões principais.