---
# System prepended metadata

title: Untitled

---

**Order Log Comparison (GoFood Booking Log Proto vs Order on Cosmo)**

**Context**

As a consolidated order service, Cosmo should store all orders from online and offline. Online order is order that being fired by GoFood booking log (Firehose). Offline order is order that being created by Cashier.

On online orders, currently Cosmo don't store all available fields on GoFood Booking Log. Cosmo now only store few basic information about it. Cosmo able to add more data field upon request by respective stakeholders.

**GoFood Booking Log that being published to Cosmo**

   ```aspnet
   message GoFoodBookingLogMessage {
    string order_number = 2;                 // Copied

    string customer_name = 29;               // Copied
    string customer_phone = 30;              // Copied

    string driver_name = 32;                 // Copied
    string driver_phone = 33;                // Copied

    google.protobuf.Timestamp booking_creation_time = 41;  // Copied

    gojek.esb.types.GoFoodBookingSubStatus.Enum sub_status = 201;       // Converted into CREATED, IN_PROGRESS, COMPLETED, CANCELLED
    string otp = 209;                      // Copied
    string saudagar_id = 212;              // Copied
    
    repeated gojek.esb.types.GoFoodShoppingItem shopping_items = 302;    // Copied
}
```

**GoFood Booking Log Proto**

```aspnet
message GoFoodBookingLogMessage {
    gojek.esb.types.ServiceType.Enum service_type = 1; //required
    string order_number = 2; //required
    string order_url = 3; //required
    gojek.esb.types.BookingStatus.Enum status = 4; //required
    google.protobuf.Timestamp event_timestamp = 5; //required
    string customer_id = 6; //required
    string customer_url = 7; //required
    string driver_id = 8; //filled during driver_found, cancelled, customer_picked_up, customer_dropped_off, feedback_for_driver, and refunded event_names
    string driver_url = 9;
    bool is_reblast = 10; //if this is a reblasted booking, then true

    string activity_source = 11;
    string service_area_id = 12;

    //payment
    gojek.esb.types.PaymentType.Enum payment_type = 13;
    float total_unsubsidised_price = 14;
    float customer_price = 15;
    float amount_paid_by_cash = 16;
    float amount_paid_by_credits = 17;
    float surcharge_amount = 18;
    float tip_amount = 19;
    float driver_cut_amount = 20;

    //distance, locations
    float total_distance_in_kms = 21;
    string route_polyline = 22;
    repeated gojek.esb.types.Route routes = 23;
    google.protobuf.Duration driver_eta_pickup = 24;
    google.protobuf.Duration driver_eta_dropoff = 25;
    gojek.esb.types.Location driver_pickup_location = 26;
    gojek.esb.types.Location driver_dropoff_location = 27;

    //customer
    string customer_email = 28;
    string customer_name = 29;
    string customer_phone = 30;

    //driver
    string driver_email = 31;
    string driver_name = 32;
    string driver_phone = 33;
    string driver_phone2 = 34;
    string driver_phone3 = 35;

    //cancellation
    int32 cancel_reason_id = 36;
    string cancel_reason_description = 37;
    gojek.esb.types.CancelSource.Enum cancel_source = 38;
    gojek.esb.types.CustomerType.Enum customer_type = 39;

    //booking creation time
    google.protobuf.Timestamp booking_creation_time = 41;

    //customer discount
    float total_customer_discount = 40;
    float gopay_customer_discount = 42;
    float voucher_customer_discount = 43;

    google.protobuf.Timestamp pickup_time = 44;
    float driver_paid_in_cash = 45;
    float driver_paid_in_credit = 46;
    reserved 47;
    reserved "previous_status";
    string receiver_name = 48;
    string driver_photo_url = 49;
    gojek.esb.types.BookingStatus.Enum previous_booking_status = 50;

    gojek.esb.types.VehicleType.Enum vehicle_type = 51;

    // Customer surge information
    int64 customer_total_fare_without_surge = 52;
    float customer_surge_factor = 53;
    int64 customer_dynamic_surge = 54;
    bool customer_dynamic_surge_enabled = 55;

    // Driver surge information
    int64 driver_total_fare_without_surge = 56;
    float driver_surge_factor = 57;
    int64 driver_dynamic_surge = 58;
    bool driver_dynamic_surge_enabled = 59;

    //Actual Time arrival
    google.protobuf.Duration driver_ata_pickup = 60; //actual time arrival
    google.protobuf.Duration driver_ata_dropoff = 61; //actual time arrival

    //Activity Source Information
    string gcm_key = 62; //gcm_key should be filled if activity_source is android
    string device_token = 63; //device_token should be filled if activity_source is ios

    //Financial Information
    string pricing_service_id = 64;
    string payment_invoice_number = 65; //for gopay reconciliation
    
    //price-edit
    string price_edit_reason = 150;

    //driver-arrived
    gojek.esb.types.Location driver_arrived_location = 151;
    google.protobuf.Timestamp driver_arrived_time = 152;

    //driver-order-placed
    gojek.esb.types.Location driver_order_placed_location = 154;
    google.protobuf.Timestamp driver_order_placed_time = 155;

    google.protobuf.Timestamp merchant_accepted_time = 156;

    //merchant-cancel
    string merchant_cancel_reason = 157;
    google.protobuf.Timestamp merchant_cancel_time = 158;

    //GoResto specific information
    string restaurant_id = 200;
    gojek.esb.types.GoFoodBookingSubStatus.Enum sub_status = 201;
    float shopping_price = 202;
    float commission_price = 203;
    float withholding_income_tax = 204;
    float voucher_redeemed_value = 205;
    float voucher_commission = 206;
    string voucher_id = 207;
    string voucher_title = 208;
    string otp = 209;
    float driver_entered_price = 210;
    string driver_wallet_id = 211;
    string saudagar_id = 212;
    google.protobuf.Timestamp validated_at = 213;
    string merchant_wallet_id = 214;

    string restaurant_uuid = 215;
    string search_id = 216; // Deprecated, please use analytics.search_id instead.
    string gopay_driver_reservation_id = 217;
    string voucher_batch_id = 218;
    gojek.esb.types.MerchantConfig merchant_config = 219;
    string brand_id = 220;

    //GoFood Business Intelligence purpose
    string receipt_url = 300;
    bool is_goresto = 301;
    repeated gojek.esb.types.GoFoodShoppingItem shopping_items = 302;
    bool has_promo = 303;
    gojek.esb.types.GoFoodBookingAnalytics analytics = 304;

    //GoFood Campaign Details
    repeated gojek.esb.types.markdown.CampaignDiscount campaign_discounts = 400;
}

```
