> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.recurrente.com/referencia-api/api-reference/intents/update-intent-tax-invoice/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.recurrente.com/_mcp/server. # Corregir y reemitir el DTE de un intent PUT https://app.recurrente.com/api/intents/{intent_id}/tax_invoice Content-Type: application/json Actualiza el NIT y nombre fiscal, anula el DTE vigente y emite uno nuevo. Usa el ID unificado `in_…` que devuelve `POST /cash_sales` y `GET /intents/{id}`. Funciona también para cash sales. Si el proveedor no puede anular el DTE vigente, la operación responde `422` con `code: void_failed` y conserva el documento y los datos fiscales anteriores. Si la anulación termina pero la nueva emisión falla, responde `422` con `code: issue_failed`; `tax_invoice_url` queda en `null` hasta que repitas la operación y la emisión concluya. Usa un `Idempotency-Key` único por corrección. Repetir la misma llave y cuerpo reproduce la respuesta anterior sin anular ni reemitir otra vez. Esta corrección no genera un webhook adicional. Consulta `GET /intents/{id}` para obtener el `tax_invoice_url` vigente. En una cuenta conectada, envía también `X-ACCOUNT-ID`. Reference: https://docs.recurrente.com/referencia-api/api-reference/intents/update-intent-tax-invoice ## Authentication - `X-SECRET-KEY` header (required) — Tu clave secreta de API. Una llave de cuenta (`sk_live_...`, `sk_test_...`) opera sobre su propia cuenta y, con `X-ACCOUNT-ID`, sobre sus cuentas conectadas. La llave también fija el ambiente: una `sk_test_` solo lista y resuelve objetos de prueba (`live_mode: false`) y una `sk_live_` solo objetos reales. Un ID del otro ambiente responde `404` (`401` en `/customers`). Una llave de organización (`sk_org_live_...`, `sk_org_test_...`) alcanza todas las cuentas de una organización y solo sirve para leer: saldos, movimientos y reportes. Para operar sobre una cuenta debe nombrarla con `X-ACCOUNT-ID`; omitirlo en una lectura devuelve todas las cuentas de la organización. Cualquier otro endpoint responde `403` con `code: organization_key_unsupported`. ## Request ### Path parameters - `intent_id` (string, required) — ID unificado del intent ### Body (application/json) This endpoint expects an object. - `tax_invoice` (IntentsIntentIdTaxInvoicePutRequestBodyContentApplicationJsonSchemaTaxInvoice, required) ## Response ### 200 DTE corregido y reemitido; devuelve el intent actualizado - `type` (enum, required) — Tipo de pago subyacente - Allowed values: `payment`, `bank_transfer`, `crypto`, `balance`, `cash` - `id` (string, required) — ID del intent unificado; es la llave canónica para `GET /intents/{id}` y los eventos `intent.*`. - `status` (enum, required) — Estado normalizado. `paid` aplica solo al evento del pagador en pagos con balance (type balance). - Allowed values: `pending`, `succeeded`, `failed`, `canceled`, `paid` - `raw_status` (string, required) — Estado concreto sin normalizar (ej. `requires_capture`) - `receipt_number` (integer, optional) - `api_version` (string, optional) - `created_at` (datetime, optional) - `amount_in_cents` (integer, optional) - `currency` (string, optional) - `customer_id` (string, optional) - `user_id` (string, optional) - `customer` (IntentCustomer, optional) — Datos del cliente - `product` (IntentProduct, optional) — Producto principal - `tax_invoice_url` (string, optional, nullable) — Public page for the payment’s final certified tax document (invoice, receipt, or donation receipt). Exempt accounts default to receipts; NGOs default to donation receipts and can choose receipts in invoicing settings. The page links to the certifier’s copy; tax_invoice_uuid remains the authorization number. API responses return the current value. Webhooks reflect the value available when delivered and may contain null even if certification succeeds later. - `checkout` (Checkout, optional, nullable) - `payment` (IntentPayment, optional, nullable) - `details` (IntentDetails, optional) — Campos específicos del tipo de pago. Para `type: payment`, incluye `failure_reason`, comisiones, cuotas, canal y productos. Para `type: bank_transfer`, incluye `bank_reference` (referencia asignada por el banco o la red de pago) y `sender_comment` (comentario libre del pagador). ## Errors ### 400 Bad Request Error Falta el objeto `tax_invoice` - `message` (string, optional) — Mensaje de error - `code` (string, optional) — Código estable legible por máquinas, cuando aplica - `refund_id` (string, optional) — ID del reembolso relacionado cuando aplica - `endpoint` (string, optional) — Acción de API rechazada, cuando aplica - `errors` (ErrorErrors, optional) — Detalles de errores por campo ### 404 Not Found Error Intent no encontrado en el contexto de la cuenta - `message` (string, optional) — Mensaje de error - `code` (string, optional) — Código estable legible por máquinas, cuando aplica - `refund_id` (string, optional) — ID del reembolso relacionado cuando aplica - `endpoint` (string, optional) — Acción de API rechazada, cuando aplica - `errors` (ErrorErrors, optional) — Detalles de errores por campo ### 422 Unprocessable Entity Error No fue posible anular o reemitir el DTE - `message` (string, optional) — Mensaje de error - `code` (string, optional) — Código estable legible por máquinas, cuando aplica - `refund_id` (string, optional) — ID del reembolso relacionado cuando aplica - `endpoint` (string, optional) — Acción de API rechazada, cuando aplica - `errors` (ErrorErrors, optional) — Detalles de errores por campo ## Types ### IntentsIntentIdTaxInvoicePutRequestBodyContentApplicationJsonSchemaTaxInvoice - `tax_id` (string, required) — NIT corregido del receptor - `tax_name` (string, optional) — Nombre fiscal corregido del receptor ### IntentCustomer Datos del cliente ### IntentProduct Producto principal ### Checkout - `id` (string, required) — ID único del checkout - `status` (enum, required) — Estado del checkout - Allowed values: `unpaid`, `paid`, `payment_in_progress`, `expired` - `items` (list of CheckoutItem, required) — Colección completa de filas mutables del checkout. No incluye descuentos, envío, fees ni prorrateos derivados. - `bank_transfer_memo` (string, optional, nullable) — Referencia normalizada propuesta por la integración. Es null cuando Recurrente generará la referencia al iniciar el pago por transferencia. - `total_in_cents` (integer, optional) — Monto total en centavos (después de descuentos) - `subtotal_in_cents` (integer, optional) — Monto subtotal en centavos (antes de descuentos) - `discount` (CheckoutDiscount, optional, nullable) — Descuento aplicado al checkout (null si no hay descuento) - `currency` (enum, optional) — Moneda del checkout - Allowed values: `GTQ`, `USD` - `payment_method_types` (list of enum, optional) — Métodos de pago que se le ofrecerán al comprador en este checkout, ya resueltos según la configuración del producto/cuenta, la moneda y el tipo de cobro: `card` (tarjeta, pago de contado), `bank_transfer` (transferencia bancaria), `stablecoins` (dólares digitales), `balance` (Balance Recurrente). Las cuotas se exponen por separado en `available_installments`; `card` indica pago de contado, así que un checkout puede ofrecer cuotas (`available_installments` no vacío) sin incluir `card`. - Allowed values: `card`, `bank_transfer`, `stablecoins`, `balance` - `available_installments` (list of integer, optional) — Opciones de cuotas (en meses) disponibles en este checkout, independientes de `payment_method_types`. Vacío si no se ofrecen cuotas. - `live_mode` (boolean, optional) — Si el checkout está en modo producción (true) o prueba (false) - `success_url` (string, optional) — URL de redirección en caso de pago exitoso - `cancel_url` (string, optional) — URL de redirección en caso de cancelación - `expires_at` (datetime, optional) — Fecha de expiración del checkout - `created_at` (datetime, optional) — Fecha de creación - `metadata` (Metadata, optional) — Metadata personalizada del checkout - `custom_fields` (list of CheckoutCustomFieldValue, optional) — Valores recolectados de los campos personalizados. Si el checkout tiene múltiples productos, cada producto contribuye sus propias entradas — la `key` puede repetirse entre productos. Usa `field_id` como identificador canónico al reconciliar valores. - `transfer_setups` (list of TransferSetup, optional) — Configuraciones de transferencia asociadas - `application_fee_amount` (integer, optional, nullable) — Comisión de plataforma en centavos (pagos únicos): la suma de las transferencias de comisión del checkout. `null` cuando no hay comisión. - `application_fee_percent` (double, optional, nullable) — Comisión de plataforma como porcentaje del total de cada factura (suscripciones). `null` cuando no hay comisión. - `latest_intent` (CheckoutLatestIntent, optional, nullable) — Último intent unificado asociado. Su `id` usa el prefijo `in_…`. - `payment` (CheckoutPayment, optional, nullable) — Información del pago (si está pagado) - `payment_method` (CheckoutPaymentMethod, optional, nullable) — Método de pago utilizado ### IntentPayment ### IntentDetails Campos específicos del tipo de pago. Para `type: payment`, incluye `failure_reason`, comisiones, cuotas, canal y productos. Para `type: bank_transfer`, incluye `bank_reference` (referencia asignada por el banco o la red de pago) y `sender_comment` (comentario libre del pagador). - `channel` (enum, optional) — Origen exacto del cobro con tarjeta. Usa `POS` para una terminal física, `Celular como POS` para cobros desde un teléfono y `Link de pago` para cobros con tarjeta en línea. - Allowed values: `POS`, `Celular como POS`, `Link de pago` ### ErrorErrors Detalles de errores por campo ### CheckoutItem - `id` (string, required) — ID estable de esta fila del checkout. Úsalo para modificarla o eliminarla. - `price_id` (string, required) — ID del precio asociado. Puede repetirse en varias filas. - `quantity` (integer, required) — Cantidad absoluta de esta fila. - `metadata` (Metadata, required) - `variant` (ProductVariant, optional, nullable) — La variante que compra esta fila cuando el precio es de una variante; `null` para un producto sin variantes. ### CheckoutDiscount Descuento aplicado al checkout (null si no hay descuento) - `amount_in_cents` (integer, optional) — Monto del descuento en centavos - `coupon` (Coupon, optional) ### Metadata ### CheckoutCustomFieldValue Valor recolectado de un campo personalizado al pagar. - `field_id` (string, optional) — Identificador canónico del campo (estable y único por producto). Úsalo para reconciliar valores; en checkouts con múltiples productos, dos entradas pueden tener la misma `key` pero distinto `field_id`. - `key` (string, optional) — Identificador legible definido por el comerciante. Puede repetirse entre productos en el mismo checkout. - `type` (enum, optional) - Allowed values: `text`, `numeric`, `dropdown` - `value` (string, optional) ### TransferSetup Transferencia automática de fondos a otra cuenta de Recurrente. Con `amount_in_cents` (pagos únicos) se ejecuta una vez al completarse el cobro; con `amount_percent` (suscripciones) se ejecuta en cada cobro exitoso, transfiriendo ese porcentaje del total de la factura. - `id` (string, optional) — ID de la configuración de transferencia - `status` (enum, optional) — En pagos únicos: `pending` mientras el cobro no se completa y `completed` cuando la transferencia se ejecutó. `in_review` indica que el monto está reservado por revisión de riesgo. Un reembolso del pago debe esperar a que se resuelva esa revisión. En suscripciones la configuración queda `pending` mientras la suscripción está activa. `cancelled` si la revisión rechazó el envío, o si el checkout, la suscripción o un reembolso canceló el setup antes de ejecutarlo; `reversed` si un reembolso devolvió una transferencia ya completada. - Allowed values: `pending`, `in_review`, `completed`, `cancelled`, `reversed` - `amount_in_cents` (integer, optional, nullable) — Monto fijo en centavos a transferir (pagos únicos). No puede exceder el monto neto disponible después de fees, FEL e IVA. - `amount_percent` (double, optional, nullable) — Porcentaje del total de cada factura a transferir (suscripciones). - `currency` (string, optional) — Moneda - `recipient_id` (string, optional) — ID de la cuenta de Recurrente que recibe los fondos (no es una cuenta bancaria). - `purpose` (enum, optional, default: fund_split) — Qué representa la transferencia. `fund_split` (el valor predeterminado) es una distribución ordinaria de fondos: enruta parte del cobro a otra cuenta, sin más consecuencias. `platform_commission` marca la transferencia como la comisión que una cuenta conectada paga a su plataforma — es lo que crean `application_fee_amount` / `application_fee_percent` — y cambia tres comportamientos: solo puede fluir de la cuenta conectada hacia su plataforma (sobre una conexión activa), es la única que un reembolso revierte con `refund_application_fee: true`, y se incluye en la facturación diaria de comisiones (DTE) cuando la conexión la tiene habilitada. - Allowed values: `fund_split`, `platform_commission` ### CheckoutLatestIntent Último intent unificado asociado. Su `id` usa el prefijo `in_…`. - `id` (string, optional) - `type` (string, optional) - `created_at` (datetime, optional) - `data` (CheckoutLatestIntentData, optional) ### CheckoutPayment Información del pago (si está pagado) - `id` (string, optional) — ID del pago - `paymentable` (CheckoutPaymentPaymentable, optional) ### CheckoutPaymentMethod Método de pago utilizado - `id` (string, optional) — ID del método de pago - `type` (string, optional) — Tipo de método de pago - `card` (CheckoutPaymentMethodCard, optional) - `address` (Address, optional) - `phone_number` (string, optional, nullable) — Número de teléfono asociado al método de pago ### ProductVariant Una combinación vendible de las opciones del producto (el modelo de variantes de Shopify). Su precio es un `Price` del producto; la línea del checkout apunta a ese `price_id` y el webhook trae la variante en `items[].variant`. - `id` (string, optional) - `product_id` (string, optional) — El producto al que pertenece esta combinación. El SKU es único por producto, no por cuenta, así que es lo que permite resolver una fila de la lista. - `status` (enum, optional) - Allowed values: `active`, `archived` - `title` (string, optional) — Los valores unidos por " / ". - `option_values` (list of string, optional) - `sku` (string, optional, nullable) - `price_id` (string, optional) — El precio de esta variante. - `amount_in_cents` (integer, optional) - `currency` (string, optional) - `inventory_quantity` (integer, optional, nullable) — Existencias de esta variante. `null` es ilimitado. Baja con cada venta pagada de esta variante y puede quedar en negativo si se vendió más de lo que había; un número escrito aquí es cero o más. - `low_stock_threshold` (integer, optional, nullable) — Desde qué cantidad se considera baja esta variante. `null` usa el valor por defecto de la cuenta. ### Coupon - `id` (string, optional) — ID único del cupón - `name` (string, optional) — Nombre o código del cupón - `discount_mode` (enum, optional) — Tipo de descuento - Allowed values: `code`, `bank`, `custom_bins` - `display_name` (string, optional, nullable) — Nombre visible para el cliente (usado en modo custom_bins) - `amount_off_in_cents` (integer, optional, nullable) — Descuento fijo en centavos - `percent_off` (double, optional, nullable) — Porcentaje de descuento - `automatically_applies` (boolean, optional) — Si el descuento se aplica automáticamente en checkouts de tienda - `max_redemptions` (integer, optional, nullable) — Número máximo de usos - `times_redeemed` (integer, optional) — Número de veces que se ha redimido el descuento - `currency` (string, optional, nullable) — Moneda del descuento fijo - `duration` (enum, optional) — Duración del descuento para suscripciones - Allowed values: `once`, `repeating`, `forever` - `duration_in_payments` (integer, optional, nullable) — Cuántos pagos de la suscripción llevan el descuento (solo con `duration` = `repeating`) - `minimum_amount_in_cents` (integer, optional, nullable) — Compra mínima en centavos, sobre los productos a los que aplica (sin envío) - `once_per_customer` (boolean, optional) — Si cada cliente puede usar el cupón una sola vez - `product_ids` (list of string, optional) — IDs de los productos a los que aplica. Vacío si aplica a todos. - `starts_at` (datetime, optional, nullable) — Desde cuándo se puede usar el cupón - `expires_at` (datetime, optional, nullable) — Fecha de expiración - `status` (string, optional) — Estado del cupón ### CheckoutLatestIntentData - `auth_code` (string, optional, nullable) ### CheckoutPaymentPaymentable - `type` (string, optional) — Tipo de elemento pagable - `id` (string, optional) — ID del elemento pagable - `tax_name` (string, optional, nullable) — Nombre fiscal del comprador - `tax_id` (string, optional, nullable) — ID fiscal del comprador - `address` (Address, optional) - `phone_number` (string, optional, nullable) — Número de teléfono del comprador ### CheckoutPaymentMethodCard - `last4` (string, optional) — Últimos 4 dígitos de la tarjeta - `expiration_month` (integer, optional) — Mes de expiración - `expiration_year` (integer, optional) — Año de expiración - `network` (string, optional) — Red de la tarjeta - `issuer_name` (string, optional, nullable) — Nombre del banco emisor - `wallet` (enum, optional) — Billetera con la que se pagó. Solo presente en pagos con billetera; en ese caso issuer_name no viene. - Allowed values: `apple_pay` ### Address - `address_line_1` (string, optional, nullable) — Línea de dirección 1 - `address_line_2` (string, optional, nullable) — Línea de dirección 2 - `city` (string, optional, nullable) — Ciudad - `region` (string, optional, nullable) — Región o departamento - `country` (string, optional, nullable) — País - `zip_code` (string, optional, nullable) — Código postal ## Examples **Request** ```json { "tax_invoice": { "tax_id": "1234567-8" } } ``` **Response** ```json { "type": "payment", "id": "in_123", "status": "pending", "raw_status": "string", "receipt_number": 1, "api_version": "2026-06-01", "created_at": "2024-01-15T09:30:00Z", "amount_in_cents": 1, "currency": "string", "customer_id": "string", "user_id": "string", "customer": {}, "product": {}, "tax_invoice_url": "https://app.recurrente.com/f/340B4ACC-0435-4BE5-8EBD-9F4D92AED618", "checkout": { "id": "ch_lmgbvesmihkqzma3", "status": "paid", "items": [ { "id": "it_eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBQT09IiwiZXhwIjpudWxsLCJwdXIiOiJjaGVja291dF9pdGVtIn19", "price_id": "price_rky4dog7", "quantity": 2, "metadata": {}, "variant": { "id": "var_9lstwgbr", "product_id": "prod_9lstwgbr", "status": "active", "title": "M / Rojo", "option_values": [ "M", "Rojo" ], "sku": "string", "price_id": "price_3kd9sla2", "amount_in_cents": 12500, "currency": "GTQ", "inventory_quantity": 1, "low_stock_threshold": 3 } } ], "bank_transfer_memo": "SCHOOLAIDORDEN1001", "total_in_cents": 3000, "subtotal_in_cents": 3500, "discount": { "amount_in_cents": 500, "coupon": { "id": "coup_ugwoxcp4", "name": "VERANO25", "discount_mode": "code", "display_name": "string", "amount_off_in_cents": 1500, "percent_off": 1.1, "automatically_applies": false, "max_redemptions": 1, "times_redeemed": 0, "currency": "GTQ", "duration": "once", "duration_in_payments": null, "minimum_amount_in_cents": null, "once_per_customer": false, "product_ids": [], "starts_at": "2024-01-15T09:30:00Z", "expires_at": "2024-01-15T09:30:00Z", "status": "active" } }, "currency": "GTQ", "payment_method_types": [ "card", "bank_transfer" ], "available_installments": [ 3, 6 ], "live_mode": true, "success_url": "string", "cancel_url": "string", "expires_at": "2024-01-15T09:30:00Z", "created_at": "2024-01-15T09:30:00Z", "metadata": {}, "custom_fields": [ { "field_id": "ccf_xxxxxxxxxxxx", "key": "engraving", "type": "text", "value": "string" } ], "transfer_setups": [ { "id": "tr_4a7b9c8d", "status": "pending", "amount_in_cents": 1, "amount_percent": 1.1, "currency": "string", "recipient_id": "ac_123456", "purpose": "fund_split" } ], "application_fee_amount": 3250, "application_fee_percent": 10, "latest_intent": { "id": "string", "type": "string", "created_at": "2024-01-15T09:30:00Z", "data": { "auth_code": "string" } }, "payment": { "id": "string", "paymentable": { "type": "Subscription", "id": "string", "tax_name": "string", "tax_id": "string", "address": { "address_line_1": "string", "address_line_2": "string", "city": "string", "region": "string", "country": "string", "zip_code": "string" }, "phone_number": "string" } }, "payment_method": { "id": "string", "type": "card", "card": { "last4": "4242", "expiration_month": 12, "expiration_year": 2028, "network": "visa", "issuer_name": "string", "wallet": "apple_pay" }, "address": { "address_line_1": "string", "address_line_2": "string", "city": "string", "region": "string", "country": "string", "zip_code": "string" }, "phone_number": "string" } }, "payment": {}, "details": { "channel": "POS" } } ``` **SDK Code** ```python import requests url = "https://app.recurrente.com/api/intents/in_abcdefgh/tax_invoice" payload = { "tax_invoice": { "tax_id": "1234567-8" } } headers = { "X-SECRET-KEY": "", "Content-Type": "application/json" } response = requests.put(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://app.recurrente.com/api/intents/in_abcdefgh/tax_invoice'; const options = { method: 'PUT', headers: {'X-SECRET-KEY': '', 'Content-Type': 'application/json'}, body: '{"tax_invoice":{"tax_id":"1234567-8"}}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://app.recurrente.com/api/intents/in_abcdefgh/tax_invoice" payload := strings.NewReader("{\n \"tax_invoice\": {\n \"tax_id\": \"1234567-8\"\n }\n}") req, _ := http.NewRequest("PUT", url, payload) req.Header.Add("X-SECRET-KEY", "") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://app.recurrente.com/api/intents/in_abcdefgh/tax_invoice") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Put.new(url) request["X-SECRET-KEY"] = '' request["Content-Type"] = 'application/json' request.body = "{\n \"tax_invoice\": {\n \"tax_id\": \"1234567-8\"\n }\n}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.put("https://app.recurrente.com/api/intents/in_abcdefgh/tax_invoice") .header("X-SECRET-KEY", "") .header("Content-Type", "application/json") .body("{\n \"tax_invoice\": {\n \"tax_id\": \"1234567-8\"\n }\n}") .asString(); ``` ```php request('PUT', 'https://app.recurrente.com/api/intents/in_abcdefgh/tax_invoice', [ 'body' => '{ "tax_invoice": { "tax_id": "1234567-8" } }', 'headers' => [ 'Content-Type' => 'application/json', 'X-SECRET-KEY' => '', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://app.recurrente.com/api/intents/in_abcdefgh/tax_invoice"); var request = new RestRequest(Method.PUT); request.AddHeader("X-SECRET-KEY", ""); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"tax_invoice\": {\n \"tax_id\": \"1234567-8\"\n }\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "X-SECRET-KEY": "", "Content-Type": "application/json" ] let parameters = ["tax_invoice": ["tax_id": "1234567-8"]] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://app.recurrente.com/api/intents/in_abcdefgh/tax_invoice")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "PUT" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```