Skip to main content

Settings

Permission: management.

Routes​

MethodRouteSince
GET, PUT, PATCH/settings/fulfillment1.17.0
GET, PUT, PATCH, DELETE/settings/appearance1.19.0
GET, PUT, PATCH, DELETE/settings/catalog-layout1.20.0
PUT/settings/catalog-layout/category-order1.28.0

Operations: delivery, pickup and hours​

These are the same settings as Delivery, pickup and hours in the app and Services and hours in wp-admin.

GET /settings/fulfillment:

{
"schema_version": 2,
"timezone": "America/Bogota",
"emergency_closed": false,
"allow_scheduled_while_closed": false,
"delivery": {
"enabled": true, "force_disabled": false, "prep_time_minutes": 30, "enforce_hours": true, "minimum_order": "20000",
"date_selection": { "enabled": true, "advance_days": 7 },
"time_selection": { "enabled": true, "allow_now": true, "allow_asap": true, "slot_minutes": 30, "max_orders_per_slot": 8 },
"hours": { "monday": [ { "start": "11:00", "end": "22:00" } ], "sunday": [] },
"fee": { "mode": "distance", "amount": "5000", "per_km_amount": "0",
"distance_tiers": [ { "km_from": 0, "km_to": 3, "fee": "4000" }, { "km_from": 3, "km_to": 8, "fee": "7000" } ] },
"distance": { "store_address": "Carrera 7 # 1-1, Bogotá", "store_latitude": 4.6, "store_longitude": -74.07,
"max_distance_km": 15, "mode": "default", "has_api_key": true, "has_browser_map_key": true }
},
"pickup": {
"enabled": true, "prep_time_minutes": 15, "hide_address": false,
"tables": { "enabled": true, "selection": "qr_or_list", "tables": [ { "id": "t1", "label": "Mesa 1", "zone": "Salón", "capacity": 2, "active": true } ] }
}
}

timezone is read-only: it is the WordPress time zone.

Save​

PUT and PATCH merge what you send with what is stored, and hours are merged per day. Send only what you want to change:

curl -X PATCH https://tienda.example.test/wp-json/notiwoo/v1/settings/fulfillment \
-H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
-d '{"delivery": {"prep_time_minutes": 40, "hours": {"tuesday": [{"start": "11:00", "end": "15:00"}]}}}'
  • Google keys: send delivery.distance.google_api_key (server key for the Routes API) and google_maps_browser_key (public Maps JS key). They are never returned: the response only shows has_api_key and has_browser_map_key. If you omit a key or send it empty, it is kept. To delete it, send clear_google_api_key: true or clear_google_maps_browser_key: true.
  • Tables: pickup.tables.tables replaces the full list of tables. Prefer /settings/tables.

Validation errors (400): notiwoo_invalid_hours, notiwoo_invalid_hours_range, notiwoo_overlapping_hours, notiwoo_invalid_slot_size, notiwoo_invalid_slot_capacity, notiwoo_invalid_advance_days, notiwoo_invalid_delivery_fee_mode, notiwoo_invalid_delivery_fee, notiwoo_invalid_distance_tiers, notiwoo_overlapping_distance_tiers, notiwoo_invalid_store_location, and other notiwoo_invalid_*. Removing an occupied table responds 409 table_occupied.

Extras popup appearance​

GET /settings/appearance responds { colors, defaults, labels, variables }.

PUT takes { "colors": { "surface": "#111827", "text": "#f8fafc", "option": "#1f2937", "accent": "#2563eb" } }. All values must be hexadecimal colors.

DELETE restores the default colors.

Error: 400 notiwoo_invalid_appearance_payload (empty body, unknown key or non-hexadecimal value).

After changing the colors, purge the store cache.

Category menu​

GET /settings/catalog-layout responds { settings, defaults, styles, category_order }.

SettingDefaultValues
enabledfalse
stylechipschips, sidebar, tabs or accordion
stickytrueMenu stays fixed on scroll.
show_countstrue
show_imagesfalseCategory thumbnails.
show_alltrue"All" option.
columns31 to 6.
max_depth2Levels, from 1 to 4.
hide_emptytrue
product_cap30020 to 2000 products.
menu_modefalseMenu mode.
show_descriptionfalseShort description.

PUT takes { "settings": {...} }. DELETE restores the defaults.

Category order​

PUT /settings/catalog-layout/category-order with { "order": [22, 15, 31] } orders the top-level categories. Unknown IDs are discarded and categories you do not send are added at the end. It responds with the full configuration.

See Catalog menu.