openapi: 3.0.3
info:
  description: >-
    ## Summary
     ### Introduction
     - **Overview**: 
    The REVER ADMIN API provides seamless integration for managing returns
    through three main categories: Reverse Logistics, Processes, and Settings.
     - **Logistics**: Handles all operations related to package returns, including shipment tracking, warehouse logistics, and return labels for items sent back to the eCommerce warehouse. 
     - **Processes**: Manages return workflows, including return statuses, item inspections, and actions that can be taken on a return, such as refunds, exchanges, or inspections. 
     - **Settings**: Contains configuration information REVER uses to execute return processes, including return rules, time limits, and warehouse preferences. 
     ## OpenAPI Specification
     You can download the OpenAPI specification file [here](https://api.byrever.com/v1/docs/openapi.yaml) to generate your client code.


    this API is meant to be used for returns that are already created or
    processed. The API is not meant to be used to start returns from the
    customer portal. For integrating with your own portal please take a look at
    the Storefront API.



    ## E-commerce IDs and Groups
     Most commonly, you will only need to use the e-commerce ID provided during onboarding.
     However, if you need to manage multiple e-commerce stores simultaneously, a group ID is required.
     An e-commerce group is an identifier that groups multiple e-commerce stores that are managed together.
     Typically, these are different brands belonging to the same parent company.


    ## Authentication
     The REVER Admin API uses API key authentication.

     ### Authenticating via API Key
     This authentication method is primarily used for server-to-server (unattended) integrations. You must request an API key through your account manager.
    **The API key must be kept secure and confidential**, do not share it with
    anyone.

     To authenticate a request using an API key, include the header **x-rever-api-key**. Example: `x-rever-api-key: 87bf223499abeef`


    ## Rate Limiting
     The API implements rate limiting. If you receive a 429 error response, please wait a few seconds before retrying.
  title: REVER Admin API
  version: 1.0.0
servers:
  - url: https://api.byrever.com
tags:
  - description: >-
      Collection of methods that provide logistics services including CRUD
      operations

      for logistics orders, pickups, etc.

      Also handles logistics-related files like shipping labels.
    name: Logistics
  - description: >-
      Collection of methods for managing return processes. It includes CRUD
      operations and status updates.
    name: Processes
  - description: >-
      Collection of methods for managing e-commerce configurations. It includes
      GET operations for e-commerce stores, warehouses, and other settings.
    name: Settings
  - description: Public endpoints for creating/importing returns.
    name: Returns
paths:
  /v1/configs/branding/{ecommerce_id}:
    get:
      description: Endpoint for retrieving branding configuration
      operationId: FindBranding
      parameters:
        - description: The ID of the e-commerce store. Optional.
          in: path
          name: ecommerce_id
          required: true
          schema:
            type: string
        - description: The URL path identifier for the e-commerce store. Optional.
          in: query
          name: slug
          schema:
            type: string
        - description: >-
            The group identifier for the e-commerce store. Multiple stores can
            share the same group. Optional.
          in: query
          name: group
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pb.Branding'
          description: OK
      tags:
        - Settings
  /v1/configs/exchangeconditions/{ecommerce_id}:
    get:
      description: endpoint for finding ExchangeConditions model
      operationId: FindExchangeConditions
      parameters:
        - description: The id of the e-commerce. Optional.
          in: path
          name: ecommerce_id
          required: true
          schema:
            type: string
        - description: The path of an URL identifying the e-commerce. Optional.
          in: query
          name: slug
          schema:
            type: string
        - description: >-
            The group of the e-commerce. Several e-commerces can have the same
            group. Optional.
          in: query
          name: group
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pb.ExchangeConditions'
          description: OK
      tags:
        - Settings
  /v1/configs/exchangeorders/{ecommerce_id}:
    get:
      description: endpoint for finding ExchangeOrder model
      operationId: FindExchangeOrder
      parameters:
        - description: The id of the e-commerce. Optional.
          in: path
          name: ecommerce_id
          required: true
          schema:
            type: string
        - description: The path of an URL identifying the e-commerce. Optional.
          in: query
          name: slug
          schema:
            type: string
        - description: >-
            The group of the e-commerce. Several e-commerces can have the same
            group. Optional.
          in: query
          name: group
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pb.ExchangeOrderWithEcommerce'
          description: OK
      tags:
        - Settings
  /v1/configs/logisticsetting/{ecommerce_id}:
    get:
      description: endpoint for finding LogisticSetting model
      operationId: FindLogisticSetting
      parameters:
        - description: The id of the e-commerce. Optional.
          in: path
          name: ecommerce_id
          required: true
          schema:
            type: string
        - description: The path of an URL identifying the e-commerce. Optional.
          in: query
          name: slug
          schema:
            type: string
        - description: >-
            The group of the e-commerce. Several e-commerces can have the same
            group. Optional.
          in: query
          name: group
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pb.LogisticSetting'
          description: OK
      tags:
        - Settings
  /v1/configs/refunds:
    get:
      description: FindRefundConfiguration
      operationId: FindRefundConfiguration
      parameters:
        - description: The path of an URL identifying the e-commerce. Optional.
          in: query
          name: slug
          schema:
            type: string
        - description: The id of the e-commerce. Optional.
          in: query
          name: ecommerce_id
          schema:
            type: string
        - description: >-
            The group of the e-commerce. Several e-commerces can have the same
            group. Optional.
          in: query
          name: group
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pb.FindRefundConfigurationResponse'
          description: OK
      tags:
        - Settings
  /v1/configs/returnconditions/{ecommerce_id}:
    get:
      description: endpoint for finding LogisticsSettings model
      operationId: FindReturnProcessConditions
      parameters:
        - description: The id of the e-commerce. Optional.
          in: path
          name: ecommerce_id
          required: true
          schema:
            type: string
        - description: The path of an URL identifying the e-commerce. Optional.
          in: query
          name: slug
          schema:
            type: string
        - description: >-
            The group of the e-commerce. Several e-commerces can have the same
            group. Optional.
          in: query
          name: group
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pb.ReturnProcessConditions'
          description: OK
      tags:
        - Settings
  /v1/configs/ecommerces/{ecommerce_id}/warehouses:
    get:
      description: endpoint for finding Warehouses by ecommerce id
      operationId: FindWarehousesByEcommerce
      parameters:
        - description: The id of the e-commerce. Optional.
          in: path
          name: ecommerce_id
          required: true
          schema:
            type: string
        - description: The path of an URL identifying the e-commerce. Optional.
          in: query
          name: slug
          schema:
            type: string
        - description: >-
            The group of the e-commerce. Several e-commerces can have the same
            group. Optional.
          in: query
          name: group
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pb.Warehouses'
          description: OK
      tags:
        - Settings
  /v1/public/returns/{ecommerce_id}/import_return:
    post:
      tags:
        - Processes
      summary: Create a return process
      description: >-
        Create a new return process using the order, email and items to be
        returned. 


        <u>Notes</u>:

        - Returns are unique: make sure a return doesn't exist for that
        line_item_id in the same order

        - Each portal has a unique ecommerce_id. Make sure you use a valid
        ecommerce_id. 

        - You'll need to add a valid return reason in the line_item_id (see
        details below)

        - The user preferred languaged will be used to define the
        communications' language with the shopper. The default language is
        english but can be overriden
      operationId: ImportReturn
      parameters:
        - name: ecommerce_id
          in: path
          description: >-
            ID of the ecommerce store where the return is being created. Each
            portal has a unique ecommerce_id (warranty, internal, in_store...)
          required: true
          schema:
            type: string
            example: ecommerce_id
      requestBody:
        description: Details of the return to be created.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/returns.ImportReturnRequest'
            example:
              customer_printed_order_id: ORDER-1001
              email: user@example.com
              line_items:
                - line_item_id: '9876543210987'
                  product_return_reason: NOT_AS_EXPECTED
                  quantity: 1
              user_preferred_lang: en
      responses:
        '200':
          description: OK - The return was created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/returns.ImportReturnResponse'
        '400':
          description: Bad Request - The request body is invalid.
        '401':
          description: Unauthorized - The API key is missing or invalid.
  /v1/ops/ecommerce/review:
    post:
      tags:
        - Processes
      summary: Review a return process
      description: >-
        Notify REVER when a return has been reviewed. Reviews must cover every
        line item of the process.


        <u>Notes</u>:

        - Reviews of a return process must be done in full; unreviewed items
        will block processing.

        - Each quantity of the line_item_id needs to have a review line (if
        there's multiple quantity for the same line_item_id, they need to go on
        different review lines within the reviews array)

        - If an expected item was not received, set status as `MISSING`.

        - Optionally override the refund amount with `refund_override`.
      operationId: SubmitProcessReviews
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/opspb.ReviewItemsGenericRequest'
            example:
              process_id: retp_38Fv8eXCCjU7cG0XnrZ2DaWDqzj
              reviews:
                - line_item_id: PD12341N32
                  status: DECLINED
                  timestamp: '2025-04-16T14:30:00Z'
                  user: warehouse-agent1@brand.com
                  reject_reason: The T-Shirt was used and broken
                - line_item_id: PD12341N32
                  status: APPROVED
                  timestamp: '2025-04-16T14:30:00Z'
                  user: warehouse-agent1@brand.com
                - line_item_id: LS87941L99
                  status: MISSING
                  timestamp: '2025-04-16T14:30:00Z'
                  user: warehouse-agent1@brand.com
              refund_override:
                amount:
                  amount: '1200'
                  currency_code: EUR
                reason: The order is partially broken
                requested: true
      responses:
        '200':
          description: OK - Reviews submitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/opspb.ReviewItemsResponse'
        '400':
          description: Bad Request - The request body is invalid.
        '401':
          description: Unauthorized - The API key is missing or invalid.
  /v1/processes/summaries:
    get:
      description: >-
        Returns a paginated list of return process summaries, with optional
        filters (order ID, status, customer email, order number).
      operationId: GetReturnSummaries
      parameters:
        - in: query
          name: page
          description: The page number to return
          schema:
            format: int32
            type: integer
        - in: query
          name: order_id
          description: >-
            The order ID to search for, this is the order ID from the e-commerce
            not the customer order ID
          schema:
            type: string
        - in: query
          name: status
          description: The status of the return process
          schema:
            type: string
        - in: query
          name: customer_email
          description: The email of the customer
          schema:
            type: string
        - in: query
          name: order_number
          description: >-
            The order number to search for, this is the order number the user
            received in their email
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pb.GetReturnSummariesResponse'
          description: OK
      tags:
        - Processes
  /v1/processes/ecommerce/{platform_process_id}:
    get:
      description: >-
        Get a Return Summary by the e-commerce platform process ID. Useful when
        the caller knows the platform's internal ID (e.g. Shopify/Shopware order
        or return ID) but not REVER's internal process ID.
      operationId: GetReturnSummaryByPlatform
      parameters:
        - description: The process ID assigned by the e-commerce platform.
          in: path
          name: platform_process_id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pb.GetReturnSummaryResponse'
          description: OK
      tags:
        - Processes
  /v1/processes/{process_id}:
    get:
      description: Get a Return Summary
      operationId: GetReturnSummary
      parameters:
        - in: path
          name: process_id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pb.GetReturnSummaryResponse'
          description: OK
      tags:
        - Processes
  /v1/processes/{process_id}/patch:
    patch:
      description: Updates a return process via a PATCH (updating only certain fields)
      operationId: PatchReturnProcess
      parameters:
        - description: ID of the process to be updated. Required.
          in: path
          name: process_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/pb.PatchReturnProcessRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pb.PatchReturnProcessResponse'
          description: OK
      tags:
        - Processes
  /v1/ops/mark_as_refunded_externally:
    post:
      description: >-
        Marks a return process as refunded externally (manual refund made
        outside the platform). Records the optional amount override and a
        required note explaining the reason.
      operationId: MarkAsRefundedExternally
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/opspb.MarkAsRefundedExternallyRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/opspb.MarkAsRefundedExternallyResponse'
          description: OK
      tags:
        - Processes
  /v1/processes/{process_id}/review:
    post:
      description: Adds a review (approve/decline/missing) to a given process
      operationId: AddReview
      parameters:
        - description: ID of the process in where the review is being added. Required.
          in: path
          name: process_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/pb.AddReviewRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pb.AddReviewResponse'
          description: OK
      tags:
        - Processes
  /v1/ops/update_lkss:
    post:
      description: >-
        Updates the Last Known Shipping Status (LKSS) of a return process based
        on logistics provider events.
      operationId: UpdateLKSS
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/opspb.UpdateLKSSRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/opspb.UpdateLKSSResponse'
          description: OK
      tags:
        - Logistics
  /v1/logistics/{process_id}/presigned_url_label:
    get:
      description: >-
        Returns a presigned URL to download the shipping label file associated
        with a return process.
      operationId: GetPresignedURLLabel
      parameters:
        - description: Id of the process to identify the label from
          in: path
          name: process_id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/logistics.GetPresignedURLLabelResponse'
          description: OK
      tags:
        - Logistics
  /v1/processes/{process_id}/logistics:
    get:
      description: Get the reverse delivery information of a Return Process
      operationId: GetReverseDeliveryInfo
      parameters:
        - in: path
          name: process_id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pb.GetLogisticsSummaryResponse'
          description: OK
      tags:
        - Logistics
    post:
      description: Updates the logistics fields associated to a given return process
      operationId: UpdateLogistics
      parameters:
        - description: The process ID to update. Required.
          in: path
          name: process_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/pb.UpdateLogisticsRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pb.UpdateLogisticsResponse'
          description: OK
      tags:
        - Processes
  /v1/logistics/pickup:
    post:
      description: |-
        Creates a pickup for a given process_id, customer and address
         A logistic order must be created prior requesting a pickup
          Must specify the provider and carrier to be used to create the pickup:
         - Returns UNIMPLEMENTED (gRPC code 12) if the provider is `OPS`,
         meaning it didn't generated any action. 
         - Returns InvalidArgument (gRPC code 3) if the combination of 
         `return-method`, `provider`and `carrier` is not supported.
      operationId: CreatePickup
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/logistics.CreatePickupRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/logistics.CreatePickupResponse'
          description: OK
      tags:
        - Logistics
  /v1/processes/{process_id}/documents:
    get:
      description: Returns all the documents uploaded for a given return process
      operationId: GetReturnDocuments
      parameters:
        - in: path
          name: process_id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pb.GetReturnDocumentsResponse'
          description: OK
      tags:
        - Processes
  /v1/ops/submit_authorization:
    post:
      description: >-
        Submits an authorization decision (approve or decline) for a return
        process. If declined, records the reason. Optionally accepts a refund
        override.
      operationId: SubmitAuthorization
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/opspb.SubmitAuthorizationRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/opspb.SubmitAuthorizationResponse'
          description: OK
      tags:
        - Processes
  /v1/processes/{process_id}/authorization_status:
    get:
      description: >-
        GetAuthorizationStatus returns the authorization status and details of a
        process
      operationId: GetAuthorizationStatus
      parameters:
        - in: path
          name: process_id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pb.GetAuthorizationStatusResponse'
          description: OK
      tags:
        - Processes
  /v1/logistics/orders:
    post:
      description: |-
        SaveManuallyCreatedLogisticOrder creates a logistic order associated
         to a given process_id, and saves the label file in the database
      operationId: SaveManuallyCreatedLogisticOrder
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/logistics.SaveManuallyCreatedLogisticOrderRequest
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/logistics.SaveLogisticOrderResponse'
          description: OK
      tags:
        - Logistics
    put:
      description: |-
        Creates a logistic order for a given process_id, customer and address.
         Must specify the provider and carrier to be used to create the pickup. 
         - Returns UNIMPLEMENTED (gRPC code 12) if the provider is `OPS`,
         meaning it didn't generated any action. 
         - Returns InvalidArgument (gRPC code 3) if the combination of 
         `return-method`, `provider`and `carrier` is not supported.
      operationId: CreateOrderV2
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/logistics.CreateLogisticOrderRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/logistics.SaveLogisticOrderResponse'
          description: OK
      tags:
        - Logistics
  /v1/configs/ecommerce/{ecommerce_id}:
    get:
      description: endpoint for finding Ecommerce model
      operationId: FindEcommerce
      parameters:
        - description: The id of the e-commerce.
          in: path
          name: ecommerce_id
          required: true
          schema:
            type: string
        - description: The path of an URL identifying the e-commerce. Optional.
          in: query
          name: slug
          schema:
            type: string
        - description: >-
            The group of the e-commerce. Several e-commerces can have the same
            group. Optional.
          in: query
          name: group
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pb.Ecommerce'
          description: OK
      tags:
        - Settings
  /v1/configs/warehouses/{id}:
    get:
      description: endpoint for finding Warehouse model
      operationId: FindWarehouse
      parameters:
        - description: ID
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pb.Warehouse'
          description: OK
      tags:
        - Settings
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
    API Key:
      type: apiKey
      in: header
      name: x-rever-api-key
  schemas:
    logistics.CreateLogisticOrderRequest:
      properties:
        carrier:
          description: |-
            Carrier to be used for generating the pickup (DHL, UPS, Correos...)
             kwown & available for the given provider
          type: string
        currency:
          description: Currency code (e.g. "EUR", "USD"). Falls back to EUR if empty.
          type: string
        customer:
          allOf:
            - $ref: '#/components/schemas/models.Customer'
          description: Customer personal data
        customer_address:
          allOf:
            - $ref: '#/components/schemas/models.Address'
          description: Origin address of the logistic order
        ecommerce_group:
          description: ecommerce group
          type: string
        ecommerce_id:
          description: Ecommerce associated to this logistic order
          type: string
        ecommerce_order_id:
          description: >-
            Id of the original ecommerce order (if any) associated to this
            shipping
          type: string
        ecommerce_warehouse_address:
          allOf:
            - $ref: '#/components/schemas/models.Address'
          description: destination address of the logistic order
        exchange_flow:
          description: |-
            Exchange flow of the return. Some carriers vary the label by this
             (e.g. CTT for Álvaro Moreno uses a different additional code on exchanges).
          enum:
            - NO_EXCHANGE_FLOW
            - OPEN
            - ONE_ON_ONE
            - OPEN_WITH_GIFT_CARD
            - FULL
          format: enum
          type: string
        legal_entity:
          allOf:
            - $ref: '#/components/schemas/logistics.LegalEntity'
          description: >-
            Legal entity info for customs/importerDetails (from analytics
            invoicing endpoint)
        line_items:
          description: Line items
          items:
            $ref: '#/components/schemas/logistics.LogisticsLineItem'
          type: array
        line_items_type:
          description: >-
            Line items type used for customs/product data generation for some
            providers (e.g. UPS).
             Example values:
             - "random": send a single aggregated product line instead of real items
             - "real": send one product per returned item
             If empty, providers fall back to their default behaviour.
          type: string
        order_number:
          description: |-
            Id of the original order (if any) associated to this shipping
             E-commerces uses this to match the original order when the
             package arrives to the warehouse
          type: string
        order_purchased_at:
          description: >-
            When the original order was purchased. Used to scope order lookups
            on
             platforms that don't key orders by the shop's order number (e.g. Monta
             colourfulrebel, resolved via a date-windowed Reference search).
          format: date-time
          type: string
        original_carriers:
          description: >-
            Carriers that shipped the original outbound order (used to flag
            same-carrier returns).
          items:
            type: string
          type: array
        original_trackings:
          description: Original tracking numbers
          type: string
        pickup_ranges:
          description: Pick-up time ranges. Only required for return_type = PICKUP
          items:
            enum:
              - NO_RANGE
              - RANGE_8_TO_12
              - RANGE_12_TO_16
              - RANGE_16_TO_20
            format: enum
            type: string
          type: array
        platform_process_id:
          description: >-
            Id of the return process in the source platform. Some carriers use
            it as
             the client reference on the label (e.g. CTT for Álvaro Moreno).
          type: string
        process_id:
          description: Id of the process that the pickup is associated to
          type: string
        provider:
          description: Provider to be used for generating the pickup (SendCloud, OPS, etc).
          type: string
        return_type:
          description: Return method associated to the logistic order (PICKUP, DROP_OFF)
          enum:
            - NO_RETURN_METHOD
            - HOME_PICK_UP
            - DROP_OFF_POINT
            - DELIVERY_PICKUP
            - IN_STORE
          format: enum
          type: string
        settings:
          allOf:
            - $ref: '#/components/schemas/logistics.LogisticSettings'
          description: deprecated
        vat_number:
          description: VAT Number
          type: string
        weight_in_grams:
          description: |-
            protolint:disable:next FIELD_NAMES_EXCLUDE_PREPOSITIONS
             Weight of the total sum of packags in grams
          format: int32
          type: integer
      type: object
    logistics.CreatePickupRequest:
      properties:
        carrier:
          description: |-
            Carrier to be used for generating the pickup (DHL, UPS, Correos...)
             must be available for the given provider
          type: string
        currency:
          description: Currency code of the declared value, e.g. "EUR"
          type: string
        customer:
          allOf:
            - $ref: '#/components/schemas/models.Customer'
          description: Customer personal data
        declared_value:
          description: Total declared value of the shipment in REVER money
          type: string
        ecommerce_id:
          description: Ecommerce associated to this logistic order
          type: string
        order_number:
          description: >-
            Order number shown to the customer, used as the carrier's own
            reference for
             the collect. Some carriers require it.
          type: string
        pickup_address:
          allOf:
            - $ref: '#/components/schemas/models.Address'
          description: Address where the package is going to be picked up
        pickup_ranges:
          description: Preferred times for the pickup a the customer address
          items:
            enum:
              - NO_RANGE
              - RANGE_8_TO_12
              - RANGE_12_TO_16
              - RANGE_16_TO_20
            format: enum
            type: string
          type: array
        process_id:
          description: Id of the process that the pickup is associated to
          type: string
        provider:
          description: Provider to be used for generating the pickup (SendCloud, OPS, etc).
          type: string
        repickup_attempt:
          description: |-
            Repickup attempt number. 0 means first pickup, >0 means repickup.
             Used to bypass duplicate-pickup guards for providers like GLS
             where a new collect code (tracking ID) is generated per pickup.
          format: int32
          type: integer
        settings:
          allOf:
            - $ref: '#/components/schemas/logistics.LogisticSettings'
          description: deprecated
      type: object
    logistics.CreatePickupResponse:
      description: Response of the CreatePickup method
      properties:
        pickup_order:
          allOf:
            - $ref: '#/components/schemas/logistics.PickupOrder'
          description: Pickup order created if any
      type: object
    logistics.GetPresignedURLLabelResponse:
      properties:
        url:
          description: URL to download the label file
          type: string
      type: object
    logistics.LogisticConfig:
      description: LogisticConfig is deprecated
      properties:
        carrier:
          description: carrier
          type: string
        provider:
          description: provider
          type: string
        service_id:
          description: |-
            Optional carrier-specific service id override from back office.
             When empty, logistics-api falls back to the carrier default service resolution.
          type: string
      type: object
    logistics.LogisticSettings:
      description: |-
        LogisticSettings is deprecated
         this message is going to be removed when
         the dynamic return methods are fully rolled out
      properties:
        logistic_config:
          description: protolint:disable:next REPEATED_FIELD_NAMES_PLURALIZED
          items:
            $ref: '#/components/schemas/logistics.LogisticConfig'
          type: array
        return_method:
          description: Return method associated to the logistic order (PICKUP, DROP_OFF)
          enum:
            - NO_RETURN_METHOD
            - HOME_PICK_UP
            - DROP_OFF_POINT
            - DELIVERY_PICKUP
            - IN_STORE
          format: enum
          type: string
      type: object
    logistics.ManualLogisticOrder:
      properties:
        carrier:
          description: >-
            Carrier within the provider that was used to generate the logistic
            order
             Example: DHL
          type: string
        from:
          allOf:
            - $ref: '#/components/schemas/models.Address'
          description: |-
            protolint:disable:next FIELD_NAMES_EXCLUDE_PREPOSITIONS
             Origin address of the logistic order
        process_id:
          description: Id of the process that the logistic order is associated to
          type: string
        provider:
          description: |-
            Provider that was used to generate the logistic order
             Example: OPS
          type: string
        return_method:
          description: Return method associated to the logistic order (PICKUP, DROP_OFF)
          enum:
            - NO_RETURN_METHOD
            - HOME_PICK_UP
            - DROP_OFF_POINT
            - DELIVERY_PICKUP
            - IN_STORE
          format: enum
          type: string
        to:
          allOf:
            - $ref: '#/components/schemas/models.Address'
          description: |-
            protolint:disable:next FIELD_NAMES_EXCLUDE_PREPOSITIONS
             Destination address of the logistic order
        tracking_id:
          description: Tracking ID that was generated for the logistic order
          type: string
        tracking_url:
          description: Tracking URL that was generated for the logistic order
          type: string
      type: object
    logistics.PickupOrder:
      description: A pickup order created in the system
      properties:
        carrier:
          description: Carrier that was used to geenrate the pickup
          type: string
        id:
          description: Platform specific id of the pickup
          type: string
        pickup_range:
          allOf:
            - $ref: '#/components/schemas/logistics.PickupRange'
          description: Pickup Range
        provider:
          description: Provider that was used to generate the pickup
          type: string
        tracking_url:
          description: |-
            Tracking URL for the pickup. Populated for providers like GLS where
             the pickup generates the tracking information.
          type: string
      type: object
    logistics.PickupRange:
      properties:
        from:
          description: Start time of the pickup range
          format: date-time
          type: string
        to:
          description: End time of the pickup range
          format: date-time
          type: string
      type: object
    logistics.SaveLogisticOrderResponse:
      properties:
        order:
          allOf:
            - $ref: '#/components/schemas/models.LogisticOrder'
          description: logistic order created
      type: object
    logistics.SaveManuallyCreatedLogisticOrderRequest:
      properties:
        label:
          description: The content of the label file, base64 encoded
          format: bytes
          type: string
        label_extension:
          description: |-
            The extension of the label file, just 3 letters
             Only "pdf", "png" and "jpg" are allowed
          type: string
        order:
          allOf:
            - $ref: '#/components/schemas/logistics.ManualLogisticOrder'
          description: The logistic order data with the process_id
      type: object
    models.Address:
      description: |-
        Address 
         @Description generic address used in many scenarios
         @name api.Address
      properties:
        address_line_1:
          type: string
        address_line_2:
          type: string
        city:
          type: string
        company:
          type: string
        country:
          type: string
        country_code:
          type: string
        email:
          type: string
        first_name:
          type: string
        last_name:
          type: string
        phone:
          type: string
        postcode:
          type: string
        rever_id:
          description: Unique ID in the rever platform
          type: string
        state_province:
          type: string
        state_province_code:
          type: string
      type: object
    models.Customer:
      description: |-
        Customer
         Important! the alias at the end is for API docs generation
         @Description A generic customer in the Rever platform
         @name api.Customer
      properties:
        email:
          type: string
        first_name:
          type: string
        last_name:
          type: string
        platform_customer_id:
          description: When available, this is the customer ID in the ecommerce platform
          type: string
        rever_id:
          description: Unique ID in the rever platform
          type: string
      type: object
    models.LogisticOrder:
      properties:
        carrier:
          type: string
        currency_code:
          type: string
        id:
          description: Logistic Order ID
          type: string
        original_carriers:
          description: Carriers that shipped the original outbound order.
          items:
            type: string
          type: array
        price:
          format: int32
          type: integer
        provider:
          type: string
        requires_customs:
          description: Whether the generated label was treated as a customs shipment.
          type: boolean
        same_carrier_as_original:
          description: >-
            Whether the return label's carrier matches the original outbound
            carrier(s) (strict 1:1).
          type: boolean
        shipments:
          items:
            $ref: '#/components/schemas/models.Shipment'
          type: array
      type: object
    models.Package:
      properties:
        id:
          type: string
        label:
          type: string
        shipment_id:
          type: string
        weight_in_grams:
          format: int32
          type: integer
      type: object
    models.Shipment:
      properties:
        created_at:
          format: date-time
          type: string
        delivery_date:
          format: date-time
          type: string
        from:
          $ref: '#/components/schemas/models.Address'
        id:
          type: string
        is_without_label:
          type: boolean
        logistic_order_id:
          type: string
        packages:
          items:
            $ref: '#/components/schemas/models.Package'
          type: array
        process_id:
          type: string
        shipment_type:
          enum:
            - NO_RETURN_METHOD
            - HOME_PICK_UP
            - DROP_OFF_POINT
            - DELIVERY_PICKUP
            - IN_STORE
          format: enum
          type: string
        status:
          type: string
        to:
          $ref: '#/components/schemas/models.Address'
        tracking_id:
          type: string
        tracking_url:
          type: string
        updated_at:
          format: date-time
          type: string
      type: object
    opspb.ItemReviewGeneric:
      properties:
        line_item_id:
          description: line item id
          type: string
        location_id:
          description: location id
          type: string
        reject_reason:
          description: reject reason
          type: string
        should_restock:
          description: should restock
          type: boolean
        sku:
          description: sku
          type: string
        status:
          description: status
          type: string
        timestamp:
          description: timestamp
          format: date-time
          type: string
        user:
          description: user
          type: string
      type: object
    opspb.MarkAsRefundedExternallyRequest:
      properties:
        amount_override:
          allOf:
            - $ref: '#/components/schemas/opspb.OpsMoney'
          description: >-
            Optional: override the refund amount (if not provided, uses pending
            amount)
        note:
          description: Note explaining the reason for the manual refund
          type: string
        process_id:
          description: Process ID to mark as refunded
          type: string
      required:
        - process_id
        - note
      type: object
    opspb.MarkAsRefundedExternallyResponse:
      type: object
    opspb.OpsMoney:
      properties:
        amount:
          type: string
        currency_code:
          type: string
      type: object
    opspb.RefundOverride:
      properties:
        amount:
          $ref: '#/components/schemas/opspb.OpsMoney'
        reason:
          type: string
        requested:
          type: boolean
      type: object
    opspb.ReviewItemsGenericRequest:
      properties:
        override_authorization:
          description: >-
            when true, authorization approval is executed before processing the
            review
          type: boolean
        platform_process_id:
          description: process id, deprecated
          type: string
        process_id:
          description: process id
          type: string
        refund_override:
          allOf:
            - $ref: '#/components/schemas/opspb.RefundOverrideGeneric'
          description: optional refund override
        reviews:
          description: reviews to be processed
          items:
            $ref: '#/components/schemas/opspb.ItemReviewGeneric'
          type: array
      type: object
    opspb.ReviewItemsResponse:
      type: object
    opspb.SubmitAuthorizationRequest:
      properties:
        authorized:
          type: boolean
        process_id:
          type: string
        refund_override:
          $ref: '#/components/schemas/opspb.RefundOverride'
        unauthorized_reason:
          type: string
        user:
          type: string
      type: object
    opspb.SubmitAuthorizationResponse:
      type: object
    opspb.UpdateLKSSRequest:
      properties:
        lkss:
          enum:
            - NO_SHIPPING_STATUS
            - CREATED
            - COLLECTED
            - IN_WAREHOUSE
            - ERROR
            - CANCELED
          format: enum
          type: string
        process_id:
          type: string
        process_platform_id:
          type: string
      type: object
    opspb.UpdateLKSSResponse:
      type: object
    pb.ActionConfig:
      description: ActionConfig
      properties:
        name:
          description: Name
          type: string
        timing:
          description: Timing
          type: string
        whens:
          description: Whens
          items:
            type: string
          type: array
      type: object
    pb.AddReviewRequest:
      properties:
        process_id:
          description: ID of the process in where the review is being added. Required.
          type: string
        refund_override:
          allOf:
            - $ref: '#/components/schemas/pb.RefundOverride'
          description: Refund override
        reviews:
          description: Review data. Required.
          items:
            $ref: '#/components/schemas/pb.ReviewLineItem'
          type: array
      type: object
    pb.AddReviewResponse:
      type: object
    pb.BankTransferCompensation:
      properties:
        refunds:
          items:
            $ref: '#/components/schemas/pb.BankTransferRefund'
          type: array
        summary:
          $ref: '#/components/schemas/pb.CompensationSummary'
      type: object
    pb.BankTransferRefund:
      properties:
        amount:
          $ref: '#/components/schemas/pb.MoneyBag'
        created_at:
          format: date-time
          type: string
      type: object
    pb.BasicProcessData:
      properties:
        customer_printed_order_id:
          description: |-
            Customer printed order ID
             Deprecated: Use order_name instead
          type: string
        ecommerce_group:
          description: Ecommerce Group
          type: string
        ecommerce_id:
          description: Ecommerce ID
          type: string
        is_lite:
          description: IsLite
          type: boolean
        is_testing:
          description: Flag for a test process
          type: boolean
        order_id:
          description: Order ID
          type: string
        order_name:
          description: Order name
          type: string
        order_purchased_at:
          description: Order Purchase Date
          format: date-time
          type: string
        platform:
          description: Platform
          enum:
            - MOCK
            - WOOCOMMERCE
            - SHOPIFY
            - CUSTOM_GENERIC
            - PRESTASHOP
            - MAGENTO_V1
            - MAGENTO_V2
            - SALESFORCE
            - INDITEX
            - SHOPWARE
            - CUSTOM_INTEGRATION_V2
          format: enum
          type: string
        platform_process_id:
          description: Platform process ID
          type: string
        process_id:
          description: Process ID
          type: string
        started_at:
          description: Started at
          format: date-time
          type: string
        warehouse_id:
          description: Warehouse ID
          type: string
      type: object
    pb.Branding:
      description: Branding model
      properties:
        background_image_url:
          description: BackgroundImageUrl
          type: string
        background_text_color:
          description: BackgroundTextColor
          type: string
        border_radius:
          description: BorderRadius
          type: string
        ecommerce_id:
          description: EcommerceID
          type: string
        favicon_url:
          description: FaviconUrl
          type: string
        full_catalog_product_image_ratio:
          description: FullCatalogProductImageRatio
          type: string
        input_variant:
          description: InputVariant
          type: string
        layout_design_values:
          description: LayoutDesignValues
          enum:
            - DEFAULT
            - VERTICAL
            - SIMPLIFIED
          format: enum
          type: string
        logo_height_desktop:
          description: LogoHeightDesktop
          type: string
        logo_height_mobile:
          description: LogoHeightMobile
          type: string
        logo_url:
          description: LogoUrl
          type: string
        mail_logo_url:
          description: MailLogoUrl
          type: string
        mail_main_color:
          description: MailMainColor
          type: string
        persistent_logo_type:
          description: PersistentLogoType
          enum:
            - PERSISTENT_LOGO_TYPE_UNSPECIFIED
            - PERSISTENT_LOGO_TYPE_ENABLED
            - PERSISTENT_LOGO_TYPE_DISABLED
          format: enum
          type: string
        primary_theme_color_contrast_text:
          description: PrimaryThemeColorContrastText
          type: string
        primary_theme_color_dark:
          description: PrimaryThemeColorDark
          type: string
        primary_theme_color_light:
          description: PrimaryThemeColorLight
          type: string
        primary_theme_color_main:
          description: PrimaryThemeColorMain
          type: string
        secondary_theme_color_contrast_text:
          description: SecondaryThemeColorContrastText
          type: string
        secondary_theme_color_dark:
          description: SecondaryThemeColorDark
          type: string
        secondary_theme_color_light:
          description: SecondaryThemeColorLight
          type: string
        secondary_theme_color_main:
          description: SecondaryThemeColorMain
          type: string
        slogan:
          description: Slogan
          type: string
        title:
          description: Title
          type: string
      type: object
    pb.Compensation:
      properties:
        bank_transfer:
          $ref: '#/components/schemas/pb.BankTransferCompensation'
        compensation_status_summary:
          $ref: '#/components/schemas/pb.Compensation_StatusSummary'
        editable_refund_amount:
          $ref: '#/components/schemas/pb.Compensation_EditableRefundAmount'
        exchange:
          $ref: '#/components/schemas/pb.ExchangeCompensation'
        gift_card:
          $ref: '#/components/schemas/pb.GiftCardCompensation'
        original_payment_method:
          $ref: '#/components/schemas/pb.OriginalPaymentMethodCompensation'
        promocode:
          $ref: '#/components/schemas/pb.PromocodeCompensation'
      type: object
    pb.Compensation_EditableRefundAmount:
      properties:
        is_refund_amount_editable:
          type: boolean
        maximum_refundable_amount:
          $ref: '#/components/schemas/pb.MoneyBag'
      type: object
    pb.CompensationSummary:
      properties:
        adjusted_commitment:
          $ref: '#/components/schemas/pb.MoneyBag'
        adjustment_reason:
          description: Deprecated, use adjustments_list instead.
          type: string
        adjustments:
          allOf:
            - $ref: '#/components/schemas/pb.MoneyBag'
          description: Deprecated, use adjustments_list instead.
        adjustments_list:
          items:
            $ref: '#/components/schemas/pb.Adjustment'
          type: array
        executed:
          $ref: '#/components/schemas/pb.MoneyBag'
        initial_commitment:
          $ref: '#/components/schemas/pb.MoneyBag'
        timing:
          enum:
            - TIMING_UNSPECIFIED
            - TIMING_NO_TIMING
            - TIMING_ON_START
            - TIMING_ON_SENT
            - TIMING_ON_VERIFIED
          format: enum
          type: string
      type: object
    pb.Customer_Address:
      properties:
        address_line_1:
          type: string
        address_line_2:
          type: string
        city:
          type: string
        country_code:
          type: string
        phone:
          type: string
        postal_code:
          type: string
      type: object
    pb.Ecommerce:
      description: Ecommerce model
      properties:
        are_partial_reviews_allowed:
          description: >-
            Allows incrementally reviewing the line items of a process, that is,
            does
             not require to bring all of the line items at once
          type: boolean
        currency_code:
          description: CurrencyCode
          type: string
        ecommerce_id:
          description: EcommerceID
          type: string
        email_provider:
          description: EmailProvider
          enum:
            - EMAIL_PROVIDER_UNSPECIFIED
            - EMAIL_PROVIDER_AWS_SES
            - EMAIL_PROVIDER_INDITEX
          format: enum
          type: string
        external_return_policy_url:
          description: external policy url
          type: string
        group:
          description: Group
          type: string
        identification_flow:
          description: How shoppers identify their orders
          enum:
            - IDENTIFICATION_FLOW_UNSPECIFIED
            - ORDER_ID_AND_EMAIL
            - ORDER_ID_AND_POSTAL_CODE
          format: enum
          type: string
        is_enabled:
          description: IsEnabled
          type: boolean
        is_testing:
          description: IsTesting
          type: boolean
        mark_unreviewed_items_as_missing:
          description: >-
            When a review brings fewer line items than expected, treat every
            unit not
             present in the review as MISSING instead of rejecting the review
          type: boolean
        name:
          description: name
          type: string
        orders_sync_disabled:
          description: OrdersSyncDisabled
          type: boolean
        platform:
          description: Platform
          type: string
        restocking_enabled:
          description: RestockingEnabled
          type: boolean
        slug:
          description: slug
          type: string
        store_id:
          description: StoreID
          type: string
        use_case:
          description: UseCase
          type: string
        website_url:
          description: WebsiteURL
          type: string
      type: object
    pb.ExchangeCompensation:
      properties:
        exchange_order:
          $ref: '#/components/schemas/pb.ExchangeOrder'
        summary:
          $ref: '#/components/schemas/pb.CompensationSummary'
      type: object
    pb.ExchangeConditions:
      description: ExchangeConditions model
      properties:
        ecommerce_id:
          description: EcommerceID
          type: string
        exchange_flow:
          description: exchange flow
          enum:
            - NO_EXCHANGE_FLOW
            - OPEN
            - ONE_ON_ONE
            - OPEN_WITH_GIFT_CARD
            - FULL
          format: enum
          type: string
        platform_main_menu_id:
          description: PlatformMainMenuID
          type: string
        threshold:
          description: Threshold
          format: int32
          type: integer
      type: object
    pb.ExchangeOrder:
      properties:
        amount:
          $ref: '#/components/schemas/pb.MoneyBag'
        created_at:
          format: date-time
          type: string
        navigation:
          allOf:
            - $ref: '#/components/schemas/pb.ExchangeOrder_Navigation'
          description: Navigation links for the exchange order.
        order_number:
          type: string
      type: object
    pb.ExchangeOrderWithEcommerce:
      description: ExchangeOrder model
      properties:
        ecommerce_id:
          description: EcommerceID
          type: string
        payment_method:
          description: PaymentMethod
          type: string
        price:
          description: Price
          type: string
        shipping_line:
          description: ShippingLine
          type: string
      type: object
    pb.ExtraLineItem:
      properties:
        total:
          $ref: '#/components/schemas/pb.MoneyBag'
        type:
          enum:
            - TYPE_UNSPECIFIED
            - TYPE_RETURN_SHIPPING_COST
            - TYPE_ORIGINAL_SHIPPING_REFUND
            - TYPE_KEEP_YOUR_ITEM
            - TYPE_RDV_SURPLUS
            - TYPE_SERVICE_FEE
            - TYPE_ORIGINAL_PROMOTION_BROKEN
            - TYPE_EXCHANGE_PROMOTION
            - TYPE_INSTANT_EXCHANGE
            - TYPE_FREE_RETURN_PROMOTION
            - TYPE_RETURN_SHIPPING_TAX
          format: enum
          type: string
      type: object
    pb.ExtraLineItems:
      properties:
        extra_line_items:
          items:
            $ref: '#/components/schemas/pb.ExtraLineItem'
          type: array
        total:
          $ref: '#/components/schemas/pb.MoneyBag'
      type: object
    pb.FindRefundConfigurationResponse:
      description: FindRefundConfigurationResponse
      properties:
        action_configs:
          description: ActionConfig
          items:
            $ref: '#/components/schemas/pb.ActionConfig'
          type: array
        carry_over_automatic_discounts_on_exchanges:
          description: carry_over_automatic_discounts_on_exchanges
          type: boolean
        ecommerce_id:
          description: ecommerce id
          type: string
        payment_method_configs:
          description: PaymentMethodConfig
          items:
            $ref: '#/components/schemas/pb.PaymentMethodConfig'
          type: array
        revoke_conditional_discounts:
          description: revoke_conditional_discounts
          type: boolean
        round_promocode:
          description: round_promocode
          type: boolean
      type: object
    pb.GetAuthorizationStatusResponse:
      properties:
        authorization_details:
          $ref: >-
            #/components/schemas/pb.GetAuthorizationStatusResponse_AuthorizationDetails
        authorization_status:
          enum:
            - AUTHORIZATION_STATUS_UNSPECIFIED
            - AUTHORIZATION_STATUS_AUTHORIZATION_PENDING
            - AUTHORIZATION_STATUS_DOCUMENT_UPLOAD_PENDING
            - AUTHORIZATION_STATUS_AUTHORIZED
            - AUTHORIZATION_STATUS_NOT_AUTHORIZED
            - AUTHORIZATION_STATUS_NO_AUTHORIZATION_REQUIRED
          format: enum
          type: string
        unauthorization_details:
          $ref: >-
            #/components/schemas/pb.GetAuthorizationStatusResponse_UnauthorizationDetails
      type: object
    pb.GetAuthorizationStatusResponse_AuthorizationDetails:
      properties:
        refund_override_amount:
          $ref: '#/components/schemas/pb.Money'
        refund_override_reason:
          type: string
        user:
          type: string
      type: object
    pb.GetAuthorizationStatusResponse_UnauthorizationDetails:
      properties:
        reason:
          type: string
        user:
          type: string
      type: object
    pb.GetLogisticsSummaryResponse:
      properties:
        logistics_summary:
          $ref: '#/components/schemas/pb.LogisticsSummary'
      type: object
    pb.GetReturnDocumentsResponse:
      properties:
        documents:
          items:
            $ref: '#/components/schemas/pb.GetReturnDocumentsResponse_Document'
          type: array
      type: object
    pb.GetReturnDocumentsResponse_Document:
      properties:
        document_information:
          type: string
        document_url:
          type: string
      type: object
    pb.GetReturnSummariesResponse:
      properties:
        pagination:
          $ref: '#/components/schemas/pb.Pagination'
        return_summaries:
          items:
            $ref: '#/components/schemas/pb.ReturnSummary'
          type: array
      type: object
    pb.GetReturnSummaryResponse:
      properties:
        return_summary:
          $ref: '#/components/schemas/pb.ReturnSummary'
      type: object
    pb.GiftCard:
      properties:
        amount:
          $ref: '#/components/schemas/pb.MoneyBag'
        code:
          type: string
        created_at:
          format: date-time
          type: string
      type: object
    pb.GiftCardCompensation:
      properties:
        gift_card:
          $ref: '#/components/schemas/pb.GiftCard'
        summary:
          $ref: '#/components/schemas/pb.CompensationSummary'
      type: object
    pb.KeepYourItem:
      description: KeepYourItem
      properties:
        enabled:
          description: enabled
          type: boolean
        options:
          description: options
          items:
            $ref: '#/components/schemas/pb.KeepYourItemOptions'
          type: array
      type: object
    pb.KeepYourItemOptions:
      description: KeepYourItemOption request
      properties:
        force_keep_your_item:
          description: ForceKeepYourItem
          type: boolean
        refund_percentage:
          description: refund percentage
          format: float
          type: number
        whens:
          description: when
          items:
            type: string
          type: array
      type: object
    pb.LogisticSetting:
      description: LogisticSetting model
      properties:
        delivery_note_type:
          description: DeliveryNoteType
          type: string
        ecommerce_id:
          description: EcommerceID
          type: string
        reminder_flow:
          description: ReminderFlow
          type: string
        return_logistics:
          description: ReturnLogistics
          items:
            $ref: '#/components/schemas/pb.ReturnLogistics'
          type: array
        store_list_url:
          description: StoreListUrl
          type: string
      type: object
    pb.LogisticsSummary:
      properties:
        carrier:
          type: string
        pickup_address:
          allOf:
            - $ref: '#/components/schemas/models.Address'
          description: >-
            Address the customer set for the return to be picked up from; unset
            for non-pickup methods.
        pickup_reference:
          description: >-
            Carrier reference of the latest scheduled pickup (e.g. UPS Pickup
            Reference Number); empty if none.
          type: string
        pickups_scheduled:
          type: string
        return_method:
          enum:
            - RETURN_METHOD_UNSPECIFIED
            - RETURN_METHOD_NO_RETURN_METHOD
            - RETURN_METHOD_PICK_UP
            - RETURN_METHOD_DROP_OFF
            - RETURN_METHOD_DELIVERY_PICKUP
            - RETURN_METHOD_IN_STORE
          format: enum
          type: string
        status:
          enum:
            - STATUS_UNSPECIFIED
            - STATUS_NO_SHIPPING_STATUS
            - STATUS_CREATED
            - STATUS_COLLECTED
            - STATUS_IN_WAREHOUSE
            - STATUS_CANCELED
          format: enum
          type: string
        tracking_id:
          type: string
        tracking_url:
          type: string
        warehouse:
          allOf:
            - $ref: '#/components/schemas/pb.LogisticsSummary_Warehouse'
          description: >-
            Warehouse the return is routed to; unset when the process has no
            warehouse assigned.
      type: object
    pb.Money:
      properties:
        amount:
          type: string
        currency_code:
          type: string
      type: object
    pb.MoneyBag:
      properties:
        presentment_money:
          $ref: '#/components/schemas/pb.Money'
      type: object
    pb.OpenExchangeItem:
      properties:
        product_name:
          type: string
        quantity:
          format: int32
          type: integer
        total:
          $ref: '#/components/schemas/pb.MoneyBag'
      type: object
    pb.OpenExchangeItems:
      properties:
        open_exchange_items:
          items:
            $ref: '#/components/schemas/pb.OpenExchangeItem'
          type: array
        total:
          $ref: '#/components/schemas/pb.MoneyBag'
      type: object
    pb.OrderedItem:
      properties:
        image_url:
          type: string
        product_id:
          type: string
        product_name:
          type: string
        quantity:
          format: int32
          type: integer
        total:
          $ref: '#/components/schemas/pb.MoneyBag'
        variant_id:
          type: string
        variant_name:
          type: string
      type: object
    pb.OrderedItems:
      properties:
        ordered_items:
          items:
            $ref: '#/components/schemas/pb.OrderedItem'
          type: array
        total:
          $ref: '#/components/schemas/pb.MoneyBag'
      type: object
    pb.OriginalPaymentMethodCompensation:
      properties:
        bt_fallback_triggered:
          type: boolean
        refunds:
          items:
            $ref: '#/components/schemas/pb.OriginalPaymentMethodRefund'
          type: array
        summary:
          $ref: '#/components/schemas/pb.CompensationSummary'
      type: object
    pb.OriginalPaymentMethodRefund:
      properties:
        amount:
          $ref: '#/components/schemas/pb.MoneyBag'
        created_at:
          format: date-time
          type: string
      type: object
    pb.Pagination:
      properties:
        current_page:
          format: int32
          type: integer
        page_size:
          format: int32
          type: integer
        total_pages:
          format: int32
          type: integer
      type: object
    pb.PatchReturnProcessRequest:
      description: Payload for updating a return process via PATCH
      properties:
        patch:
          description: Preferred. map[string]interface{} as a json string
          type: string
        process_id:
          description: ID of the process to be updated. Required.
          type: string
        return_process_patch:
          allOf:
            - $ref: '#/components/schemas/google.protobuf.Any'
          description: 'Deprecated: use patch instead'
        user:
          description: User doing the patch
          type: string
      type: object
    pb.PatchReturnProcessResponse:
      properties:
        new_last_known_shipping_status:
          description: value of the field `last_known_shipping_status` after the update
          enum:
            - NO_SHIPPING_STATUS
            - CREATED
            - COLLECTED
            - IN_WAREHOUSE
            - ERROR
            - CANCELED
          format: enum
          type: string
        previous_last_known_shipping_status:
          description: value of the field `last_known_shipping_status` before the update
          enum:
            - NO_SHIPPING_STATUS
            - CREATED
            - COLLECTED
            - IN_WAREHOUSE
            - ERROR
            - CANCELED
          format: enum
          type: string
      type: object
    pb.PayForLogistics:
      description: PayForLogistics request
      properties:
        always:
          description: always
          type: boolean
        options:
          description: options
          items:
            $ref: '#/components/schemas/pb.PayForLogisticsOption'
          type: array
      type: object
    pb.PayForLogisticsOption:
      description: request to know if we should pay for logistics
      properties:
        whens:
          description: when
          items:
            type: string
          type: array
      type: object
    pb.PaymentMethodConfig:
      description: PaymentMethodConfig
      properties:
        name:
          description: Name
          type: string
        timing:
          description: Timing
          type: string
        whens:
          description: Whens
          items:
            type: string
          type: array
      type: object
    pb.Promocode:
      properties:
        amount:
          $ref: '#/components/schemas/pb.MoneyBag'
        code:
          type: string
        created_at:
          format: date-time
          type: string
      type: object
    pb.PromocodeCompensation:
      properties:
        amount:
          $ref: '#/components/schemas/pb.MoneyBag'
        promocode:
          $ref: '#/components/schemas/pb.Promocode'
        summary:
          $ref: '#/components/schemas/pb.CompensationSummary'
      type: object
    pb.RefundOverride:
      properties:
        amount:
          $ref: '#/components/schemas/pb.Money'
        reason:
          type: string
        requested:
          type: boolean
      type: object
    pb.RequireAuthorization:
      description: require authorization request
      properties:
        always:
          description: always
          type: boolean
        options:
          description: options
          items:
            $ref: '#/components/schemas/pb.RequireAuthorizationOption'
          type: array
      type: object
    pb.RequireAuthorizationOption:
      description: RequireAuthorizationOption request
      properties:
        whens:
          description: when
          items:
            type: string
          type: array
      type: object
    pb.ReturnLogistics:
      description: |-
        Return logistics configures a way for the users
         to return the products to the e-commerce
      properties:
        carrier:
          description: |-
            carrier that is effectively handling the return
             Example: CorreosExpress, Correos, etc
          type: string
        provider:
          description: >-
            provider is the platform that manages the creation of the return
            label
             Example: Sendcloud, OPS, etc
             Important: the value `OPS` means that the REVER ops team manages 
             the creation of the return label
          type: string
        return_method:
          description: 'type of return method: DROP_OFF, PICKUP...'
          enum:
            - NO_RETURN_METHOD
            - HOME_PICK_UP
            - DROP_OFF_POINT
            - DELIVERY_PICKUP
            - IN_STORE
          format: enum
          type: string
        service_id:
          description: >-
            Optional carrier service id used by provider integrations (e.g.
            Sendcloud shipment.id)
             When empty provider-specific default service resolution is used.
          type: string
        when:
          description: >-
            list of dynamic evaluations to determine if this logistics is
            available
             They are evaluated in order, and all of them must be true to evaluate 
             together as true (AND condition)
             IF not specified, is considered as true always
             protolint:disable:next REPEATED_FIELD_NAMES_PLURALIZED
          items:
            type: string
          type: array
      type: object
    pb.ReturnProcessConditions:
      description: ReturnConditions model
      properties:
        ecommerce_id:
          description: EcommerceID
          type: string
        keep_your_item:
          allOf:
            - $ref: '#/components/schemas/pb.KeepYourItem'
          description: Keep your item
        max_days_to_send_package:
          description: MaxDaysToSendPackage
          format: int32
          type: integer
        non_returnable_brand_ids:
          description: NonReturnableBrandIds
          items:
            type: string
          type: array
        non_returnable_category_ids:
          description: NonReturnableCategoryIds
          items:
            type: string
          type: array
        non_returnable_collection_ids:
          description: NonReturnableCollectionIds
          items:
            type: string
          type: array
        non_returnable_order_tag_ids:
          description: NonReturnableOrderTagIds
          items:
            type: string
          type: array
        non_returnable_product_ids:
          description: NonReturnableProductIds
          items:
            type: string
          type: array
        non_returnable_tag_ids:
          description: NonReturnableTagIds
          items:
            type: string
          type: array
        pay_for_logistics:
          allOf:
            - $ref: '#/components/schemas/pb.PayForLogistics'
          description: PayForLogistics
        payments_enabled:
          description: PaymentsEnabled
          type: boolean
        require_authorization:
          allOf:
            - $ref: '#/components/schemas/pb.RequireAuthorization'
          description: RequireAuthorization
        return_period_days:
          description: ReturnPeriodDays
          format: int32
          type: integer
        review_auto_complete_days:
          description: >-
            Days to wait after the parcel reaches the warehouse before
            auto-completing a
             MANUAL-review process with no review, marking unreviewed items as MISSING.
             0 disables auto-completion (the process waits indefinitely for a review).
          format: int32
          type: integer
        review_flow:
          description: ReviewFlow
          type: string
        skip_fraud_detection:
          description: SkipFraudDetection
          type: boolean
        skip_workflow_activities:
          description: >-
            List of workflow activities to skip (e.g., "GenerateLogisticOrder",
            "SendACKEmail")
             protolint:disable:next REPEATED_FIELD_NAMES_PLURALIZED
          items:
            type: string
          type: array
        start_return_on_platform_time:
          description: StartReturnOnPlatformTime
          enum:
            - START_RETURN_ON_PLATFORM_TIME_UNSPECIFIED
            - START_RETURN_ON_PLATFORM_TIME_ON_START
            - START_RETURN_ON_PLATFORM_TIME_ON_ITEM_VERIFICATION
            - START_RETURN_ON_PLATFORM_TIME_NEVER
          format: enum
          type: string
        upload_documents:
          allOf:
            - $ref: '#/components/schemas/pb.UploadDocuments'
          description: UploadDocuments
      type: object
    pb.ReturnSummary:
      properties:
        basic_process_data:
          $ref: '#/components/schemas/pb.BasicProcessData'
        checkout_id:
          type: string
        compensation:
          $ref: '#/components/schemas/pb.Compensation'
        currency_code:
          type: string
        customer:
          $ref: '#/components/schemas/pb.ReturnSummary_Customer'
        exchange_timing:
          enum:
            - TIMING_UNSPECIFIED
            - TIMING_NO_TIMING
            - TIMING_ON_START
            - TIMING_ON_SENT
            - TIMING_ON_VERIFIED
          format: enum
          type: string
        extra_line_items:
          $ref: '#/components/schemas/pb.ExtraLineItems'
        is_claim:
          description: >-
            True when a Worry-Free-Purchase claim exists for this return
            process.
          type: boolean
        keep_your_item_type:
          enum:
            - KEEP_YOUR_ITEM_TYPE_UNSPECIFIED
            - KEEP_YOUR_ITEM_TYPE_NONE
            - KEEP_YOUR_ITEM_TYPE_WITHOUT_VALIDATION
          format: enum
          type: string
        navigation:
          allOf:
            - $ref: '#/components/schemas/pb.ReturnSummary_Navigation'
          description: >-
            Navigation links for the original order (admin UI today, more in the
            future).
             Unset when navigation could not be fetched (upstream ecommerce-api error
             or the return process is missing order/ecommerce identifiers); the summary
             itself never fails because of this enrichment. When set but the underlying
             URL is an empty string, the platform is supported but did not provide a
             value for that link.
        open_exchange_items:
          $ref: '#/components/schemas/pb.OpenExchangeItems'
        ordered_items:
          $ref: '#/components/schemas/pb.OrderedItems'
        payments:
          $ref: '#/components/schemas/pb.ReturnSummary_Payments'
        refund_payment_method:
          description: |-
            Payment method chosen by the user when creating the return process. 
             Other payment methods can be added afterwards
          enum:
            - REFUND_PAYMENT_METHOD_UNSPECIFIED
            - REFUND_PAYMENT_METHOD_NO_PAYMENT_METHOD
            - REFUND_PAYMENT_METHOD_BANK_TRANSFER
            - REFUND_PAYMENT_METHOD_ORIGINAL
            - REFUND_PAYMENT_METHOD_PROMO_CODE
            - REFUND_PAYMENT_METHOD_GIFT_CARD
          format: enum
          type: string
        refund_timing:
          description: >-
            Refund timing committed to the user when creating the return
            process. 
             If other payment methods are added afterwards, the timing for them can vary
          enum:
            - TIMING_UNSPECIFIED
            - TIMING_NO_TIMING
            - TIMING_ON_START
            - TIMING_ON_SENT
            - TIMING_ON_VERIFIED
          format: enum
          type: string
        returned_items:
          $ref: '#/components/schemas/pb.ReturnedItems'
        start_return_on_platform_time:
          type: string
        status:
          enum:
            - RETURN_PROCESS_STATUS_UNSPECIFIED
            - RETURN_PROCESS_STATUS_STARTED
            - RETURN_PROCESS_STATUS_COLLECTED
            - RETURN_PROCESS_STATUS_REVIEW_REQUIRED
            - RETURN_PROCESS_STATUS_COMPLETED
            - RETURN_PROCESS_STATUS_CANCELED
            - RETURN_PROCESS_STATUS_AUTHORIZATION_PENDING
            - RETURN_PROCESS_STATUS_DOCUMENT_UPLOAD_PENDING
            - RETURN_PROCESS_STATUS_NOT_AUTHORIZED
          format: enum
          type: string
        upload_documents_info:
          $ref: '#/components/schemas/pb.ReturnSummary_UploadDocumentsInfo'
      type: object
    pb.ReturnSummary_Customer:
      properties:
        address:
          $ref: '#/components/schemas/pb.Customer_Address'
        email:
          type: string
        first_name:
          type: string
        last_name:
          type: string
        preferred_language:
          description: User preferred language
          type: string
      type: object
    pb.ReturnSummary_Payments:
      properties:
        commitment:
          $ref: '#/components/schemas/pb.MoneyBag'
        executed:
          $ref: '#/components/schemas/pb.MoneyBag'
      type: object
    pb.ReturnSummary_UploadDocumentsInfo:
      properties:
        upload_documents_enabled:
          type: boolean
        uploaded_documents:
          items:
            $ref: '#/components/schemas/pb.UploadDocumentsInfo_UploadedDocuments'
          type: array
      type: object
    pb.ReturnedItem:
      properties:
        action:
          enum:
            - ACTION_UNSPECIFIED
            - ACTION_REFUND
            - ACTION_EXCHANGE
          format: enum
          type: string
        platform_line_item_id:
          type: string
        product_info:
          $ref: '#/components/schemas/pb.ReturnedItem_ProductInfo'
        quantity:
          format: int32
          type: integer
        return_reason_comment:
          type: string
        return_reason_key:
          type: string
        rever_id:
          type: string
        total:
          $ref: '#/components/schemas/pb.MoneyBag'
        unit_price:
          allOf:
            - $ref: '#/components/schemas/pb.MoneyBag'
          description: UnitPrice includes taxes and discounts. It is total/quantity
      type: object
    pb.ReturnedItem_ProductInfo:
      properties:
        image_url:
          type: string
        product_id:
          type: string
        product_name:
          type: string
        product_reference:
          type: string
        sku:
          type: string
        variant_ean:
          type: string
        variant_id:
          type: string
        variant_name:
          type: string
        variant_reference:
          type: string
      type: object
    pb.ReturnedItems:
      properties:
        returned_items:
          items:
            $ref: '#/components/schemas/pb.ReturnedItem'
          type: array
        total:
          $ref: '#/components/schemas/pb.MoneyBag'
      type: object
    pb.ReviewLineItem:
      properties:
        created_by_user:
          description: |-
            User that performed the review. Required.
             TODO: should be created_by
             protolint:disable:next FIELD_NAMES_EXCLUDE_PREPOSITIONS
          type: string
        line_item_id:
          description: |-
            REVER ID of the line item of the return process (return items)
             to be reviewed. Required.
          type: string
        reject_reason:
          description: Reason for rejecting the line item. Required if status == REJECTED
          type: string
        show_reject_reason:
          description: Should show reject reason to the user
          type: boolean
        status:
          description: |-
            Review status. Required.
             TODO: valid values??
          type: string
      type: object
    pb.UpdateLogisticsRequest:
      description: Payload for updating the logistics fields of a given return process
      properties:
        process_id:
          description: The process ID to update. Required.
          type: string
        user:
          description: The user that performed the update. Required.
          type: string
        user_selected_carrier:
          description: |-
            The new logistics carrier of the process.
             It's used by the process to request the creation to the provider
             of the shipping order using his carrier
             If it's already created, has no effect.
             Required.
          type: string
        user_selected_provider:
          description: |-
            The new logistics provider of the process.
             It's used by the process to request the creation of the shipping
             order to this provider. If it's already created, has no effect.
             Required.
          type: string
      type: object
    pb.UpdateLogisticsResponse:
      type: object
    pb.UploadDocuments:
      description: UploadDocuments request
      properties:
        always:
          description: always
          type: boolean
        options:
          description: options
          items:
            $ref: '#/components/schemas/pb.UploadDocumentsOption'
          type: array
      type: object
    pb.UploadDocumentsInfo_UploadedDocuments:
      properties:
        document_info:
          type: string
        document_url:
          type: string
      type: object
    pb.UploadDocumentsOption:
      description: request to know if we should UploadDocuments
      properties:
        whens:
          description: when
          items:
            type: string
          type: array
      type: object
    pb.Warehouse:
      description: Warehouse model
      properties:
        address_line1:
          description: AddressLine1
          type: string
        address_line2:
          description: AddressLine2
          type: string
        city:
          description: City
          type: string
        company:
          description: Company
          type: string
        country:
          description: Country
          type: string
        country_code:
          description: CountryCode
          type: string
        ecommerce_id:
          description: EcommerceID
          type: string
        email:
          description: Email
          type: string
        first_name:
          description: FirstName
          type: string
        id:
          description: ID
          type: string
        last_name:
          description: LastName
          type: string
        phone:
          description: Phone
          type: string
        postcode:
          description: Postcode
          type: string
        state_province:
          description: StateProvince
          type: string
        state_province_code:
          description: StateProvinceCode
          type: string
      type: object
    pb.Warehouses:
      description: Warehouses
      properties:
        warehouses:
          description: List of warehouses
          items:
            $ref: '#/components/schemas/pb.Warehouse'
          type: array
      type: object
    returns.ImportLineItem:
      description: Request to import a line item for an existing order
      properties:
        line_item_id:
          description: Line item ID
          type: string
        product_return_reason:
          description: Product return reason
          type: string
        quantity:
          description: Quantity
          format: int32
          type: integer
        return_reason_comment:
          description: Return reason comment
          type: string
        sku:
          description: SKU
          type: string
      type: object
    returns.ImportReturnRequest:
      description: Request to import a return process for an existing order
      properties:
        customer_printed_order_id:
          description: Customer printed order ID
          type: string
        ecommerce_id:
          description: E-commerce ID
          type: string
        email:
          description: Email
          type: string
        line_items:
          description: Line items
          items:
            $ref: '#/components/schemas/returns.ImportLineItem'
          type: array
        user_preferred_lang:
          description: User preferred language
          type: string
      type: object
    returns.ImportReturnResponse:
      description: >-
        Response for ImportReturn. Exactly one of `process_id` or `error` is
        populated:
         `process_id` carries the created return process on success; `error` carries a
         structured failure for user-actionable errors. System errors (platform
         unavailable, internal failures) are still returned as gRPC status codes and
         produce non-2xx HTTP responses with empty bodies.
      properties:
        error:
          allOf:
            - $ref: '#/components/schemas/returns.ImportReturnError'
          description: >-
            Structured error. Populated when the import failed with a
            user-actionable cause.
        process_id:
          description: Process ID. Empty when the import failed.
          type: string
      type: object
    returns.ImportReturnError:
      description: Structured error for ImportReturn failures.
      properties:
        code:
          description: Machine-readable code. Clients should branch on this value.
          enum:
            - IMPORT_RETURN_ERROR_CODE_UNSPECIFIED
            - IMPORT_RETURN_ERROR_CODE_ORDER_NOT_FOUND
            - IMPORT_RETURN_ERROR_CODE_INVALID_IDENTIFICATION_METHOD
            - IMPORT_RETURN_ERROR_CODE_INVALID_INPUT
            - IMPORT_RETURN_ERROR_CODE_ITEMS_NOT_AVAILABLE_FOR_RETURN
            - IMPORT_RETURN_ERROR_CODE_NO_RETURN_METHODS_AVAILABLE
            - IMPORT_RETURN_ERROR_CODE_NO_REFUND_METHODS_AVAILABLE
            - IMPORT_RETURN_ERROR_CODE_NOT_AUTHORIZED
            - IMPORT_RETURN_ERROR_CODE_PRECONDITION_FAILED
          format: enum
          type: string
        message:
          description: Human-readable message safe to display to end users.
          type: string
      type: object
    opspb.RefundOverrideGeneric:
      description: >-
        RefundOverride for generic review - amount is in cents (minor currency
        units)
      properties:
        amount:
          allOf:
            - $ref: '#/components/schemas/opspb.RefundOverrideGeneric_Amount'
          description: amount object
        reason:
          description: reason for the override
          type: string
        requested:
          description: whether the override is requested
          type: boolean
      type: object
    opspb.RefundOverrideGeneric_Amount:
      properties:
        amount:
          description: amount in cents as string (e.g. "1999" for 19.99)
          type: string
        currency_code:
          description: ISO 4217 currency code (e.g., "EUR", "USD")
          type: string
      type: object
    google.protobuf.Any:
      additionalProperties: true
      description: >-
        Contains an arbitrary serialized message along with a @type that
        describes the type of the serialized message.
      properties:
        '@type':
          description: The type of the serialized message.
          type: string
      type: object
    pb.Compensation_StatusSummary:
      properties:
        external_refund_details:
          $ref: '#/components/schemas/pb.ExternalRefundDetails'
        total_pending_refund_amount:
          allOf:
            - $ref: '#/components/schemas/pb.MoneyBag'
          description: >-
            Total pending refund amount excluding exchanges (sum of pending for
            OPM, bank transfer, promocode, gift card only).
      type: object
    logistics.LegalEntity:
      properties:
        address:
          type: string
        company_name:
          type: string
        country:
          type: string
        email:
          type: string
        full_name:
          type: string
        phone:
          type: string
      type: object
    pb.ReturnSummary_Navigation:
      properties:
        admin_html_order_url:
          description: |-
            Browser-navigable URL to view the order in the platform admin UI.
             Empty when the platform is unsupported.
          type: string
      type: object
    logistics.LogisticsLineItem:
      properties:
        custom_attributes:
          description: Free-form per-unit attributes propagated from the source platform.
          type: object
        dimensions:
          allOf:
            - $ref: '#/components/schemas/logistics.Dimensions'
          description: >-
            Per-unit physical dimensions in centimeters. Multiply by `quantity`
            for
             parcel sizing. Optional - populated only when the source platform exposes them.
        ean:
          description: >-
            European Article Number / barcode. Some platforms key order lines by
            EAN
             rather than SKU (e.g. Monta for colourfulrebel), so providers match on both.
          type: string
        id:
          description: Id of the line item in the source platform
          type: string
        name:
          description: Name of the line item (not necessarily the name of the product)
          type: string
        product_return_reason:
          description: >-
            Return reason for this item (e.g. "DEFECTIVE"). Some carriers flag
            the
             shipment based on it (e.g. CTT marks defective Álvaro Moreno returns).
          type: string
        quantity:
          description: number of items of the same product
          format: int32
          type: integer
        sku:
          description: stock-keeping unit (SKU) from the source platform
          type: string
        subtotal:
          description: sub total amount of the line before discounts and taxes
          type: string
        total:
          description: total amount of the line including discounts and tax
          type: string
        unit_price:
          description: unit price of a single item (no discounts, no taxes)
          type: string
        weight:
          description: >-
            Per-unit weight in grams (NOT total line weight). Multiply by
            `quantity`
             for the full line weight. Propagated from ReturnLineItem.weight.
          type: string
      type: object
    pb.ExchangeOrder_Navigation:
      properties:
        admin_html_order_url:
          description: >-
            Browser-navigable URL to view the exchange order in the platform
            admin UI.
             Empty when the platform is unsupported.
          type: string
      type: object
    pb.Adjustment:
      properties:
        amount:
          $ref: '#/components/schemas/pb.MoneyBag'
        created_at:
          format: date-time
          type: string
        reason:
          type: string
        user:
          type: string
      type: object
    pb.LogisticsSummary_Warehouse:
      properties:
        address_line1:
          description: Address line 1
          type: string
        address_line2:
          description: Address line 2
          type: string
        city:
          description: City
          type: string
        company:
          description: Company name
          type: string
        country:
          description: Country
          type: string
        country_code:
          description: Country code (ISO 3166-1 alpha-2)
          type: string
        email:
          description: Contact email
          type: string
        first_name:
          description: Contact first name
          type: string
        id:
          description: Warehouse ID in the REVER platform
          type: string
        last_name:
          description: Contact last name
          type: string
        phone:
          description: Contact phone
          type: string
        postcode:
          description: Postcode
          type: string
        state_province:
          description: State or province
          type: string
        state_province_code:
          description: State or province code
          type: string
      type: object
    pb.ExternalRefundDetails:
      properties:
        note:
          type: string
        user:
          type: string
      type: object
    logistics.Dimensions:
      description: |-
        Package dimensions for a single unit (one piece) of a product, in
         whole centimeters - i.e. the dimensions of the parcel/box the unit
         ships in, not the bare product itself. 
         @Description Package dimensions for a single unit of a product in centimeters (parcel, not bare product)
         @name api.logistics.Dimensions
      properties:
        height_cm:
          description: Package height in whole centimeters (sub-cm precision discarded).
          type: string
        length_cm:
          description: Package length in whole centimeters (sub-cm precision discarded).
          type: string
        width_cm:
          description: Package width in whole centimeters (sub-cm precision discarded).
          type: string
      type: object
security:
  - API Key: []
