> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getjusto.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Cambiar el estado de un pedido

> Usa este metodo para cambiar el estado de un pedido

### Descripción

Este método fue diseñado con el fin de modificar el estado de un pedido, mediante este endpoint se puede actualizar el estado a uno de “delivering”, “done” o “cancelled”. Notar que un cambio de estado puede poner en marcha un gran número de procesos internos como, la generación automática de devoluciones cuando un pedido se “cancela”, y para esto hay que cumplir ciertas condiciones, especialmente cuando uno selecciona “cancelled” el pedido.

#### NOTA 1:

Si se cancela un pedido, el sistema generará una devolución automatica siempre y cuando el medio de pago lo permita. Los pedidos con entrega en el local o con pago en efectivo no generan devoluciones.

#### NOTA 2:

Se podrán ver los campos `reason`, `reasonMessage` y `category` en el objeto `cancellationInfo` de los pedidos cancelados, tanto para aquellos que no generen devoluciones, como para aquellos pedidos cancelados que si generen devoluciones.

#### NOTA 3:

Se podrán ver los campos `amount`, `reason`, `reasonMessage` y `category` de los pedidos cancelados con devoluciones en la lista `devolutions`.

#### NOTA 4:

Si se cancela un pedido, este **NO** debe tener despachos activos. Si esto ocurre la petición será rechazada con el siguiente error:

```json theme={null}
{
    "status": "error",
    "error": "El pedido no se puede cancelar porque esta activo"
}
```


## OpenAPI

````yaml Patch /orders/{id}/orderStatus
openapi: 3.0.0
info:
  title: Order Endpoint API
  version: 1.0.0
servers:
  - url: https://api.getjusto.com/api/v2
    description: Production server
security: []
tags:
  - name: order
    description: Todo lo relacionado a operar con ordenes
paths:
  /orders/{id}/orderStatus:
    patch:
      tags:
        - order
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
          description: ID de la orden
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - orderStatus
              properties:
                orderStatus:
                  type: string
                  description: Estado de la orden
      responses:
        '200':
          description: Operación exitosa
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    description: Resultado de la operación
                    example: ok
                  data:
                    $ref: '#/components/schemas/orderResultGet'
        '400':
          description: Error en la petición
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    description: Resultado de la operación
                    example: error
                  error:
                    type: string
                    description: Mensaje de error
                    example: Error en la petición
        '401':
          description: Token inválido
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    description: Resultado de la operación
                    example: error
                  error:
                    type: string
                    description: Mensaje de error
                    example: Unauthorized
      security:
        - bearerAuth: []
components:
  schemas:
    orderResultGet:
      type: object
      properties:
        _id:
          type: string
          description: ID de la orden
        orderStatus:
          type: string
          description: Estado de la orden
        isScheduled:
          type: boolean
          description: Indica si la orden es programada
        websiteId:
          type: string
          description: ID del sitio web
        code:
          type: string
          description: Código de la orden
        createdAt:
          type: string
          description: Fecha de creación de la orden
        fullCode:
          type: string
          description: Código completo de la orden
        userId:
          type: string
          description: ID del usuario
        storeId:
          type: string
          description: ID de la tienda
        address:
          $ref: '#/components/schemas/addressSchema'
          type: object
        menuId:
          type: string
          description: ID del menú
        deliveryType:
          type: string
          description: Tipo de entrega
        deliverAt:
          type: string
          format: date-time
          description: Fecha de entrega
        paymentType:
          type: string
          description: Tipo de pago
        paymentTypeLabel:
          type: string
          description: Etiqueta del tipo de pago
        paymentTypeIsIntegration:
          type: boolean
          description: Indica si el tipo de pago es integración
        otherPaymentType:
          type: string
          description: Otro tipo de pago
        amountToPay:
          type: number
          description: Monto a pagar
        deliveryFee:
          type: number
          description: Cargo por entrega con descuento aplicado
        deliveryFeeWithoutDiscount:
          type: number
          description: Cargo por entrega antes de aplicar descuentos
        serviceFee:
          type: number
          description: Cargo por servicio
        itemsPrice:
          type: number
          description: Precio de los ítems
        totalPrice:
          type: number
          description: Precio total
        totalPriceBeforeDiscountsAfterProductDiscount:
          type: number
          description: Precio total antes de descuentos
        discountedAmountAfterProductDiscount:
          type: number
          description: Precio total después de descuentos
        justoCoinsDiscount:
          type: number
          description: Descuento por Justo Coins
        invoiceTotalPrice:
          type: number
          description: Precio total de la factura
        amountFinancedByWebsite:
          type: number
          description: Monto financiado por el sitio web
        amountFinancedByJusto:
          type: number
          description: Monto financiado por Justo
        expectedPreparationDuration:
          type: number
          description: Duración de preparación esperada
        deliveryDuration:
          type: number
          description: Duración de entrega
        cardId:
          type: string
          description: ID de la tarjeta
        channel:
          type: string
          description: Canal
        source:
          type: string
          description: Fuente
        buyerName:
          type: string
          description: Nombre del comprador
        couponId:
          type: string
          description: ID del cupón
        couponName:
          type: string
          description: Nombre del cupón
        couponDiscount:
          type: number
          description: Descuento del cupón
        flagColor:
          type: string
          description: Color de la bandera
        store:
          $ref: '#/components/schemas/storeSchema'
          type: object
        items:
          type: array
          items:
            $ref: '#/components/schemas/itemSchema'
            type: object
        transaction:
          type: object
          description: Transacción
        devolutions:
          type: array
          items:
            $ref: '#/components/schemas/devolutionSchema'
            type: object
        deliveries:
          type: array
          items:
            $ref: '#/components/schemas/deliverySchema'
            type: object
        charges:
          type: object
          properties:
            platformFee:
              type: object
              properties:
                amount:
                  type: number
                  description: Monto de la comisión
                totalAmount:
                  type: number
                  description: Monto total de la comisión
                tax:
                  type: number
                  description: Monto de impuestos de la comisión
                count:
                  type: number
                  description: Cantidad de comisiones
        orderParams:
          type: object
          properties:
            isGift:
              type: boolean
              description: Indica si la orden es un regalo
        billing:
          type: object
          description: Información de la factura
        clonedOrder:
          type: object
          description: Orden clonada
        parentOrder:
          type: object
          description: Orden padre
        hasManagedDelivery:
          type: boolean
          description: Indica si la orden tiene entrega gestionada
        loyaltyTransaction:
          type: object
          description: Transacción de fidelidad
        cancellationInfo:
          type: object
          description: Información de cancelación
        websiteCoinsDiscount:
          type: number
          description: Descuento por Justo Coins
    addressSchema:
      type: object
      properties:
        _id:
          type: string
          description: ID de la dirección
        placeId:
          type: string
          description: ID de la dirección
        address:
          type: string
          description: Dirección
        addressSecondary:
          type: string
          description: Dirección secundaria
        location:
          type: object
          properties:
            lat:
              type: number
              description: Latitud
            lng:
              type: number
              description: Longitud
        streetAddress:
          type: string
          description: Dirección
        locality:
          type: string
          description: Localidad
        region:
          type: string
          description: Región
        postalCode:
          type: string
          description: Código postal
        directions:
          type: object
          properties:
            duration:
              type: number
              description: Duración
            distance:
              type: number
              description: Distancia
    storeSchema:
      type: object
      properties:
        _id:
          type: string
          description: ID de la tienda
        websiteId:
          type: string
          description: ID del sitio web
        name:
          type: string
          description: Nombre de la tienda
        acceptDelivery:
          type: boolean
          description: Indica si la tienda acepta entrega
        currentPreparationDuration:
          type: number
          description: Duración de preparación actual
        currentDeliveryDuration:
          type: number
          description: Duración de entrega actual
        phone:
          type: string
          description: Teléfono de la tienda
        address:
          $ref: '#/components/schemas/addressSchema'
          type: object
        externalId:
          type: string
          description: ID externo de la tienda
        schedule:
          $ref: '#/components/schemas/scheduleSchema'
          type: object
    itemSchema:
      type: object
      properties:
        product:
          $ref: '#/components/schemas/productSchema'
          type: object
        unitPrice:
          type: number
          description: Precio unitario
        baseUnitPrice:
          type: number
          description: Precio unitario base
        productPrice:
          type: number
          description: Precio del producto
        baseProductPrice:
          type: number
          description: Precio del producto base
        amount:
          type: number
          description: Cantidad
        comment:
          type: string
          description: Comentario
        modifiers:
          type: array
          description: Modificadores
        options:
          type: array
          description: Opciones
    devolutionSchema:
      type: object
      properties:
        _id:
          type: string
          description: ID de la devolución
        amount:
          type: number
          description: Monto de la devolución
        completedAt:
          type: string
          format: date-time
          description: Fecha de completación de la devolución
        createdAt:
          type: string
          format: date-time
          description: Fecha de creación de la devolución
    deliverySchema:
      type: object
    scheduleSchema:
      type: object
      properties:
        closedDays:
          type: array
          description: Días cerrados
        availableAtPeriods:
          type: boolean
          description: Indica si la tienda está disponible en periodos
        openPeriods:
          type: array
          items:
            type: object
            properties:
              daysOfWeek:
                type: array
                description: Días de la semana
                items:
                  type: number
                  description: Día de la semana
              fromMinute:
                type: number
                description: >-
                  Minutos desde las 00:00 hrs en que empieza este periodo.
                  Ejemplo 720 significa que empezará a operar desde las 720/60 =
                  12 hrs.
              toMinute:
                type: number
                description: >-
                  Minutos desde las 00:00 hrs en que termina este periodo.
                  Ejemplo 960 significa que terminará de operar a las 960/60 =
                  16 hrs.
              specialPeriods:
                type: array
                description: Periodos especiales
              timezone:
                type: string
                description: Zona horaria
              availableStateValidUntil:
                type: string
                description: Fecha de validez del estado de disponibilidad
              isAvailableNow:
                type: boolean
                description: Indica si la tienda está disponible ahora
              updatedCacheAt:
                type: string
                description: Fecha de actualización del estado de disponibilidad
    productSchema:
      type: object
      properties:
        _id:
          type: string
          description: ID del producto
        name:
          type: string
          description: Nombre del producto
        externalId:
          type: string
          description: ID externo del producto
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````