{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-@l10n/es/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Idempotencia","description":"Documentação oficial, guias e referência da API Auvo v2.","siteUrl":"https://developers.auvo.com.br","lang":"pt-BR","keywords":"auvo, api, documentação, developers, field service, workforce","meta":[{"name":"og:site_name","content":"Auvo Developers"},{"name":"og:locale","content":"pt_BR"},{"name":"og:locale:alternate","content":"es_ES"},{"name":"og:locale:alternate","content":"en_US"},{"name":"twitter:card","content":"summary_large_image"},{"name":"twitter:site","content":"@auvoapp"}],"llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"idempotencia","__idx":0},"children":["Idempotencia"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PUT"]}," y ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DELETE"]}," ya son idempotentes por diseño HTTP. Para ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST"]}," y"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PATCH"]}," en recursos sensibles (tareas, OS, tickets), sigue estas prácticas."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"correlación-por-externalid","__idx":1},"children":["Correlación por ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalId"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Envía un identificador generado por tu sistema en ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalId"]}," (p. ej. ID del"," ","ERP). Antes de crear, consulta el ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]}," correspondiente filtrando por ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalId"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Si existe, actualiza con ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PATCH"]},"; si no, crea con ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"clave-de-idempotencia-por-entrega-webhooks","__idx":2},"children":["Clave de idempotencia por entrega (Webhooks)"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Usa ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deliveryId"]}," del payload para deduplicar del lado cliente (write-once en"," ","una tabla ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["webhook_deliveries"]},")."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"política-de-retry-segura","__idx":3},"children":["Política de retry segura"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"ts","header":{"controls":{"copy":{}}},"source":"async function postWithSafety(body) {\n  const existing = await findByExternalId(body.externalId);\n  if (existing) return existing;\n  try {\n    return await api.post('/tasks', body);\n  } catch (err) {\n    if (err.status === 409) {\n      return findByExternalId(body.externalId);\n    }\n    throw err;\n  }\n}\n","lang":"ts"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"en-roadmap","__idx":4},"children":["En roadmap"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Soporte nativo a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Idempotency-Key"]}," (estilo Stripe) — consulta el"," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/changelog"},"children":["changelog"]},"."]}]}]},"headings":[{"value":"Idempotencia","id":"idempotencia","depth":1},{"value":"Correlación por externalId","id":"correlación-por-externalid","depth":2},{"value":"Clave de idempotencia por entrega (Webhooks)","id":"clave-de-idempotencia-por-entrega-webhooks","depth":2},{"value":"Política de retry segura","id":"política-de-retry-segura","depth":2},{"value":"En roadmap","id":"en-roadmap","depth":2}],"frontmatter":{"title":"Idempotencia","description":"Cómo asegurar retries seguros en POST/PATCH.","seo":{"title":"Idempotencia"}},"lastModified":"2026-04-24T13:01:34.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/es/guides/idempotency","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}