To ensure proper data consistency within our architecture, the API uses different ENUM patterns for order statuses depending on the type of operation (read or write).
When integrating with our endpoints, please note the following rule to avoid value mismatches between what is sent and what is received:
📥 Read Operations (GET): The response payload will always return the Repository (OrderStatus) format. This ENUM represents the detailed internal state of the order in our database.
📤 Write Operations (PUT): When sending update commands (such as a PutOrderStatus), the request payload must strictly use the CanonicalStatus format.
🚧 Developer Note:
Because values may differ between queries and updates (e.g., a code sent in a PUT might have a different representation in the GET response), API consumers will need to map these status ENUM types separately within their application to ensure proper functionality.
CanonicalOrderStatus
{
/// <summary>
/// Representa os possíveis status de um pedido.
/// </summary>
public enum NeoOrderStatus
{
/// <summary>Não informado.</summary>
None = 0,
/// <summary>Aguardando envio para o ponto de venda.</summary>
Pending = 1,
/// <summary>Aguardando criação do pedido no ponto de venda.</summary>
PendingCreate = 2,
/// <summary>Aguardando confirmação do ponto de venda.</summary>
PendingApproval = 3,
/// <summary>Pedido confirmado no ponto de venda.</summary>
ApprovedExternal = 4,
/// <summary>Em faturamento.</summary>
Processing = 5,
/// <summary>Produtos separados.</summary>
Separate = 6,
/// <summary>Em transporte.</summary>
InDelivery = 7,
/// <summary>Pronto para retirada.</summary>
ReadyForPickup = 8,
/// <summary>Finalizado.</summary>
Finalized = 9,
/// <summary>Cancelado pelo ponto de venda.</summary>
CanceledBySeller = 10,
/// <summary>Cancelado pelo consumidor.</summary>
CanceledByBuyer = 11,
/// <summary>Cancelado pelo administrador.</summary>
CanceledByAdmin = 12,
/// <summary>Aguardando cancelamento.</summary>
PendingCancel = 13,
/// <summary>Aguardando criação da pré-venda no ponto de venda.</summary>
PendingCreatePreOrder = 14,
/// <summary>Pré-venda criada no ponto de venda.</summary>
PreOrderCreated = 15,
/// <summary>Erro ao cancelar o pedido.</summary>
ErrorCancel = 16,
/// <summary>Aguardando atualização de dados do pedido.</summary>
PendingUpdate = 17,
/// <summary>Atualização do pedido concluída com sucesso.</summary>
Updated = 18,
/// <summary>Erro ao atualizar o pedido.</summary>
ErrorUpdate = 19,
/// <summary>Nota fiscal emitida.</summary>
InvoiceCreated = 20,
/// <summary>Cancelado via processo automatizado.</summary>
CanceledByProcessor = 21,
/// <summary>Criação do pedido iniciada</summary>
CreateOrder = 22,
/// <summary>Criação da etiqueta de envio</summary>
CreateShippingLabel = 23,
/// <summary>
/// Pronto para despacho
/// </summary>
ReadyForShipping = 24,
/// <summary>
/// Aguardando decisão sobre cancelamento
/// </summary>
WaitingCancellationDecision = 25
}
}
OrderStatusSummary
{
public enum OrderStatusSummary
{
[Display(Name = "Não informado")]
None = 0,
[Display(Name = "Aguardando criação do pedido")]
AwaitingCreation = 1,
[Display(Name = "Pedido criado na Neomode")]
CreatedInternal = 2,
[Display(Name = "Pedido criado pelo ponto de venda")]
CreatedExternal = 3,
[Display(Name = "Em andamento")]
InProgress = 4,
[Display(Name = "Em faturamento")]
AwaitingInvoiceCreation = 5,
[Display(Name = "Faturado")]
InvoiceCreated = 6,
[Display(Name = "Produto(s) separado(s)")]
Separated = 7,
[Display(Name = "Pronto para retirada")]
ReadyForPickup = 8,
[Display(Name = "Em transporte")]
Shipping = 9,
[Display(Name = "Pedido finalizado")]
Finalized = 10,
[Display(Name = "Pedido cancelado")]
Canceled = 11,
[Display(Name = "Pedido com erro")]
Error = 12,
[Display(Name = "Aguardando geração da etiqueta de postagem")]
WaitingCreateShippingLabel = 13,
[Display(Name = "Pedido pronto para transporte")]
ReadyForShipping = 14,
[Display(Name = "Etiqueta de postagem gerada")]
CreateShippingLabel = 15,
[Display(Name = "Aguardando decisão sobre cancelamento")]
WaitingCancellationDecision = 16
}
}
Repository
{
public enum OrderStatus
{
[Display(Name = "Pedido criado")]
[OrderStatusSummarizeTo(OrderStatusSummary.CreatedInternal)]
None = 0,
[Display(Name = "Pedido criado na Lori")]
[OrderStatusSummarizeTo(OrderStatusSummary.CreatedInternal)]
Pending = 1,
[Display(Name = "Aguardando criação do pedido")]
[OrderStatusSummarizeTo(OrderStatusSummary.AwaitingCreation)]
PendingCreate = 2,
[Display(Name = "Aguardando confirmação do ponto de venda")]
[OrderStatusSummarizeTo(OrderStatusSummary.AwaitingCreation)]
PendingApproval = 3,
[Display(Name = "Pedido confirmado no ponto de venda")]
[OrderStatusSummarizeTo(OrderStatusSummary.CreatedExternal)]
ApprovedExternal = 4,
[Display(Name = "Em faturamento")]
[OrderStatusSummarizeTo(OrderStatusSummary.AwaitingInvoiceCreation)]
Processing = 5,
[Display(Name = "Produtos separados")]
[OrderStatusSummarizeTo(OrderStatusSummary.Separated)]
Separate = 6,
[Display(Name = "Em transporte")]
[OrderStatusSummarizeTo(OrderStatusSummary.Shipping)]
InDelivery = 7,
[Display(Name = "Pronto para retirada")]
[OrderStatusSummarizeTo(OrderStatusSummary.ReadyForPickup)]
ReadyForPickup = 8,
[Display(Name = "Finalizado")]
[OrderStatusSummarizeTo(OrderStatusSummary.Finalized)]
Finalized = 9,
[Display(Name = "Cancelado pelo ponto de venda")]
[OrderStatusSummarizeTo(OrderStatusSummary.Canceled)]
CanceledBySeller = 10,
[Display(Name = "Cancelado pelo consumidor")]
[OrderStatusSummarizeTo(OrderStatusSummary.Canceled)]
CanceledByBuyer = 11,
[Display(Name = "Cancelado pelo administrador")]
[OrderStatusSummarizeTo(OrderStatusSummary.Canceled)]
CanceledByAdmin = 12,
[Display(Name = "Pendente de cancelamento")]
[OrderStatusSummarizeTo(OrderStatusSummary.Canceled)]
PendingCancel = 13,
[Display(Name = "Aguardando criação da pré-venda")]
[OrderStatusSummarizeTo(OrderStatusSummary.AwaitingCreation)]
PendingCreatePreOrder = 14,
[Display(Name = "Pré-venda criada no ponto de venda")]
[OrderStatusSummarizeTo(OrderStatusSummary.CreatedExternal)]
PreOrderCreated = 15,
[Display(Name = "Erro ao cancelar pedido")]
[OrderStatusSummarizeTo(OrderStatusSummary.Error)]
ErrorCancel = 16,
[Display(Name = "Pendente de atualização")]
[OrderStatusSummarizeTo(OrderStatusSummary.InProgress)]
PendingUpdate = 17,
[Display(Name = "Pedido atualizado")]
[OrderStatusSummarizeTo(OrderStatusSummary.InProgress)]
Updated = 18,
[Display(Name = "Erro ao atualizar pedido")]
[OrderStatusSummarizeTo(OrderStatusSummary.Error)]
ErrorUpdate = 19,
[Display(Name = "Nota fiscal emitida")]
[OrderStatusSummarizeTo(OrderStatusSummary.InvoiceCreated)]
InvoiceCreated = 20,
[Display(Name = "Cancelado via processo")]
[OrderStatusSummarizeTo(OrderStatusSummary.Canceled)]
CanceledByProcessor = 21,
[Display(Name = "Aguardando geração da etiqueta de postagem")]
[OrderStatusSummarizeTo(OrderStatusSummary.WaitingCreateShippingLabel)]
WaitingCreateShippingLabel = 22,
[Display(Name = "Pronto para despacho")]
[OrderStatusSummarizeTo(OrderStatusSummary.ReadyForShipping)]
ReadyForShipping = 23,
[Display(Name = "Etiqueta de postagem gerada")]
[OrderStatusSummarizeTo(OrderStatusSummary.CreateShippingLabel)]
CreateShippingLabel = 24,
[Display(Name = "Aguardando decisão sobre cancelamento")]
[OrderStatusSummarizeTo(OrderStatusSummary.WaitingCancellationDecision)]
WaitingCancellationDecision = 25
}
}