Queek docs
App capabilities

Reference values

Webhook topics, tokens, rate limits, extension and manifest limits, credential endpoints and error codes for Queek apps.

Values published by the platform that apps depend on. Scopes are listed on Merchant API scopes.

Webhook topics

An app subscribes to topics by declaring them in the webhook_topics manifest key. Delivery, signing and retries are described on Webhooks.

ResourceTopics
ordersorders/create, orders/paid, orders/updated, orders/fulfilled, orders/cancelled
productsproducts/create, products/update, products/delete
customerscustomers/create, customers/update, customers/delete, customers/data_request, customers/redact
customers_email_marketing_consentcustomers_email_marketing_consent/update
customers_marketing_consentcustomers_marketing_consent/update
inventory_levelsinventory_levels/update
localeslocales/create, locales/update, locales/destroy
translationstranslations/update, translations/delete
checkoutscheckouts/create, checkouts/update
refundsrefunds/create
conversation_messagesconversation_messages/create

Handoff events

Signed server-to-server events sent to the app for the install lifecycle.

  • app/installed
  • app/uninstalled
  • app/resync
  • app/scopes_update
  • app/settings_updated

App credential endpoints

Endpoints an app server calls with its app token.

MethodPathPurpose
GET/api/v1/apps/installationsList installations
POST/api/v1/apps/installations/{installation}/access_tokensMint an installation token
POST/api/v1/apps/installations/{installation}/resyncResync an installation
POST/api/v1/apps/installations/{installation}/scopes/revokeRevoke granted scopes

Tokens

TokenLifetimeClock skew allowedMinting limitOther
Session token (embedded page)60 seconds (1 minute)20 seconds30 per minute—
Installation token3,600 seconds (1 hour)—6,500 per minuteSlots: 2
App token (JWT)600 seconds (10 minutes)120 seconds (2 minutes)——

Rate limits for app surfaces

Limits specific to app credentials, the storefront proxy and dashboard extensions. The per-key quota that applies to Merchant API calls is on Idempotency and rate limits.

LimitValue
App list requests120 per minute
App resync requests30 per minute
Failed app credential checks60 per minute
Wait between resyncs of one installation3,600 seconds (1 hour)
Installation token requests, per vendor10 per minute
Installation token requests, per IP address30 per minute
Storefront app proxy requests120 per minute
Dashboard app list requests60 per minute
Dashboard block requests120 per minute
Dashboard action requests30 per minute
Dashboard print requests30 per minute

Storefront app proxy

SettingValue
MethodsGET, POST
Pathapi/v1/client/apps/{appSlug}/{path}
Maximum size262,144 bytes (256 KiB)
Connect timeout3 seconds
Timeout5 seconds
Signature clock skew allowed300 seconds (5 minutes)
Request limit120 per minute
Customer id sharing switchapps.proxy_share_customer_id_enabled
PostManifest key: extensions.proxy.allow_post; Content type: application/json; Max bytes: 65536; Per minute: 20; Per minute install: 600; Kill switch: apps.proxy_post_enabled; Signed params: method, body_sha256, idempotency_key; Relayed statuses: 200, 201, 202, 204, 400, 409, 422

Storefront extensions

SettingValues
Block targetsproduct
Block typesapp_block, app_embed
Embed targetsbody
Embed capabilitieschat-bubble, banner, popup, scroll-top
Field typesdate, time, select
Line input primitivesline_text
Line text limitsMax length: 500; Default max length: 100; Fields per manifest: 3; Property key max length: 64
Available ifdeclared_products

Dashboard extensions

SettingValues
Targetsorder-details, product-details, order-print
Block targetsorder-details, product-details
Action targetsorder-details
Print targetsorder-print
Action effectsorder_appointment
Field typesdate, time, select, text, slot-list
Visibility conditionsorder.has_appointment, order.is_paid, product.has_files

Manifest limits

How the manifest is written is described on App manifest.

Accepted values

SettingValues
Top-level keysslug, name, description, icon, developer, version, distribution, category, tagline, description_long, highlights, logo_url, pricing, developer_url, privacy_url, support_url, demo_url, video_url, scopes, optional_scopes, webhook_topics, settings, install_url, uninstall_url, settings_url, webhook_url, extensions, dashboard, payment_provider
Setting typesstring, secret, number, boolean, select
Pricing modelsfree, free_trial, paid

Maximum entries

ItemMaximum
Storefront blocks10
Navigation entries10
Storefront embeds3
Dashboard blocks10
Dashboard actions10
Print layouts5
Schema fields12
Print fields20
Select options50
Listing highlights5

Maximum text length

FieldCharacters
Name120
Developer name120
Field label120
Select option120
Tagline80
Pricing note80
Block title80
Print label80
Description2,000
Long description2,000
Highlight90
Icon64
Media id64
Version32
Key64
Help text500
Block description500
Navigation label40
Embed title80
URL2,048

Error codes

The 99 codes in the platform's shared error vocabulary, as they appear in the error.code field, grouped by the area they belong to. The error shape is described on Versioning and errors, and the Merchant API codes on Errors. Treat a code you do not recognise by its HTTP status class.

GroupCodes
Generalbad_request, conflict, forbidden, gone, method_not_allowed, not_found, payload_too_large, route_not_available, server_error, service_unavailable, too_many_requests, unauthenticated, unknown_service, unsupported_media_type, validation_failed
Keys, origins and scopesapi_key_expired, api_key_mode_mismatch, api_key_revoked, client_key_required, insufficient_scope, invalid_client, invalid_client_key, origin_not_allowed, origin_required, private_key_required, vendor_access_denied
Idempotencyidempotency_key_in_progress, idempotency_key_required, idempotency_key_reuse
Apps and installationsapp_embed_not_ready, app_grant_insufficient, app_handoff_failed, app_installation_gone, app_installation_pending, app_ip_not_allowed, app_proxy_failed, app_proxy_gone, app_token_revoked, channel_gateway_unreachable, requires_slot, resync_cooldown
Metafields and metaobjectsmetafield_definition_missing, metafield_filter_unsupported_type, metafield_namespace_reserved, metafield_value_invalid, metaobject_definition_missing, metaobject_field_invalid, metaobject_reference_invalid, metaobject_type_reserved
Translationstranslation_digest_stale, translation_locale_is_default, translation_locale_is_primary, translation_locale_not_published, translation_max_published_locales, translation_unknown_key, translation_unknown_locale
Products and paymentspayment_amount_mismatch, unknown_product_ref, unknown_variant_ref
Plans, gateways and mail senderscustom_domain_provisioning_failed, custom_gateway_forbidden, custom_gateway_kyc_required, custom_gateway_not_configured, custom_gateway_not_verified, custom_gateway_plan_required, custom_gateway_store_ineligible, custom_gateway_verification_failed, plan_inactive, subscription_feature_locked, vendor_mail_sender_forbidden, vendor_mail_sender_key_unavailable, vendor_mail_sender_not_configured, vendor_mail_sender_plan_required, vendor_mail_sender_verification_failed
Otherai_unavailable_in_test_mode, bank_unverifiable, bank_unverified, delivery_location_unserved, invalid_pin, invalid_refund_amount, messaging_window_closed, nothing_to_refund, order_not_refundable, otp_required, payment_method_unavailable, payout_hold, pin_required, refund_amount_below_minimum, refund_amount_exceeds_refundable, refund_line_invalid, refund_payment_not_found, refund_provider_unavailable, refund_provider_unsupported, refunds_disabled, requires_line_text, store_build_gated, store_region_missing, transaction_pin_required, variant_required

On this page