### Installation URL for App Authorization Source: https://tiendanube.dev/api/guides/shipping-provider URL to start the installation flow in a store to obtain the authorization code. Replace ${store_name} and ${app_id} with actual values. ```text https://${store_name}.mitiendanube.com/admin/apps/${app_id}/authorize ``` -------------------------------- ### GET /kits/123456789 - Example Response Source: https://tiendanube.dev/api/resources/2025-03/kit Example JSON response for the GET /kits/123456789 request, containing the kit's details and its components. ```json { "id": 123456789, "name": { "es": "Conjunto Otoño 2026", "pt": "Conjunto Outono 2026", "en": "Fall 2026 Bundle" }, "description": { "es": "
Conjunto de ropa para el otoño.
", "pt": "Conjunto de roupas para o outono.
", "en": "Fall clothing bundle.
" }, "handle": { "es": "conjunto-otono-2026", "pt": "conjunto-outono-2026", "en": "fall-2026-bundle" }, "sku": "BUNDLE-FALL-2026", "barcode": null, "mpn": null, "gender": "unisex", "age_group": "adult", "invalid_at": null, "published": true, "visibility": "visible", "free_shipping": false, "canonical_url": "https://mystore.mitiendanube.com/products/fall-2026-bundle/", "video_url": null, "seo_title": { "en": "Fall 2026 Bundle - MyStore" }, "seo_description": { "en": "Fall clothing bundle with hoodie and jogger pants." }, "brand": "MyStore", "created_at": "2026-03-27T12:22:59+0000", "updated_at": "2026-04-10T08:15:30+0000", "tags": "bundle,fall,apparel,2026", "images": [ { "id": 1152273818, "product_id": 123456789, "src": "https://d2r9epyceweg5n.cloudfront.net/stores/001/234/products/fall-2026-bundle.jpg", "position": 1 } ], "categories": [ 4567 ], "discount_percent": 10, "components": [ { "product_id": 123456001, "quantity": 1, "position": 0, "free_shipping": false, "is_deleted": false, "name": { "es": "Buzo con Capucha", "pt": "Moletom com Capuz", "en": "Hoodie", "default": "Hoodie" }, "image_url": "https://d2r9epyceweg5n.cloudfront.net/stores/001/234/products/hoodie.jpg", "price": 150, "promotional_price": null, "stock": 20 }, { "product_id": 123456002, "quantity": 1, "position": 1, "free_shipping": false, "is_deleted": false, "name": { "es": "Pantalón Jogger", "pt": "Calça Jogger", "en": "Jogger Pants", "default": "Jogger Pants" }, "image_url": "https://d2r9epyceweg5n.cloudfront.net/stores/001/234/products/jogger-pants.jpg", "price": 100, "promotional_price": null, "stock": 15 } ], "kit_stock": 15 } ``` -------------------------------- ### Configurar conexión FTP con theme ftp setup Source: https://tiendanube.dev/themes/developer-tools/cli/ftp-theme-development Configura las credenciales FTP y la URL de la tienda. El CLI prueba la conexión y guarda las credenciales en el archivo de configuración `.nuvem`. Requiere los parámetros `--ftp-server`, `--ftp-username`, `--ftp-password` y `--store-url`. ```bash tiendanube theme ftp setup \ --ftp-server HOST_FTP \ --ftp-username USUARIO_FTP \ --ftp-password CONTRASENA_FTP \ --store-url https://tutienda.mitiendanube.com ``` -------------------------------- ### GET /store response example Source: https://tiendanube.dev/api/resources/2025-03/store Example JSON response from the GET /store endpoint, showing the structure and sample values for a store's configuration and information. ```json { "id": 1234, "name": { "en": "Poké Store", "pt": "Poké Loja" }, "description": { "en": "", "pt": "" }, "type": null, "email": "owner@pokestore.com", "logo": "//d26lpennugtm8s.cloudfront.net/stores/046/themes/common/logo-ff622335866ee56df3bceed2e9d41469.png", "contact_email": "contact@pokestore.com", "country": "BR", "facebook": "https://www.facebook.com/pokestore", "youtube": "https://www.youtube.com/@pokestore", "tiktok": "https://www.tiktok.com/@pokestore", "twitter": "https://twitter.com/pokestore", "instagram": "https://instagram.com/pokestore", "pinterest": null, "blog": null, "business_id": null, "business_name": null, "business_address": null, "address": null, "phone": "+55 11 912345678", "whatsapp_phone_number": null, "customer_accounts": "optional", "plan_name": "BR_2022_05_next_2999_040", "domains": [ "http://www.pokestore.com", "http://pokestore.com" ], "languages": { "en": { "currency": "USD", "active": true }, "es": { "currency": "ARS", "active": false }, "pt": { "currency": "BRL", "active": true } }, "original_domain": "pokeloja.lojavirtualnuvem.com.br", "url_with_protocol": "https://www.pokestore.com", "main_currency": "BRL", "current_theme": "ipanema", "main_language": "pt", "admin_language": "pt", "created_at": "2013-01-01T08:12:51+0000", "updated_at": "2025-08-26T20:20:55+0000", "timezone_id": "America/Sao_Paulo" } ``` -------------------------------- ### Instalar el CLI de Tiendanube y verificar versión Source: https://tiendanube.dev/ai-agents/agentic-theme-development Instala el CLI globalmente con npm y verifica la versión instalada. ```bash npm install -g @tiendanube/cli tiendanube --version ``` -------------------------------- ### Instalar @tiendanube/nube-sdk-ui Source: https://tiendanube.dev/apps/nube-sdk/manual-setup Instala el paquete de UI de NubeSDK si vas a desarrollar una aplicación con interfaz de usuario. Usa el gestor de paquetes de tu preferencia. ```bash # npm npm install @tiendanube/nube-sdk-ui # yarn yarn add @tiendanube/nube-sdk-ui # pnpm pnpm add @tiendanube/nube-sdk-ui # bun bun add @tiendanube/nube-sdk-ui ``` -------------------------------- ### GET /customers response example Source: https://tiendanube.dev/api/resources/2025-03/customer Example JSON response from the GET /customers endpoint. Shows two customer objects with fields such as id, email, name, billing address, and default address. ```json [ { "created_at": "2013-01-03T09:11:51-03:00", "email": "john.doe@example.com", "id": 101, "identification": "28776255670", "last_order_id": 9001, "name": "John Doe", "note": null, "phone": null, "total_spent": "89.00", "total_spent_currency": "USD", "updated_at": "2013-03-11T09:14:11-03:00", "billing_address": "Evergreen Terrace", "billing_city": "Springfield", "billing_country": "US", "billing_floor": null, "billing_locality": null, "billing_number": "742", "billing_phone": "555-123-0413", "billing_province": "Oregon", "billing_zipcode": "97475", "extra": { "number_of_children": "2", "gender": "male" }, "default_address": { "address": "Evergreen Terrace", "city": "Springfield", "country": "US", "created_at": "2013-01-03T09:11:51-03:00", "default": true, "floor": null, "id": 1234, "locality": null, "number": "742", "phone": "555-123-0413", "province": "Oregon", "updated_at": "2013-03-10T11:13:01-03:00", "zipcode": "97475" }, "addresses": [ { "address": "Evergreen Terrace", "city": "Springfield", "country": "US", "created_at": "2013-01-03T09:11:51-03:00", "default": true, "floor": null, "id": 1234, "locality": null, "number": "742", "phone": "555-123-0413", "province": "Oregon", "updated_at": "2013-03-10T11:13:01-03:00", "zipcode": "97475" } ] }, { "created_at": "2013-04-07T09:11:51-03:00", "email": "john.doe@example.com", "id": 112, "identification": "28776255671", "last_order_id": null, "name": "Zé Ninguém", "note": null, "phone": "392502584", "total_spent": "0.00", "total_spent_currency": "USD", "updated_at": "2013-04-08T11:11:51-03:00", "billing_address": "Evergreen Terrace", "billing_city": "Springfield", "billing_country": "US", "billing_floor": null, "billing_locality": null, "billing_number": "742", "billing_phone": "555-123-0413", "billing_province": "Oregon", "billing_zipcode": "97475", "extra": { "number_of_children": "2", "gender": "male" }, "default_address": { "address": "Praça Roberto Gomes Pedrosa", "city": "São Paulo", "country": "BR", "created_at": "2013-04-07T09:11:51-03:00", "default": true, "floor": null, "id": 1234, "locality": "Morumbi", "number": "1", "phone": "11 3749-8000", "province": "São Paulo", "updated_at": "2013-04-08T11:13:01-03:00", "zipcode": "05653-070" }, "addresses": [ { "address": "Praça Roberto Gomes Pedrosa", "city": "São Paulo", "country": "BR", "created_at": "2013-04-07T09:11:51-03:00", "default": true, "floor": null, "id": 1234, "locality": "Morumbi", "number": "1", "phone": "11 3749-8000", "province": "São Paulo", "updated_at": "2013-04-08T11:13:01-03:00", "zipcode": "05653-070" } ] } ] ``` -------------------------------- ### Checkout.setInstallments Source: https://tiendanube.dev/api/resources/2025-03/checkout Updates the installments options in the checkout. The example shows how to set a list of installment options with quantity, installment amount, total amount, and optional CFT. ```APIDOC ## Checkout.setInstallments ### Description Updates the installments options in the checkout. ### Method Not specified (JavaScript function call) ### Endpoint Not applicable (SDK method) ### Parameters #### Request Body - **installments** (array) - Required - List of installment objects. - **quantity** (number) - Required - Number of installments. - **installmentAmount** (number) - Required - Value of a single installment. - **totalAmount** (number) - Required - Total value of all installments. - **cft** (string) - Optional - Total financial cost. ### Request Example ```javascript Checkout.setInstallments([ { quantity: 1, installmentAmount: 25, totalAmount: 25, cft: "0,00%", }, { quantity: 2, installmentAmount: 13, totalAmount: 26, cft: "199,26%", }, { quantity: 3, installmentAmount: 10, totalAmount: 30, cft: "196,59%", }, ]); ``` ### Response No response is documented. ``` -------------------------------- ### Create a new NubeSDK project with CLI (npm, yarn, pnpm, bun) Source: https://tiendanube.dev/apps/nube-sdk/getting-started Run one of these commands to scaffold a new NubeSDK project. The CLI will prompt for a project name and a template. Choose the template that best fits your needs: Minimal, Minimal with UI, or Minimal with UI in JSX. ```bash # npm npm create nube-app@latest # yarn yarn create nube-app # pnpm pnpm create nube-app # bun bun create nube-app ``` -------------------------------- ### GET /orders?aggregates=fulfillment_orders response example Source: https://tiendanube.dev/api/resources/2025-03/order Example HTTP response for the GET /orders?aggregates=fulfillment_orders request. Shows the structure of an order with a fulfillment_orders array, including fields like id, token, store_id, and nested fulfillment details. The response includes all fields from GET /orders plus the fulfillment_orders array. ```json HTTP/1.1 200 OK [ { "id": 871254203, "token": "b872a1befbcde5aaf0517ecbcc910f5dc005350e", "store_id": "817495", ... // All fields from GET /orders are included in the response "fulfillment_orders": [ { "id": "01BX5ZZKBKACTAV9WEVGEMMVRZ", "number": "123456", "total_quantity": 12, "total_weight": 12.12, "total_price": { "value": 123.45, "currency": "BRL", }, "assigned_location": { "id": "123e4567-e89b-12d3-a456-426614174000", "name": "Location name", "address": { "zipcode": "12910802", "street": "Some Street", "number": "100", "floor": "Some Floor", "locality": "Some Locality", "city": "Some City", "reference": "Some Reference", "between_streets": "Some Between Streets", "province": { "code": "SP", "name": "São Paulo" }, "region": { "code": "SE", "name": "Sudeste" }, "country": { "code": "BR", "name": "Brasil" } } }, "line_items": [ { "id": "12345", "quantity": 1, "order_line_item_id": "12345678", "created_at": "2022-11-24T10:20:19+00:00", "updated_at": "2022-11-24T10:20:19+00:00" } ], "recipient": { "name": "Recipient name", "phone": "11988864311", "identifier": "11223344B", }, "shipping": { "type": "pickup|ship", "carrier": { "name": "Some Carrier Name", "id": "12345" }, "option": { "name": "Some Option Name", "code": "some-option-code", "reference": "some-option-ref" }, "merchant_cost": { "value": 123.14, "currency": "BRL" }, "consumer_cost": { "value": 123.14, "currency": "BRL" }, "min_delivery_date": "2022-11-24T10:20:19+00:00" || null, "max_delivery_date": "2022-11-25T10:20:19+00:00" || null, "pickup_details": { "id": "pickup-option-id", "name": "Some option pickup detail name", "address": { "zipcode": "12910802", "street": "Some Street", "number": "100", "floor": "Some Floor", "locality": "Some Locality", "city": "Some City", "reference": "Some Reference", "between_streets": "Some Between Streets", "province": { "name": "São Paulo", "code": "SP" }, "region": { "name": "Sudeste", "code": "SE" }, "country": { "name": "Brasil", "code": "BR" } } } }, "destination": { "zipcode": "12910802", "street": "Some Street", "number": "100", "floor": "Some Floor", "locality": "Some Locality", "city": "Some City", "reference": "Some Reference", "between_streets": "Some Between Streets", "province": { "name": "São Paulo", "code": "SP" }, "region": { "name": "Sudeste", "code": "SE" }, "country": { "name": "Brasil", "code": "BR" } }, "status": "PENDING", "tracking_info": { "url": null, "code": null }, "fulfilled_at": null, "created_at": "2022-11-24T10:20:19+00:00", "updated_at": "2022-11-24T10:20:19+00:00" }] } ] ``` -------------------------------- ### setupHelpModal(nube, config) Source: https://tiendanube.dev/apps/nube-sdk/examples/modal-popup Sets up a help modal with a floating trigger button in the specified slot. The modal displays contact information and a close button. ```APIDOC ## setupHelpModal(nube, config) ### Description Sets up a help modal with a floating trigger button in the specified slot. The modal displays contact information and a close button. ### Method setupHelpModal ### Parameters - **nube** (NubeSDK) - Required - The NubeSDK instance. - **config** (HelpModalConfig) - Required - Configuration object for the modal. #### HelpModalConfig Properties - **title** (string) - Optional - Title of the modal. Default: "Need Help?". - **description** (string | ((state: NubeSDKState) => string)) - Optional - Static text or function that receives the state. - **contacts** (ContactInfo[]) - Required - Array of contact items to display. - **footerText** (string) - Optional - Optional footer text. - **closeButtonText** (string) - Optional - Label for the close button. Default: "Got it, thanks!". - **triggerButtonText** (string) - Optional - Text for the floating button. Default: "?". - **slot** (UISlot) - Optional - Slot for the trigger button. Default: "corner_bottom_right". ### Request Example ```typescript setupHelpModal(nube, { title: "Need Help?", description: (state) => `Hi ${state.customer?.contact?.name || "there"}! If you have any questions about your order, feel free to contact us:`, contacts: [ { label: "Instagram", value: "@mystore_official" }, { label: "WhatsApp", value: "+54 11 2345-6789" }, ], footerText: "We're here to help you with any doubts about products, shipping, or payment methods.", closeButtonText: "Got it, thanks!", slot: "corner_bottom_right", }); ``` ### Response No return value. ``` -------------------------------- ### GET /checkouts response example Source: https://tiendanube.dev/api/resources/2025-03/abandoned-checkout Example JSON response from the GET /checkouts endpoint, showing a list of abandoned checkouts with fields such as id, token, store_id, abandoned_checkout_url, contact information, shipping and billing details, totals, and product information. ```json [ { "id": 411335234, "token": "d0e589b2ba4fef1a4155dc071c253dfk1j34198b9", "store_id": 167985134, "abandoned_checkout_url": "https://nuvemteste.lojavirtualnuvem.com.br/checkout/v3/order/proxy/411335234/d0e589b2ba4fef1a4155dc071c253dfk1j34198b9", "contact_email": "teste@teste.com.br", "contact_name": "Teste 12", "contact_phone": "+551335593019", "contact_identification": "78448385071", "shipping_name": "Teste", "shipping_phone": "+551335593019", "shipping_address": "Rua Ali", "shipping_number": "123", "shipping_floor": "", "shipping_locality": "Mundo Novo", "shipping_zipcode": "29580000", "shipping_city": "Dores do Rio Preto", "shipping_province": "Espirito Santo", "shipping_country": "BR", "shipping_min_days": 0, "shipping_max_days": 0, "billing_name": "Teste", "billing_phone": "+551335593019", "billing_address": "Rua Ali", "billing_number": "123", "billing_floor": "", "billing_locality": "Mundo Novo", "billing_zipcode": "29580000", "billing_city": "Dores do Rio Preto", "billing_province": "Espirito Santo", "billing_country": "BR", "shipping_cost_owner": "1.00", "shipping_cost_customer": "1.00", "coupon": [], "promotional_discount": { "id": null, "store_id": 1679854, "order_id": 411335518, "created_at": "2021-05-18T19:51:19+0000", "total_discount_amount": "0.00", "contents": [], "promotions_applied": [] }, "subtotal": "290.35", "discount": "0.00", "discount_coupon": "0.00", "discount_gateway": "0.00", "total": "291.35", "total_usd": "0.00", "checkout_enabled": true, "weight": "5.000", "currency": "BRL", "language": "pt", "gateway": null, "gateway_id": null, "shipping": "api_128646", "shipping_option": "Nimbus 2001", "shipping_option_code": "nimbus-201", "shipping_option_reference": null, "shipping_pickup_details": null, "shipping_tracking_number": null, "shipping_tracking_url": null, "shipping_store_branch_name": null, "shipping_pickup_type": "ship", "shipping_suboption": [], "extra": {}, "storefront": "store", "note": null, "created_at": "2021-05-12T19:08:06+0000", "updated_at": "2021-05-13T21:04:00+0000", "completed_at": null, "next_action": "noop", "payment_details": { "method": null, "credit_card_company": null, "installments": 1 }, "attributes": [], "products": [ { "id": 516763823, "depth": "2.00", "height": "20.00", "name": "Varinha do Harry Potter (Preto)", "price": "58.07", "product_id": 87219151, "image": { "id": 171099852, "product_id": 87219151, "src": "https://d2r9epyceweg5n.cloudfront.net/stores/001/679/854/products/varinha-hp-luxo-21-5ebe5e31da8e2b693515728471178129-1024-10241-bc9b30adf4b178fabc16202348529015-1024-1024.jpeg", "position": 1, "alt": [], "created_at": "2021-05-05T17:14:05+0000", "updated_at": "2021-05-10T17:22:52+0000" }, "quantity": 5, "free_shipping": false, "weight": "1.00", "width": "4.00", "variant_id": 332977991, "variant_values": [ "Preto" ], "properties": [], "sku": null, "barcode": null }] }] ``` -------------------------------- ### Actualizar el CLI globalmente con npm Source: https://tiendanube.dev/themes/developer-tools/cli/agent-skills Comando para actualizar el paquete del CLI de Tiendanube a nivel global, lo que también actualiza las skills vinculadas. ```bash npm update -g @tiendanube/cli ``` -------------------------------- ### Instalar tsup para el build Source: https://tiendanube.dev/apps/nube-sdk/manual-setup Instala tsup como dependencia de desarrollo para compilar tu script. tsup ya viene preconfigurado en las plantillas oficiales. ```bash # npm npm install -D tsup # yarn yarn add -D tsup # pnpm pnpm add -D tsup # bun bun add -D tsup ``` -------------------------------- ### GET /checkouts/411335234 - Example Response Source: https://tiendanube.dev/api/resources/2025-03/abandoned-checkout Example response for a successful GET request to retrieve an abandoned checkout. The response includes checkout details such as id, token, store_id, abandoned_checkout_url, contact information, shipping and billing addresses, totals, and product information. ```json { "id": 411335234, "token": "d0e589b2ba4fef1a4155dc071c253dfk1j34198b9", "store_id": 167985134, "abandoned_checkout_url": "https://nuvemteste.lojavirtualnuvem.com.br/checkout/v3/order/proxy/411335234/d0e589b2ba4fef1a4155dc071c253dfk1j34198b9", "contact_email": "teste@teste.com.br", "contact_name": "Teste 12", "contact_phone": "+551335593019", "contact_identification": "78448385071", "shipping_name": "Teste", "shipping_phone": "+551335593019", "shipping_address": "Rua Ali", "shipping_number": "123", "shipping_floor": "", "shipping_locality": "Mundo Novo", "shipping_zipcode": "29580000", "shipping_city": "Dores do Rio Preto", "shipping_province": "Espirito Santo", "shipping_country": "BR", "shipping_min_days": 0, "shipping_max_days": 0, "billing_name": "Teste", "billing_phone": "+551335593019", "billing_address": "Rua Ali", "billing_number": "123", "billing_floor": "", "billing_locality": "Mundo Novo", "billing_zipcode": "29580000", "billing_city": "Dores do Rio Preto", "billing_province": "Espirito Santo", "billing_country": "BR", "shipping_cost_owner": "1.00", "shipping_cost_customer": "1.00", "coupon": [], "promotional_discount": { "id": null, "store_id": 1679854, "order_id": 411335518, "created_at": "2021-05-18T19:51:19+0000", "total_discount_amount": "0.00", "contents": [], "promotions_applied": [] }, "subtotal": "290.35", "discount": "0.00", "discount_coupon": "0.00", "discount_gateway": "0.00", "total": "291.35", "total_usd": "0.00", "checkout_enabled": true, "weight": "5.000", "currency": "BRL", "language": "pt", "gateway": null, "gateway_id": null, "shipping": "api_128646", "shipping_option": "Nimbus 2001", "shipping_option_code": "nimbus-201", "shipping_option_reference": null, "shipping_pickup_details": null, "shipping_tracking_number": null, "shipping_tracking_url": null, "shipping_store_branch_name": null, "shipping_pickup_type": "ship", "shipping_suboption": [], "extra": {}, "storefront": "store", "note": null, "created_at": "2021-05-12T19:08:06+0000", "updated_at": "2021-05-13T21:04:00+0000", "completed_at": null, "next_action": "noop", "payment_details": { "method": null, "credit_card_company": null, "installments": 1 }, "attributes": [], "products": [ { "id": 516763823, "depth": "2.00", "height": "20.00", "name": "Varinha do Harry Potter (Preto)", "price": "58.07", "product_id": 87219151, "image": { "id": 171099852, "product_id": 87219151, "src": "https://d2r9epyceweg5n.cloudfront.net/stores/001/679/854/products/varinha-hp-luxo-21-5ebe5e31da8e2b693515728471178129-1024-10241-bc9b30adf4b178fabc16202348529015-1024-1024.jpeg", "position": 1, "alt": [], "created_at": "2021-05-05T17:14:05+0000", "updated_at": "2021-05-10T17:22:52+0000" }, "quantity": 5, "free_shipping": false, "weight": "1.00", "width": "4.00", "variant_id": 332977991, "variant_values": [ "Preto" ], "properties": [], "sku": null, "barcode": null }] } ``` -------------------------------- ### Subir cambios del tema con nuvemshop theme ftp push Source: https://tiendanube.dev/apps/nube-sdk/ftp-themes Comando para subir los cambios del tema al servidor FTP. Después de ejecutarlo, verifica en el Storefront que #nubesdk-root y #nubesdk-runtime estén en el DOM, que cada slot agregado esté presente con el valor de data-nubesdk-slot esperado, y que las apps rendericen correctamente. ```bash nuvemshop theme ftp push ``` -------------------------------- ### GET /locations/{id} - Retrieve a single location (JSON response) Source: https://tiendanube.dev/api/resources/2025-03/location Example response from the GET /locations/{id} endpoint. Returns a single Location object with the same structure as the list endpoint, including address, tags, and timestamps. The example uses the ID 01HTMFDH09VC6E2Q8KGTGP44D3. ```json { "id": "01HTMFDH09VC6E2Q8KGTGP44D3", "name": { "es_AR": "Nombre en espanol", "pt_BR": "Nome em português", "en_US": "Name in english" }, "store_id": "12345", "priority": 0, "address": { "zipcode": "12910802", "street": "St Louis", "number": "01", "floor": "Floor", "locality": "Locality", "city": "São Paulo", "province": { "code": "SP", "name": "São Paulo" }, "region": { "code": "SE", "name": "São Paulo" }, "country": { "code": "BR", "name": "São Paulo" }, "reference": "tiendanube's close", "between_streets": "St Mark Third", "verified_at": "1997-07-16T19:20:30+01:00" }, "is_default": true, "tags": [ "online", "offline" ], "created_at": "1997-07-16T19:20:30+01:00", "updated_at": "1997-07-16T19:20:30+01:00" } ``` -------------------------------- ### GET /products response Source: https://tiendanube.dev/es-AR/api/resources/2025-03/product Example response for the GET /products endpoint, showing a product with attributes, categories, images, variants, and localized fields. ```json [ { "attributes": [ { "en": "Size" } ], "categories": [ { "created_at": "2013-01-03T09:11:51-03:00", "description": { "en": "", "es": "", "pt": "" }, "handle": { "en": "poke-balls", "es": "poke-balls", "pt": "poke-balls" }, "id": 4567, "name": { "en": "Poké Balls", "es": "Poké Balls", "pt": "Poké Balls" }, "parent": null, "subcategories": [], "google_shopping_category": null, "seo_title": { "en": "", "es": "", "pt": "" }, "seo_description": { "en": "", "es": "", "pt": "" }, "updated_at": "2013-03-11T09:14:11-03:00" } ], "created_at": "2013-01-03T09:11:51-03:00", "description": { "en": "The best Ball with the ultimate level of performance. It will catch any wild Pokémon without fail.
", "es": "La mejor Bola con el nivel máximo de desempeño. Atrapará cualquier Pokémon sin fallar.
", "pt": "A melhor Bola com o nível máximo de desempenho. Ele vai pegar qualquer Pokémon selvagem sem falhar.
" }, "handle": { "en": "master-ball", "es": "master-ball", "pt": "master-ball" }, "id": 1234, "images": [ { "id": 101, "src": "http://d26lpennugtm8s.cloudfront.net/stores/001/234/products/servine-640-0.jpg", "position": 1, "product_id": 1234 }, { "id": 112, "src": "http://d26lpennugtm8s.cloudfront.net/stores/001/234/products/onyx-640-0.jpg", "position": 2, "product_id": 1234 }, { "id": 123, "src": "http://d26lpennugtm8s.cloudfront.net/stores/001/234/products/stoutland-640-0.jpg", "position": 3, "product_id": 1234 } ], "name": { "en": "Master Ball", "es": "Master Ball", "pt": "Master Ball" }, "brand": null, "video_url": "https://www.youtube.com/watch?v=57aG16_gQcU", "seo_title": { "en": "Master Ball", "es": "Master Ball", "pt": "Master Ball" }, "seo_description": { "en": "The best Ball with the ultimate level of performance. It will catch any wild Pokémon without fail.", "es": "La mejor Bola con el nivel máximo de desempeño. Atrapará cualquier Pokémon sin fallar.", "pt": "A melhor Bola com o nível máximo de desempenho. Ele vai pegar qualquer Pokémon selvagem sem falhar." }, "canonical_url": "https://mystore.mitiendanube.com/productos/master-ball/", "published": true, "visibility": "visible", "requires_shipping": true, "has_stock": true, "is_kit": false, "videos": [], "free_shipping": false, "updated_at": "2013-03-11T09:14:11-03:00", "variants": [ { "id": 101, "promotional_price": "19.00", "created_at": "2013-01-03T09:11:51-03:00", "depth": null, "height": null, "values": [ { "en": "Small" } ], "price": "25.00", "product_id": 1234, "stock_management": true, "stock": 5, "sku": "BSG1234A", "updated_at": "2013-03-11T09:14:11-03:00", "weight": "2.00", "width": null, "cost": null }, { "id": 112, "promotional_price": "19.00", "created_at": "2013-01-03T09:11:51-03:00", "depth": null, "height": null, "values": [ { "en": "Medium" } ], "price": "25.00", "product_id": 1234, "stock_management": true, "stock": 5, "sku": "BSG1234B", "updated_at": "2013-03-11T09:14:11-03:00", "weight": "2.25", "width": null, "cost": null }, { "id": 133, "promotional_price": "19.00", "created_at": "2013-01-03T09:11:51-03:00", "depth": null, "height": null, "values": [ { "en": "Large" } ], "price": "25.00", "product_id": 1234, "stock_management": true, "stock": 5, "sku": "BSG1234C", "updated_at": "2013-03-11T09:14:11-03:00", "weight": "2.50", "width": null, "cost": "10.99" } ], "tags": "Brinquedos, pokeball, oferta, colecionismo" } ] ``` -------------------------------- ### Iniciar servidor de desarrollo local (npm, yarn, pnpm, bun) Source: https://tiendanube.dev/apps/nube-sdk/getting-started Comando para iniciar el servidor de desarrollo local. Ejecuta dos procesos concurrentes: tsup observa los archivos fuente y los reconstruye en cada cambio, y un servidor estático sirve el bundle en http://localhost:8080. ```bash # npm npm run dev # yarn yarn dev # pnpm pnpm run dev # bun bun run dev ``` -------------------------------- ### tiendanube theme ftp setup Source: https://tiendanube.dev/themes/developer-tools/cli/ftp-theme-development Configures the FTP connection for a legacy theme. The CLI tests the FTP connection and saves the credentials in the .nuvem configuration file. ```APIDOC ## tiendanube theme ftp setup ### Description Configures the FTP connection for a legacy theme. The CLI tests the FTP connection and saves the credentials in the .nuvem configuration file. ### Method CLI command ### Command `tiendanube theme ftp setup` ### Parameters #### Options - `--ftp-server