Go-āϤ⧠āĻāĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āĻ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻ: āĻā§, āĻĄā§āĻĄā§āĻĒ āĻā§āĻŦāĻŋāϞ, āϰāĻŋāĻā§āϰāĻžāĻ
Go-āϤ⧠idempotent āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰā§āύ: idempotency āĻā§, dedup āĻā§āĻŦāĻŋāϞ āĻāĻŦāĻ āĻĒā§āĻŽā§āύā§āĻ, āĻāĻŽā§āĻĒā§āϰā§āĻ āĻ āĻāϝāĻŧā§āĻŦāĻšā§āĻā§āϰ āĻāύā§āϝ āϰāĻŋāĻā§āϰāĻžāĻ-āϏā§āĻāĻĢ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āĻāĻŋāĻāĻžāĻŦā§ āϤā§āϰāĻŋ āĻāϰāĻŦā§āύāĨ¤

āĻā§āύ āϰāĻŋāĻā§āϰāĻžāĻ āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻ āϤā§āϰāĻŋ āĻāϰ⧠(āĻāĻŦāĻ āĻā§āύ āĻāĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āϏāĻŋ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ)\n\nāϰāĻŋāĻā§āϰāĻžāĻ āĻāĻā§ āĻāĻŽāύāĻāĻŋ āϝāĻāύ āĻāĻŋāĻā§ "āĻā§āϞ" āĻšāϝāĻŧ āύāĻžāĨ¤ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻāĻžāĻāĻŽāĻāĻāĻ āĻĒāĻžāϝāĻŧ āϝāĻāύ āϏāĻžāϰā§āĻāĻžāϰ āĻāĻāύāĻ āĻāĻžāĻ āĻāϰāĻā§āĨ¤ āĻāĻāĻāĻŋ āĻŽā§āĻŦāĻžāĻāϞ āĻāĻžāύā§āĻāĻļāύ āĻĒāĻĄāĻŧā§ āϝāĻžāϝāĻŧ āĻāĻŦāĻ āĻ
ā§āϝāĻžāĻĒ āĻĒā§āύāϰāĻžāϝāĻŧ āĻā§āώā§āĻāĻž āĻāϰā§āĨ¤ āĻāĻāĻāĻŋ āĻāĻŦ āϰāĻžāύāĻžāϰ 502 āĻĒāĻžāϝāĻŧ āĻāĻŦāĻ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻāĻāĻ āĻ
āύā§āϰā§āϧāĻāĻŋ āĻāĻŦāĻžāϰ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤ āĻ
ā§āϝāĻžāĻ-āϞāĻŋāϏā§āĻ-āĻāϝāĻŧāĻžāύ āĻĄā§āϞāĻŋāĻāĻžāϰāĻŋ (āĻāĻŋāĻ āĻāĻŦāĻ āĻāϝāĻŧā§āĻŦāĻšā§āĻāĻā§āϞāĻŋāϤ⧠āϏāĻžāϧāĻžāϰāĻŖ) āĻĨāĻžāĻāϞ⧠āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻ āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĨ¤\n\nāĻāĻŽāύāĻ āĻāĻžāϰāĻŖā§ āĻāĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āϏāĻŋ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ: āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤ āĻ
āύā§āϰā§āϧāĻā§āϞ⧠āĻā§āĻŦāϞ āĻāĻāĻŦāĻžāϰ āĻāϞ āĻāϰāĻžāϰ āĻŽāϤā§āĻ āĻā§āĻĄāĻŧāĻžāύā§āϤ āĻĢāϞāĻžāĻĢāϞ āĻĻā§āĻāϝāĻŧāĻž āĻāĻāĻŋāϤāĨ¤\n\nāĻāϝāĻŧā§āĻāĻāĻŋ āĻļāĻŦā§āĻĻ āϏāĻšāĻā§āĻ āĻā§āϞāĻŋāϝāĻŧā§ āĻĢā§āϞāĻž āϝāĻžāϝāĻŧ:\n\n- Safe: āĻāϞ āĻāϰāϞ⧠āϏā§āĻā§āĻ āĻŦāĻĻāϞāĻžāϝāĻŧ āύāĻž (āĻāĻĻāĻžāĻšāϰāĻŖ, āĻāĻāĻāĻŋ āĻĒāĻĄāĻŧāĻž)āĨ¤\n- Idempotent: āĻāĻāĻžāϧāĻŋāĻāĻŦāĻžāϰ āĻāϞ āĻāϰāϞ⧠āĻāĻāĻŦāĻžāϰ āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāĻžāύ āĻĒā§āϰāĻāĻžāĻŦ āϰāĻžāĻā§āĨ¤\n- At-least-once: āĻĒāĻžāĻ āĻ āϝāϤāĻā§āώāĻŖ āύāĻž âāĻāĻžāĻā§āĻāĻžâ āĻšāϝāĻŧ āϤāϤāĻā§āώāĻŖ āϏā§āύā§āĻāĻžāϰ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋ āĻāϰā§, āϤāĻžāĻ āϰāĻŋāϏāĻŋāĻāĻžāϰā§āϰ āĻāĻžāĻā§ āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻ āĻšā§āϝāĻžāύā§āĻĄāϞ āĻāϰāĻžāϰ āĻĻāĻžāϝāĻŧ āĻĨāĻžāĻā§āĨ¤\n\nāĻāĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āϏāĻŋ āύāĻž āĻĨāĻžāĻāϞ⧠āϰāĻŋāĻā§āϰāĻžāĻ āĻĒā§āϰāĻā§āϤ āĻā§āώāϤāĻŋ āĻāĻāĻžāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻāĻāĻŋ āĻĒā§āĻŽā§āύā§āĻ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻ āĻĻā§āĻāĻŋ āĻāĻžāϰā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āϝāĻĻāĻŋ āĻĒā§āϰāĻĨāĻŽ āĻāĻžāϰā§āĻ āϏāĻĢāϞ āĻšāϝāĻŧ āĻāĻŋāύā§āϤ⧠āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻĒāϰā§āϝāύā§āϤ āϰā§āϏāĻĒāύā§āϏ āĻĒā§āĻāĻāĻžāϝāĻŧ āύāĻžāĨ¤ āĻāĻāĻāĻŋ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻ āĻāĻžāĻāĻāĻŋ āĻāĻžāĻāĻŽāĻāĻāĻā§āϰ āĻĒāϰ⧠āĻĒā§āύāϰāĻžāϝāĻŧ āĻā§āώā§āĻāĻž āĻāϰāϞ⧠āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻ āϏāĻžāϰāĻŋ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻāĻāĻŋ āĻāϝāĻŧā§āĻŦāĻšā§āĻ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āĻāĻāĻ āĻāĻā§āύā§āĻ āĻĻā§āĻāĻŦāĻžāϰ āĻĒā§āϰāϏā§āϏ āĻāϰ⧠āĻĻā§āĻāĻŋ āĻāĻŽā§āĻāϞ āĻĒāĻžāĻ āĻžāϤ⧠āĻĒāĻžāϰā§āĨ¤\n\nāĻŽā§āϞ āĻĒāϝāĻŧā§āύā§āĻ: āĻāĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āϏāĻŋ āĻāĻāĻāĻŋ API āĻā§āĻā§āϤāĻŋ, āĻāĻāĻāĻŋ āĻā§āĻĒāύ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āĻŦāĻŋāĻŦāϰāĻŖ āύāϝāĻŧāĨ¤ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻāϰāĻž āĻāĻžāύāϤ⧠āĻšāĻŦā§ āĻā§ āϤāĻžāϰāĻž āϰāĻŋāĻā§āϰāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§, āĻā§ āĻĒāĻžāĻ āĻžāϤ⧠āĻšāĻŦā§, āĻāĻŦāĻ āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻ āϧāϰāĻž āĻĒāĻĄāĻŧāϞ⧠āĻā§ āϰā§āϏāĻĒāύā§āϏ āĻāĻļāĻž āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤ āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻāϰāĻŖ āύāĻŋāϰā§āĻŦāĻŋāĻā§āύ⧠āĻŦāĻĻāϞāĻžāύ, āϤāĻžāĻšāϞ⧠āϰāĻŋāĻā§āϰāĻžāĻ āϞāĻāĻŋāĻ āĻā§āĻā§ āĻĒāĻĄāĻŧā§ āĻāĻŦāĻ āύāϤā§āύ āĻŦā§āϝāϰā§āĻĨāϤāĻžāϰ āĻāĻĒāĻžāϝāĻŧ āϤā§āϰāĻŋ āĻšāϝāĻŧāĨ¤\n\nāĻāĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āϏāĻŋ āĻŽāύāĻŋāĻāϰāĻŋāĻ āĻ āϰāĻŋāĻāύāϏāĻŋāϞāĻŋāϝāĻŧā§āĻļāύā§āϰ āĻŦāĻŋāĻāϞā§āĻĒ āύāϝāĻŧāĨ¤ āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻ āϰā§āĻ āĻā§āϰā§āϝāĻžāĻ āĻāϰā§āύ, âreplayâ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āϞāĻ āĻāϰā§āύ, āĻāĻŦāĻ āϏāĻŽāϝāĻŧā§ āϏāĻŽāϝāĻŧā§ āĻŦāĻžāĻāϰā§āϰ āϏāĻŋāϏā§āĻā§āĻŽ (āϝā§āĻŽāύ āĻāĻāĻāĻŋ āĻĒā§āĻŽā§āύā§āĻ āĻĒā§āϰā§āĻāĻžāĻāĻĄāĻžāϰ) āĻāĻĒāύāĻžāϰ āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āϏāĻžāĻĨā§ āĻŽāĻŋāϞāĻŋāϝāĻŧā§ āĻĻā§āĻā§āύāĨ¤\n\n## āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻā§āϰ āĻāύā§āϝ āĻāĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āϏāĻŋāϰ āϏā§āĻā§āĻĒ āĻāĻŦāĻ āύāĻŋāϝāĻŧāĻŽ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰā§āύ\n\nāĻā§āĻŦāĻŋāϞ āĻŦāĻž āĻŽāĻŋāĻĄāϞāĻāϝāĻŧā§āϝāĻžāϰ āϝā§āĻ āĻāϰāĻžāϰ āĻāĻā§ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāύ âāĻāĻāĻ āĻ
āύā§āϰā§āϧâ āĻā§ āĻŦā§āĻāĻžāϝāĻŧ āĻāĻŦāĻ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āϝāĻāύ āϰāĻŋāĻā§āϰāĻžāĻ āĻāϰ⧠āϏāĻžāϰā§āĻāĻžāϰ āĻā§ āĻĒā§āϰāϤāĻŋāĻļā§āϰā§āϤāĻŋ āĻĻā§āĻŦā§āĨ¤\n\nāĻŦā§āĻļāĻŋ āϏāĻŽāϏā§āϝāĻž POST-āĻ āĻĻā§āĻāĻž āϝāĻžāϝāĻŧ āĻāĻžāϰāĻŖ āĻāĻāĻŋ āĻĒā§āϰāĻžāϝāĻŧāĻ āĻāĻŋāĻā§ āϤā§āϰāĻŋ āĻāϰ⧠āĻŦāĻž āϏāĻžāĻāĻĄ-āĻāĻĢā§āĻā§āĻ āĻā§āϰāĻŋāĻāĻžāϰ āĻāϰ⧠(āĻāĻžāϰā§āĻĄ āĻāĻžāϰā§āĻ āĻāϰāĻž, āĻāĻāĻāĻŋ āĻŽā§āϏā§āĻ āĻĒāĻžāĻ āĻžāύā§, āĻāĻāĻāĻŋ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻļā§āϰ⧠āĻāϰāĻž)āĨ¤ PATCH-āĻ āĻāĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āϏāĻŋ āĻĻāϰāĻāĻžāϰ āĻšāϤ⧠āĻĒāĻžāϰ⧠āϝāĻĻāĻŋ āϤāĻž āϏāĻžāĻāĻĄ-āĻāĻĢā§āĻā§āĻ āĻā§āϰāĻŋāĻāĻžāϰ āĻāϰā§, āĻļā§āϧ⧠āĻāĻāĻāĻŋ āĻĢāĻŋāϞā§āĻĄ āĻāĻĒāĻĄā§āĻ āύāĻž āĻšāϝāĻŧāĨ¤ GET āϏā§āĻā§āĻ āĻŦāĻĻāϞāĻžāύ⧠āĻāĻāĻŋāϤ āύāϝāĻŧāĨ¤\n\n### āϏā§āĻā§āĻĒ āύāĻŋāϰā§āϧāĻžāϰāĻŖ: āĻā§āĻĨāĻžāϝāĻŧ āĻāĻāĻāĻŋ āĻā§ āĻāĻāύāĻŋāĻ\n\nāĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāϏāĻžāϝāĻŧāĻŋāĻ āύāĻŋāϝāĻŧāĻŽā§āϰ āϏāĻā§āĻā§ āĻŽāĻŋāϞ āϰā§āĻā§ āĻāĻāĻāĻŋ āϏā§āĻā§āĻĒ āĻŦā§āĻā§ āύāĻŋāύāĨ¤ āĻā§āĻŦ āĻŦāĻŋāϏā§āϤā§āϤ āĻšāϞ⧠āĻŦā§āϧ āĻāĻžāĻ āĻŦā§āϞāĻ āĻšāĻŦā§; āĻā§āĻŦ āϏāĻāĻā§āϰā§āĻŖ āĻšāϞ⧠āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻ āĻāĻāĻŦā§āĨ¤\n\nāϏāĻžāϧāĻžāϰāĻŖ āϏā§āĻā§āĻĒ:\n\n- per endpoint + customer\n- per endpoint + external object (āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, invoice_id āĻŦāĻž order_id)\n- per endpoint + tenant (āĻŽāĻžāϞā§āĻāĻŋ-āĻā§āύā§āϝāĻžāύā§āϏāĻŋ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āĻāύā§āϝ)\n- per endpoint + payment method + amount (āĻļā§āϧ⧠āϝāĻĻāĻŋ āĻāĻĒāύāĻžāϰ āĻĒā§āϰā§āĻĄāĻžāĻā§āĻ āύā§āϤāĻŋāϤ⧠āϏā§āĻāĻž āĻ āĻŋāĻ āĻĨāĻžāĻā§)\n\nāĻāĻĻāĻžāĻšāϰāĻŖ: âCreate paymentâ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻā§āϰ āĻāύā§āϝ āĻā§āĻā§ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāĻžāϏā§āĻāĻŽāĻžāϰā§āϰ āĻāĻžāĻā§ āĻāĻāύāĻŋāĻ āĻāϰā§āύāĨ¤ âIngest webhook eventâ āĻāϰ āĻāύā§āϝ, āϏā§āĻāĻŋāĻā§ payment provider-āĻāϰ āĻāĻā§āύā§āĻ ID (āĻĒā§āϰā§āĻāĻžāĻāĻĄāĻžāϰā§āϰ āĻā§āϞā§āĻŦāĻžāϞ āĻāĻāύāĻŋāĻ) āϏā§āĻā§āĻĒ āĻāϰā§āύāĨ¤\n\n### āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻā§ āĻāĻĒāύāĻŋ āĻā§ āĻĢā§āϰāϤ āĻĻā§āĻŦā§āύ āϤāĻž āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰā§āύ\n\nāĻāĻāĻāĻŋ āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻ āĻāϞ⧠āĻĒā§āϰāĻĨāĻŽ āϏāĻĢāϞ āĻĒā§āϰāĻā§āώā§āĻāĻžāϰ āĻāĻāĻ āĻāĻāĻāĻāĻžāĻŽ āĻĢā§āϰāϤ āĻĻāĻŋāύāĨ¤ āĻŦāĻžāϏā§āϤāĻŦā§ āĻāϰ āĻŽāĻžāύ⧠āĻšāϞ⧠āĻāĻāĻ HTTP āϏā§āĻā§āϝāĻžāĻāĻžāϏ āĻā§āĻĄ āĻāĻŦāĻ āĻāĻāĻ āϰā§āϏāĻĒāύā§āϏ āĻŦāĻĄāĻŋ (āĻ
āĻĨāĻŦāĻž āĻ
āύā§āϤāϤ āĻāĻāĻ resource ID āĻ state) āϰāĻŋāϞā§āĻĒ āĻāϰāĻžāĨ¤\n\nāĻā§āϞāĻžāϝāĻŧā§āύā§āĻāϰāĻž āĻāϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§āĨ¤ āϝāĻĻāĻŋ āĻĒā§āϰāĻĨāĻŽ āĻā§āώā§āĻāĻž āϏāĻĢāϞ āĻšāϝāĻŧ āĻāĻŋāύā§āϤ⧠āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āĻĒāĻĄāĻŧā§ āϝāĻžāϝāĻŧ, āϰāĻŋāĻā§āϰāĻžāĻ āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āĻāĻžāϰā§āĻ āĻŦāĻž āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāĻŦ āϤā§āϰāĻŋ āĻāϰāĻž āĻāĻāĻŋāϤ āύāϝāĻŧāĨ¤\n\n### āĻāĻāĻāĻŋ āϰāĻŋāĻā§āύāĻļāύ āĻāĻāύā§āĻĄā§ āĻŦā§āĻā§ āύāĻŋāύ\n\nāĻā§āĻā§āϞ⧠āĻŽā§āϝāĻŧāĻžāĻĻ āĻļā§āώ āĻšāĻāϝāĻŧāĻž āĻāĻāĻŋāϤāĨ¤ āϏā§āĻā§āϞ⧠āĻĒāϰā§āϝāĻžāĻĒā§āϤ āϏāĻŽāϝāĻŧ āϰāĻžāĻā§āύ āϝāĻžāϤ⧠āĻŦāĻžāϏā§āϤāĻŦāϏāĻŽā§āĻŽāϤ āϰāĻŋāĻā§āϰāĻžāĻ āĻāĻŦāĻ āĻŦāĻŋāϞāĻŽā§āĻŦāĻŋāϤ āĻāĻžāĻ āĻāĻāĻžāϰ āĻšāϝāĻŧāĨ¤\n\n- Payments: 24 āĻĨā§āĻā§ 72 āĻāύā§āĻāĻž āϏāĻžāϧāĻžāϰāĻŖ\n- Imports: āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰāĻž āĻĒāϰ⧠āĻāĻŦāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§, āϤāĻžāĻ āĻāĻ āϏāĻĒā§āϤāĻžāĻš āϝā§āĻā§āϤāĻŋāϝā§āĻā§āϤ āĻšāϤ⧠āĻĒāĻžāϰā§\n- Webhooks: āĻĒā§āϰā§āĻāĻžāĻāĻĄāĻžāϰā§āϰ āϰāĻŋāĻā§āϰāĻžāĻ āĻĒāϞāĻŋāϏāĻŋāϰ āϏāĻžāĻĨā§ āĻŽāĻŋāϞāĻžāύ\n\n### âāĻāĻāĻ āĻ
āύā§āϰā§āϧâ āĻā§āĻāĻžāĻŦā§ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻŦā§āύ: āϏā§āĻĒāώā§āĻ āĻā§ āĻŦāύāĻžāĻŽ āĻŦāĻĄāĻŋ āĻšā§āϝāĻžāĻļ\n\nāĻāĻāĻāĻŋ āϏā§āĻĒāώā§āĻ idempotency key (āĻšā§āĻĄāĻžāϰ āĻŦāĻž āĻā§āώā§āϤā§āϰ) āϏāĻžāϧāĻžāϰāĻŖāϤ āϏāĻŦāĻā§āϝāĻŧā§ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āύāĻŋāϝāĻŧāĻŽāĨ¤\n\nāĻāĻāĻāĻŋ āĻŦāĻĄāĻŋ āĻšā§āϝāĻžāĻļ āĻŦā§āϝāĻžāĻāĻāĻĒ āĻšāĻŋāϏā§āĻŦā§ āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰāϤ⧠āĻĒāĻžāϰā§, āĻāĻŋāύā§āϤ⧠āϤāĻž āϏāĻšāĻā§āĻ āĻāĻžāĻā§ āĻŽāĻžāϝāĻŧāĻžāĻŽāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āĻĢāϞ⧠(āĻĢāĻŋāϞā§āĻĄ āĻ
āϰā§āĻĄāĻžāϰ, āĻšā§āϝāĻŧāĻžāĻāĻāϏā§āĻĒā§āϏ, āĻāĻžāĻāĻŽāϏā§āĻā§āϝāĻžāĻŽā§āĻĒ)āĨ¤ āĻšā§āϝāĻžāĻļ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞ⧠āĻāύāĻĒā§āĻ āύāϰāĻŽāĻžāϞāĻžāĻāĻ āĻāϰā§āύ āĻāĻŦāĻ āĻā§āύ āĻĢāĻŋāϞā§āĻĄāĻā§āϞāĻŋāĻā§ āĻ
āύā§āϤāϰā§āĻā§āĻā§āϤ āĻāϰāĻž āĻšāĻŦā§ āϤāĻž āĻāĻ ā§āϰāĻāĻžāĻŦā§ āĻ āĻŋāĻ āϰāĻžāĻā§āύāĨ¤\n\n## āĻāĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āϏāĻŋ āĻā§: āĻŦāĻžāϏā§āϤāĻŦā§ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§\n\nāĻāĻāĻāĻŋ idempotency key āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻāĻŦāĻ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ āϏāĻšāĻ āĻā§āĻā§āϤāĻŋ: âāĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻ āĻā§ āĻāĻŦāĻžāϰ āĻĻā§āĻā§āύ, āĻāĻāĻ āĻ
āύā§āϰā§āϧ āĻšāĻŋāϏā§āĻŦā§ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āύāĨ¤â retry-safe API-āĻāϰ āĻāύā§āϝ āĻāĻāĻž āϏāĻŦāĻā§āϝāĻŧā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāϝā§āĻā§āϝ āĻā§āϞāĻā§āϞā§āϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋāĨ¤\n\nāĻā§ āĻĻā§âāĻĒāĻā§āώ āĻĨā§āĻā§āĻ āĻāϏāϤ⧠āĻĒāĻžāϰā§, āĻāĻŋāύā§āϤ⧠āĻ
āϧāĻŋāĻāĻžāĻāĻļ API-āϰ āĻāύā§āϝ āĻāĻāĻŋ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ-āĻā§āύāĻžāϰā§āĻā§āĻĄ āĻšāĻāϝāĻŧāĻž āĻāĻāĻŋāϤāĨ¤ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻāĻ āĻāĻžāύ⧠āĻāĻāύ āĻāĻāĻŋ āĻāĻāĻ āĻ
ā§āϝāĻžāĻāĻļāύ āĻĒā§āύāϰāĻžāϝāĻŧ āĻā§āώā§āĻāĻž āĻāϰāĻā§, āϤāĻžāĻ āĻāĻāĻŋ āĻāĻāĻ āĻā§ āĻĒā§āύāϰāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āϏāĻžāϰā§āĻāĻžāϰ-āĻā§āύāĻžāϰā§āĻ āĻā§ āϤāĻāύāĻ āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰ⧠āϝāĻāύ āĻāĻĒāύāĻŋ āĻĒā§āϰāĻĨāĻŽā§ āĻāĻāĻāĻŋ "āĻĄā§āϰāĻžāĻĢāĻ" āϰāĻŋāϏā§āϰā§āϏ (āĻāĻĻāĻžāĻšāϰāĻŖ: āĻāĻāĻāĻŋ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāĻŦ) āϤā§āϰāĻŋ āĻāϰā§āύ āĻāĻŦāĻ āĻĒāϰ⧠āĻā§āϞāĻžāϝāĻŧā§āύā§āĻāĻĻā§āϰ āϏā§āĻ āĻāĻŦ āĻāĻāĻĄāĻŋ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻāϰ⧠āĻĒā§āύāϰāĻžāϝāĻŧ āĻā§āώā§āĻāĻž āĻāϰāϤ⧠āĻĻā§āύ, āĻāĻŋāύā§āϤ⧠āϏā§āĻā§āϞ⧠āĻĒā§āϰāĻĨāĻŽ āĻ
āύā§āϰā§āϧ⧠āϏāĻšāĻžāϝāĻŧāĻ āύāϝāĻŧāĨ¤\n\nāϰā§āϝāĻžāύā§āĻĄāĻŽ, āĻ
āύā§āĻŽāĻžāύāϝā§āĻā§āϝ āύāϝāĻŧ āĻāĻŽāύ āϏā§āĻā§āϰāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤ āĻāĻŽāĻĒāĻā§āώ⧠128 āĻŦāĻŋāĻ āϰâā§āϝāĻžāύā§āĻĄāĻŽāύā§āϏ āϞāĻā§āώā§āϝ āĻāϰā§āύ (āĻāĻĻāĻžāĻšāϰāĻŖ: 32 hex āĻ
āĻā§āώāϰ āĻŦāĻž āĻāĻāĻāĻŋ UUID)āĨ¤ āĻāĻžāĻāĻŽāϏā§āĻā§āϝāĻžāĻŽā§āĻĒ āĻŦāĻž user IDs āĻĨā§āĻā§ āĻā§ āĻŦāĻžāύāĻžāĻŦā§āύ āύāĻžāĨ¤\n\nāϏāĻžāϰā§āĻāĻžāϰā§, āĻā§āĻāĻŋ āĻāĻŽāύ āĻĒā§āϰāϏāĻā§āĻā§āϰ āϏāĻžāĻĨā§ āϏā§āĻā§āϰ āĻāϰā§āύ āϝāĻžāϤ⧠āĻā§āĻĄāĻŧāĻžāύ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ āĻŽā§āϞ āĻĢāϞāĻžāĻĢāϞ āϰāĻŋāϞā§āĻĒ āĻāϰāĻžāϰ āĻāύā§āϝ āϝāĻĨā§āώā§āĻ āϤāĻĨā§āϝ āĻĨāĻžāĻā§:\n\n- āϝ⧠āĻāϞ āĻāϰā§āĻā§ (account āĻŦāĻž user ID)\n- āĻā§āύ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻ āĻŦāĻž āĻ
āĻĒāĻžāϰā§āĻļāύā§āϰ āĻāύā§āϝ āĻāĻāĻŋ āĻĒā§āϰāϝā§āĻā§āϝ\n- āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻ
āύā§āϰā§āϧ āĻĢāĻŋāϞā§āĻĄāĻā§āϞā§āϰ āĻāĻāĻāĻŋ āĻšā§āϝāĻžāĻļ\n- āĻŦāϰā§āϤāĻŽāĻžāύ āϏā§āĻā§āϝāĻžāĻāĻžāϏ (in-progress, succeeded, failed)\n- āϰāĻŋāϞā§āĻĒ āĻāϰāĻžāϰ āĻāύā§āϝ āϰā§āϏāĻĒāύā§āϏ (āϏā§āĻā§āϝāĻžāĻāĻžāϏ āĻā§āĻĄ āĻ āĻŦāĻĄāĻŋ)\n\nāĻāĻāĻāĻŋ āĻā§ āϏāĻžāϧāĻžāϰāĻŖāϤ āϏā§āĻā§āĻĒāĻĄ āĻšāĻāϝāĻŧāĻž āĻāĻāĻŋāϤ, āϏāĻžāϧāĻžāϰāĻŖāϤ user (āĻ
āĻĨāĻŦāĻž API token) āĻĒā§āϞāĻžāϏ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻāĨ¤ āϝāĻĻāĻŋ āĻāĻāĻ āĻā§ āĻāĻŋāύā§āύ āĻĒā§-āϞā§āĻĄ āύāĻŋāϝāĻŧā§ āĻĒā§āύāϰāĻžāϝāĻŧ āĻĒāĻžāĻ āĻžāύ⧠āĻšāϝāĻŧ, āϏā§āĻĒāώā§āĻ āĻāĻāĻāĻŋ āϤā§āϰā§āĻāĻŋ āĻĢāĻŋāϰāĻŋāϝāĻŧā§ āĻĻāĻŋāύāĨ¤ āĻāĻāĻŋ āĻĻā§āϰā§āĻāĻāύāĻžāĻāύāĻŋāϤ āĻā§āϞāĻŋāĻļāύ āĻĒā§āϰāϤāĻŋāϰā§āϧ āĻāϰ⧠āϝā§āĻāĻžāύ⧠āĻāĻāĻāĻŋ āĻŦāĻžāĻāĻŋ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻĒā§āϰāύ⧠āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āύāϤā§āύ āĻĒā§āĻŽā§āύā§āĻ āĻ
ā§āϝāĻžāĻŽāĻžāĻāύā§āĻ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤\n\nāϰāĻŋāϞā§āĻĒā§, āĻĒā§āϰāĻĨāĻŽ āϏāĻĢāϞ āĻĒā§āϰāĻā§āώā§āĻāĻžāϰ āĻāĻāĻ āĻĢāϞāĻžāĻĢāϞ āĻĢā§āϰāϤ āĻĻāĻŋāύ â āĻāĻāĻ HTTP āϏā§āĻā§āϝāĻžāĻāĻžāϏ āĻā§āĻĄ āĻāĻŦāĻ āĻāĻāĻ āϰā§āϏāĻĒāύā§āϏ āĻŦāĻĄāĻŋ, āĻāĻžāĻāĻāĻž āϰāĻŋāĻĄ āύāĻž āϝā§āĻāĻž āϏāĻŽāϝāĻŧā§āϰ āϏāĻžāĻĨā§ āĻŦāĻĻāϞāĻžāϤ⧠āĻĒāĻžāϰā§āĨ¤\n\n## PostgreSQL-āĻ āĻĄā§āĻĄā§āĻĒ āĻā§āĻŦāĻŋāϞ: āĻāĻāĻāĻŋ āϏāϰāϞ, āύāĻŋāϰā§āĻāϰāϝā§āĻā§āϝ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ\n\nāĻāĻāĻāĻŋ āύāĻŋāĻŦā§āĻĻāĻŋāϤ deduplication āĻā§āĻŦāĻŋāϞ āĻāĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āϏāĻŋ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύā§āϰ āϏāĻŦāĻā§āϝāĻŧā§ āϏāĻšāĻ āĻāĻĒāĻžāϝāĻŧāĻā§āϞā§āϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋāĨ¤ āĻĒā§āϰāĻĨāĻŽ āĻ
āύā§āϰā§āϧ idempotency āĻā§-āĻāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϰ⧠āϤā§āϰāĻŋ āĻāϰā§āĨ¤ āĻĒā§āϰāϤāĻŋāĻāĻŋ āϰāĻŋāĻā§āϰāĻžāĻ āϏā§āĻ āĻāĻāĻ āϰ⧠āĻĒāĻĄāĻŧā§ āĻāĻŦāĻ āϏāĻāϰāĻā§āώāĻŋāϤ āĻĢāϞāĻžāĻĢāϞ āĻĢā§āϰāϤ āĻĻā§āϝāĻŧāĨ¤\n\n### āĻā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻŦā§āύ\n\nāĻā§āĻŦāĻŋāϞāĻāĻŋ āĻā§āĻ āĻ āĻĢā§āĻāĻžāϏāĻĄ āϰāĻžāĻā§āύāĨ¤ āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻāĻžāĻ āĻžāĻŽā§:\n\n- key: idempotency key (text)\n- owner: āϝ⧠āĻā§āĻāĻŋāϰ āĻŽāĻžāϞāĻŋāĻ (user_id, account_id, āĻŦāĻž API client ID)\n- request_hash: āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻ
āύā§āϰā§āϧ āĻā§āώā§āϤā§āϰāĻā§āϞā§āϰ āĻāĻāĻāĻŋ āĻšā§āϝāĻžāĻļ\n- response: āĻā§āĻĄāĻŧāĻžāύā§āϤ āϰā§āϏāĻĒāύā§āϏ āĻĒā§-āϞā§āĻĄ (āĻĒā§āϰāĻžāϝāĻŧāĻļāĻ JSON) āĻ
āĻĨāĻŦāĻž āϏā§āĻā§āϰ āĻāϰāĻž āĻĢāϞāĻžāĻĢāϞā§āϰ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ\n- created_at: āĻāĻāύ āĻā§ āĻĒā§āϰāĻĨāĻŽ āĻĻā§āĻāĻž āĻā§āĻā§\n\nāĻāĻāύāĻŋāĻ āĻāύāϏā§āĻā§āϰā§āĻāύā§āĻāĻ āĻĒā§āϝāĻžāĻāĻžāϰā§āύā§āϰ āĻā§āϰāĨ¤ (owner, key)-āĻ āĻāĻāύāĻŋāĻāύā§āϏ ENFORCE āĻāϰā§āύ āϝāĻžāϤ⧠āĻāĻ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻ āϤā§āϰāĻŋ āύāĻž āĻāϰā§, āĻāĻŦāĻ āĻĻā§āĻāĻāĻŋ āĻāĻŋāύā§āύ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻā§āϞāĻžāĻāĻĄ āύāĻž āĻāϰā§āĨ¤\n\nrequest_hash-āĻ āϰāĻžāĻā§āύ āϝāĻžāϤ⧠āĻā§ āĻŽāĻŋāϏāĻāĻāϏ āĻļāύāĻžāĻā§āϤ āĻāϰā§āύāĨ¤ āϝāĻĻāĻŋ āĻĒā§āύāϰāĻžāϝāĻŧ āĻāϏāĻž āĻāĻāĻ āĻā§ āύāĻŋāϝāĻŧā§ āĻāĻŋāύā§āϤ⧠āĻāĻŋāύā§āύ āĻšā§āϝāĻžāĻļ āĻĨāĻžāĻā§, āϤāĻžāϤ⧠āĻāĻāĻāĻŋ āϤā§āϰā§āĻāĻŋ āĻĢā§āϰāϤ āĻĻāĻŋāύ āϝāĻžāϤ⧠āĻĻā§āĻ āĻāĻŋāύā§āύ āĻ
āĻĒāĻžāϰā§āĻļāύ āĻāĻ āĻā§āϰ āĻŽāϧā§āϝ⧠āĻŽāĻŋāĻļā§ āύāĻž āϝāĻžāϝāĻŧāĨ¤\n\n### āϰāĻŋāĻā§āύāĻļāύ āĻāĻŦāĻ āĻāύāĻĄā§āĻā§āϏāĻŋāĻ\n\nDedup āϰ⧠āĻ
āύāύā§āϤāĻāĻžāϞā§āϰ āĻāύā§āϝ āĻĨāĻžāĻāĻž āĻāĻāĻŋāϤ āύāϝāĻŧāĨ¤ āĻŦāĻžāϏā§āϤāĻŦ āϰāĻŋāĻā§āϰāĻžāĻ āĻāĻāύā§āĻĄā§ āĻĒāϰā§āϝāĻžāĻĒā§āϤ āϏāĻŽāϝāĻŧ āϰāĻžāĻā§āύ, āϤāĻžāϰāĻĒāϰ āϏā§āĻā§āϞ⧠āĻā§āϞāĻŋāύāĻāĻĒ āĻāϰā§āύāĨ¤\n\nāϞā§āĻĄā§āϰ āύāĻŋāĻā§ āĻĻā§āϰā§āϤāϤāĻžāϰ āĻāύā§āϝ:\n\n- āĻĻā§āϰā§āϤ insert āĻŦāĻž lookup-āĻāϰ āĻāύā§āϝ (owner, key)-āĻ āĻāĻāύāĻŋāĻ āĻāύāĻĄā§āĻā§āϏ\n- āĻā§āϞāĻŋāύāĻāĻĒ āϏāϏā§āϤāĻž āĻāϰāϤ⧠created_at-āĻ āĻāĻā§āĻāĻŋāĻ āĻāύāĻĄā§āĻā§āϏ\n\nāϝāĻĻāĻŋ āϰā§āϏāĻĒāύā§āϏ āĻŦāĻĄāĻŧ āĻšāϝāĻŧ, āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ (āĻāĻĻāĻžāĻšāϰāĻŖ: result ID) āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āĻāĻŦāĻ āĻĒā§āϰā§āĻŖ āĻĒā§-āϞā§āĻĄ āĻ
āύā§āϝāϤā§āϰ āϰāĻžāĻā§āύāĨ¤ āĻāϤ⧠āĻā§āĻŦāĻŋāϞ āĻŦā§āϞā§āϝāĻŧāĻŋāĻ āĻāĻŽā§ āĻāĻŦāĻ retry āĻāĻāϰāĻŖ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻ āĻĨāĻžāĻā§āĨ¤\n\n## āϧāĻžāĻĒā§ āϧāĻžāĻĒā§: Go-āϤ⧠āĻāĻāĻāĻŋ retry-safe āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āĻĢā§āϞā§\n\nāĻāĻāĻāĻŋ retry-safe āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰā§āϰ āĻĻā§āĻāĻŋ āĻāĻŋāύāĻŋāϏ āϞāĻžāĻā§: âāĻāĻāĻ āĻ
āύā§āϰā§āϧ āĻāĻŦāĻžāϰâ āĻļāύāĻžāĻā§āϤ āĻāϰāĻžāϰ āĻāĻāĻāĻŋ āϏā§āĻĨāĻŋāϤāĻŋāĻļā§āϞ āĻāĻĒāĻžāϝāĻŧ, āĻāĻŦāĻ āĻĒā§āϰāĻĨāĻŽ āĻāĻāĻāĻāĻžāĻŽ āĻāĻŋāĻā§ āĻā§āĻāϏāĻāĻāĻžāĻŦā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻžāϰ āĻāĻžāϝāĻŧāĻāĻž āϝāĻžāϤ⧠āĻāĻĒāύāĻŋ āϤāĻž āϰāĻŋāϞā§āĻĒ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤\n\nāĻĒā§āĻŽā§āύā§āĻ, āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāĻŦāĻ āĻāϝāĻŧā§āĻŦāĻšā§āĻ āĻāύāĻā§āĻļāύ-āĻāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ āĻĢā§āϞā§:\n\n1) āĻ
āύā§āϰā§āϧ āĻā§āϝāĻžāϞāĻŋāĻĄā§āĻ āĻāϰā§āύ, āϤāĻžāϰāĻĒāϰ āϤāĻŋāύāĻāĻŋ āĻŽāĻžāύ āĻ
āĻŦāϤāĻžāϰāĻŖāĻž āĻāϰā§āύ: āĻāĻāĻāĻŋ idempotency key (āĻšā§āĻĄāĻžāϰ āĻŦāĻž āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻā§āώā§āϤā§āϰ āĻĨā§āĻā§), āĻāĻāĻāĻŋ owner (tenant āĻŦāĻž user ID), āĻāĻŦāĻ āĻāĻāĻāĻŋ request hash (āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻĢāĻŋāϞā§āĻĄāĻā§āϞā§āϰ āĻšā§āϝāĻžāĻļ)āĨ¤\n\n2) āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ āĻā§āϰāĻžāύā§āϏāĻ
ā§āϝāĻžāĻāĻļāύ āĻļā§āϰ⧠āĻāϰ⧠dedup āϰā§āĻāϰā§āĻĄ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰā§āύāĨ¤ āĻāĻāĻŋāĻā§ (owner, key)-āĻ āĻāĻāύāĻŋāĻ āĻāϰā§āύāĨ¤ request_hash, āϏā§āĻā§āϝāĻžāĻāĻžāϏ (started, completed) āĻāĻŦāĻ āϰā§āϏāĻĒāύā§āϏā§āϰ āĻĒā§āϞā§āϏāĻšā§āϞā§āĻĄāĻžāϰ āϏā§āĻā§āϰ āĻāϰā§āύāĨ¤\n\n3) āϝāĻĻāĻŋ insert āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻāϰā§, āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āϰ⧠āϞā§āĻĄ āĻāϰā§āύāĨ¤ āϝāĻĻāĻŋ āϏā§āĻāĻž completed āĻšāϝāĻŧ, āϏāĻāϰāĻā§āώāĻŋāϤ āϰā§āϏāĻĒāύā§āϏ āĻĢā§āϰāϤ āĻĻāĻŋāύāĨ¤ āϝāĻĻāĻŋ āĻāĻāĻž started āĻšāϝāĻŧ, āϏāĻāĻā§āώā§āĻĒā§ āĻ
āĻĒā§āĻā§āώāĻž āĻāϰā§āύ (āϏāĻŋāĻŽā§āĻĒāϞ āĻĒā§āϞāĻŋāĻ) āĻ
āĻĨāĻŦāĻž 409/202 āĻĢā§āϰāϤ āĻĻāĻŋāύ āϝāĻžāϤ⧠āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻĒāϰ⧠āĻāĻŦāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰā§āĨ¤\n\n4) āĻā§āĻŦāϞ āϤāĻāύāĻ āϝāĻāύ āĻāĻĒāύāĻŋ āϏāĻĢāϞāĻāĻžāĻŦā§ dedup āϰ⧠âownâ āĻāϰā§āύ, āĻŦāĻŋāĻāύā§āϏ āϞāĻāĻŋāĻ āĻāĻāĻŦāĻžāϰ āĻāĻžāϞāĻžāύāĨ¤ āϏāĻŽā§āĻāĻŦ āĻšāϞ⧠āĻāĻāĻ āĻā§āϰāĻžāύā§āϏāĻ
ā§āϝāĻžāĻāĻļāύā§āϰ āĻāĻŋāϤāϰā§āĻ āϏāĻžāĻāĻĄ-āĻāĻĢā§āĻā§āĻ āϞāĻŋāĻā§āύāĨ¤ āĻŦāĻŋāĻāύā§āϏ āϰā§āĻāĻžāϞā§āĻ āĻāĻŦāĻ HTTP āϰā§āϏāĻĒāύā§āϏ (āϏā§āĻā§āϝāĻžāĻāĻžāϏ āĻā§āĻĄ āĻ āĻŦāĻĄāĻŋ) āϏā§āĻĨāĻžāϝāĻŧā§ āĻāϰā§āύāĨ¤\n\n5) āĻāĻŽāĻŋāĻ āĻāϰā§āύ, āĻāĻŦāĻ idempotency key āĻ owner āĻĻāĻŋāϝāĻŧā§ āϞāĻ āĻāϰā§āύ āϝāĻžāϤ⧠āϏāĻžāĻĒā§āϰā§āĻ āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻ āĻā§āϰā§āϏ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤\n\nāĻāĻāĻāĻŋ āĻŽāĻŋāύāĻŋ āĻŽāĻžāϞ āĻā§āĻŦāĻŋāϞ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ:\n\nsql\ncreate table idempotency_keys (\n owner_id text not null,\n idem_key text not null,\n request_hash text not null,\n status text not null,\n response_code int,\n response_body jsonb,\n created_at timestamptz not null default now(),\n updated_at timestamptz not null default now(),\n primary key (owner_id, idem_key)\n);\n\n\nāĻāĻĻāĻžāĻšāϰāĻŖ: āĻāĻāĻāĻŋ âCreate payoutâ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻ āĻāĻžāϰā§āĻ āĻāϰ⧠āĻāĻžāĻāĻŽāĻāĻāĻ āĻĒāĻžāϝāĻŧāĨ¤ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻāĻāĻ āĻā§ āύāĻŋāϝāĻŧā§ āϰāĻŋāĻā§āϰāĻžāĻ āĻāϰā§āĨ¤ āĻāĻĒāύāĻžāϰ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻĻā§āĻā§ completed āϰā§āĻāϰā§āĻĄ āĻĻā§āĻāĻŦā§ āĻāĻŦāĻ āĻŽā§āϞ payout ID āĻĢā§āϰāϤ āĻĻā§āĻŦā§, āĻāĻŦāĻžāϰ āĻāĻžāϰā§āĻ āĻāϰāĻŦā§ āύāĻžāĨ¤\n\n## āĻĒā§āĻŽā§āύā§āĻ: āĻāĻžāĻāĻŽāĻāĻāĻā§āϰ āĻĒāϰāĻ āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻāĻŦāĻžāϰāĻ āĻāĻžāϰā§āĻ āĻāϰāĻž\n\nāĻĒā§āĻŽā§āύā§āĻ āĻšāϞ āϏā§āĻ āĻāĻžāϝāĻŧāĻāĻž āϝā§āĻāĻžāύ⧠āĻāĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āϏāĻŋ āĻ
āĻĒāĻļāύāĻžāϞ āύāϝāĻŧāĨ¤ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āĻŦā§āϝāϰā§āĻĨ āĻšāϝāĻŧ, āĻŽā§āĻŦāĻžāĻāϞ āĻ
ā§āϝāĻžāĻĒ āϰāĻŋāĻā§āϰāĻžāĻ āĻāϰā§, āĻāĻŦāĻ āĻā§āĻāĻāϝāĻŧā§ āĻŽāĻžāĻā§ āĻŽāĻžāĻā§ āĻāĻžāĻāĻŽāĻāĻāĻ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧ āϝāĻĻāĻŋāĻ āϤāĻžāϰāĻž āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ āĻāĻžāϰā§āĻ āϤā§āϰāĻŋ āĻāϰā§āĻā§āĨ¤\n\nāĻāĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ āύāĻŋāϝāĻŧāĻŽ: idempotency key āĻāĻžāϰā§āĻ āϤā§āϰāĻŋāĻā§ āϰāĻā§āώ āĻāϰā§, āĻāĻŦāĻ payment provider ID (charge/intent ID) āĻĒāϰ⧠āϏāϤā§āϝā§āϰ āĻā§āϏ āĻšāϝāĻŧā§ āĻāĻ ā§āĨ¤ āĻāĻāĻŦāĻžāϰ āĻāĻĒāύāĻŋ provider ID āϏāĻāϰāĻā§āώāĻŖ āĻāϰ⧠āύāĻŋāϞ⧠āĻāĻāĻ āĻ
āύā§āϰā§āϧā§āϰ āĻāύā§āϝ āύāϤā§āύ āĻāĻžāϰā§āĻ āĻāϰāĻŦā§āύ āύāĻžāĨ¤\n\nāĻāĻāĻāĻŋ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ āϝāĻž āϰāĻŋāĻā§āϰāĻžāĻ āĻāĻŦāĻ āĻā§āĻāĻāϝāĻŧā§ āĻ
āύāĻŋāĻļā§āĻāϝāĻŧāϤāĻž āĻšā§āϝāĻžāύā§āĻĄāϞ āĻāϰā§:\n\n- idempotency key āĻĒāĻĄāĻŧā§āύ āĻ āĻā§āϝāĻžāϞāĻŋāĻĄā§āĻ āĻāϰā§āύāĨ¤\n- āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ āĻā§āϰāĻžāύā§āϏāĻ
ā§āϝāĻžāĻāĻļāύ⧠(merchant_id, idempotency_key) āĻĻā§āĻŦāĻžāϰāĻž āĻā§-āĻāĻŋāϤā§āϤāĻŋāĻ āĻāĻāĻāĻŋ payment āϰ⧠āϤā§āϰāĻŋ āĻŦāĻž āϰāĻŋāĻĢā§āĻ āĻāϰā§āύāĨ¤ āϝāĻĻāĻŋ āĻāϤ⧠provider_id āĻĨāĻžāĻā§, āϏāĻāϰāĻā§āώāĻŋāϤ āϰā§āĻāĻžāϞā§āĻ āĻĢā§āϰāϤ āĻĻāĻŋāύāĨ¤\n- āϝāĻĻāĻŋ provider_id āύāĻž āĻĨāĻžāĻā§, āĻā§āĻāĻāϝāĻŧā§āϤ⧠PaymentIntent/Charge āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻāϞ āĻāϰā§āύāĨ¤\n- āĻā§āĻāĻāϝāĻŧā§ āϏāĻĢāϞ āĻšāϞ⧠provider_id āϏā§āĻĨāĻžāϝāĻŧā§ āĻāϰā§āύ āĻāĻŦāĻ payment āĻā§ âsucceededâ (āĻ
āĻĨāĻŦāĻž ârequires_actionâ) āĻšāĻŋāϏā§āĻŦā§ āĻŽāĻžāϰā§āĻ āĻāϰā§āύāĨ¤\n- āϝāĻĻāĻŋ āĻā§āĻāĻāϝāĻŧā§ āĻāĻžāĻāĻŽāĻāĻāĻ āĻĻā§āϝāĻŧ āĻŦāĻž āĻ
āĻāĻžāύāĻž āϰā§āĻāĻžāϞā§āĻ āĻĻā§āϝāĻŧ, āϏā§āĻā§āϝāĻžāĻāĻžāϏ âpendingâ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āĻāĻŦāĻ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻāĻā§ āĻāĻāĻāĻŋ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻ āϰā§āϏāĻĒāύā§āϏ āĻĻāĻŋāύ āϝāĻžāϤ⧠āĻĒā§āύāϰāĻžāϝāĻŧ āĻā§āώā§āĻāĻž āĻāϰāĻž āύāĻŋāϰāĻžāĻĒāĻĻāĨ¤\n\nāĻāĻžāĻāĻŽāĻāĻāĻ āĻāĻŋāĻāĻžāĻŦā§ āĻā§āϰāĻŋāĻ āĻāϰāĻŦā§āύ āϤāĻž āĻšāϞ āĻŽā§āϞ āĻŦāĻŋāώāϝāĻŧ: āĻĢā§āϞ āϧāϰāĻŦā§āύ āύāĻžāĨ¤ payment āĻā§ pending āĻšāĻŋāϏā§āĻŦā§ āĻāĻŋāĻšā§āύāĻŋāϤ āĻāϰā§āύ, āĻĒāϰ⧠āĻā§āĻāĻāϝāĻŧā§āϰ āϏāĻžāĻĨā§ āĻāύāĻĢāĻžāϰā§āĻŽ āĻāϰā§āύ (āĻ
āĻĨāĻŦāĻž webhook āĻŽāĻžāϰāĻĢāϤ) āϝāĻāύ āĻāĻĒāύāĻžāϰ āĻāĻžāĻā§ provider ID āĻĨāĻžāĻā§āĨ¤\n\nāĻāϰāϰ āϰā§āϏāĻĒāύā§āϏāĻā§āϞ⧠āĻĒā§āϰā§āĻŦāĻžāύā§āĻŽāĻžāύāϝā§āĻā§āϝ āĻšāĻāϝāĻŧāĻž āĻāĻāĻŋāϤāĨ¤ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻāϰāĻž āĻāĻĒāύāĻŋ āϝāĻž āϰāĻŋāĻāĻžāϰā§āύ āĻāϰāĻŦā§āύ āϏā§āĻāĻžāϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āϰāĻŋāĻā§āϰāĻžāĻ āϞāĻāĻŋāĻ āĻŦāĻžāύāĻžāϝāĻŧ, āϤāĻžāĻ āϏā§āĻā§āϝāĻžāĻāĻžāϏ āĻā§āĻĄ āĻ āĻāϰāϰ āĻļā§āĻĒ āϏā§āĻĨāĻŋāϰ āϰāĻžāĻā§āύāĨ¤\n\n## āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāĻŦāĻ āĻŦā§āϝāĻžāĻ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻ: āĻ
āĻā§āϰāĻāϤāĻŋ āĻšāĻžāϰāĻžāύ⧠āĻāĻžāĻĄāĻŧāĻžāĻ āĻĄā§āĻĄāĻžāĻĒ\n\nāĻāĻŽā§āĻĒā§āϰā§āĻā§āĻ āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻ āϏāĻŦāĻā§āϝāĻŧā§ āĻŦā§āĻļāĻŋ āĻā§āώāϤāĻŋ āĻāϰā§āĨ¤ āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠CSV āĻāĻĒāϞā§āĻĄ āĻāϰā§, āĻāĻĒāύāĻžāϰ āϏāĻžāϰā§āĻāĻžāϰ 95% āĻ āĻāĻžāĻāĻŽāĻāĻāĻ āĻāϰā§, āĻāĻŦāĻ āϤāĻžāϰāĻž āϰāĻŋāĻā§āϰāĻžāĻ āĻāϰāϞ⧠āĻāĻŋ āĻšāĻŦā§? āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž āύāĻž āĻĨāĻžāĻāϞ⧠āĻāĻĒāύāĻŋ āĻšāϝāĻŧ āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻ āϏāĻžāϰāĻŋ āϤā§āϰāĻŋ āĻāϰāĻŦā§āύ āĻ
āĻĨāĻŦāĻž āϤāĻžāĻĻā§āϰ āĻāĻŦāĻžāϰ āĻļā§āϰ⧠āĻāϰāϤ⧠āĻŦāϞāĻŦā§āύāĨ¤\n\nāĻŦā§āϝāĻžāĻ āĻāĻžāĻā§āϰ āĻāύā§āϝ āĻĻā§āĻ āϏā§āϤāϰā§āϰ āĻāĻĨāĻž āĻāĻžāĻŦā§āύ: āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāĻŦ āĻāĻŦāĻ āϤāĻžāϰ āĻāĻŋāϤāϰā§āϰ āĻāĻāĻā§āĻŽāĻā§āϞā§āĨ¤ āĻāĻŦ-āϞā§āĻā§āϞ āĻāĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āϏāĻŋ āĻāĻāĻ āĻ
āύā§āϰā§āϧ āĻĨā§āĻā§ āĻāĻāĻžāϧāĻŋāĻ āĻāĻŦ āϤā§āϰāĻŋ āĻšāĻāϝāĻŧāĻž āĻŦāύā§āϧ āĻāϰā§āĨ¤ āĻāĻāĻā§āĻŽ-āϞā§āĻā§āϞ āĻāĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āϏāĻŋ āĻāĻāĻ āϏāĻžāϰāĻŋ āĻĻā§āĻāĻŦāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻ āĻšāĻāϝāĻŧāĻž āϰā§āϧ āĻāϰā§āĨ¤\n\nāĻāĻŦ-āϞā§āĻā§āϞā§āϰ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ āĻšāϞ⧠āĻĒā§āϰāϤā§āϝā§āĻ āĻāĻŽā§āĻĒā§āϰā§āĻ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻā§ āĻāĻāĻāĻŋ idempotency key āĻĒā§āϰāϝāĻŧā§āĻāύ (āĻ
āĻĨāĻŦāĻž āĻāĻāĻāĻŋ āϏā§āĻĨāĻŋāϤāĻŋāĻļā§āϞ request hash + user ID āĻĨā§āĻā§ āĻāĻāĻāĻŋāĻā§ āĻĄā§āϰāĻžāĻāĻ āĻāϰāĻž)āĨ¤ āĻāĻāĻŋāĻā§ import_job āϰā§āĻāϰā§āĻĄā§āϰ āϏāĻžāĻĨā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āĻāĻŦāĻ āϰāĻŋāĻā§āϰāĻžāĻ āĻšāϞ⧠āĻāĻāĻ job ID āĻĢā§āϰāϤ āĻĻāĻŋāύāĨ¤ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āĻŦāϞāĻž āĻāĻāĻŋāϤ, âāĻāĻŽāĻŋ āĻāĻ āĻāĻŦāĻāĻŋ āĻĻā§āĻā§āĻāĻŋ, āĻāĻāĻžāĻ āĻāϰ āĻŦāϰā§āϤāĻŽāĻžāύ āϏā§āĻā§āĻ,â āĻŦāϞāĻžāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠âāĻāĻŦāĻžāϰ āĻļā§āϰ⧠āĻāϰā§āύāĨ¤â\n\nāĻāĻāĻā§āĻŽ-āϞā§āĻā§āϞ āĻĄā§āĻĄāĻžāĻĒā§, āĻĄā§āĻāĻžāϤ⧠āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻĨāĻžāĻāĻž āĻāĻāĻāĻŋ āύā§āϝāĻžāĻāĻžāϰāĻžāϞ āĻā§-āϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§āύāĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏāĻžāϰāĻŋāϤ⧠āϏā§āϰā§āϏ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āĻāĻāĻāĻŋ external_id āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰā§, āĻŦāĻž āĻāĻāĻāĻŋ āϏā§āĻĨāĻŋāϤāĻŋāĻļā§āϞ āĻāĻŽā§āĻŦā§ āϝā§āĻŽāύ (account_id, email)āĨ¤ PostgreSQL-āĻ āĻāĻāύāĻŋāĻ āĻāύāϏā§āĻā§āϰā§āĻāύā§āĻ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰā§āύ āĻāĻŦāĻ upsert āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ āϝāĻžāϤ⧠āϰāĻŋāĻā§āϰāĻžāĻāĻā§āϞ⧠āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻ āϤā§āϰāĻŋ āύāĻž āĻāϰā§āĨ¤\n\nāĻļāĻŋāĻĒ āĻāϰāĻžāϰ āĻāĻā§ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāύ āĻāĻāĻāĻŋ āϰāĻŋāϞā§āĻĒ āĻāĻŋ āĻāϰ⧠āϝāĻāύ āĻāĻāĻāĻŋ āϏāĻžāϰāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ āĻāĻā§āĨ¤ āϏā§āĻĒāώā§āĻ āϰāĻžāĻā§āύ: āϏā§āĻāĻŋāĻĒ āĻāϰāĻŦā§āύ, āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻĢāĻŋāϞā§āĻĄ āĻāĻĒāĻĄā§āĻ āĻāϰāĻŦā§āύ, āĻŦāĻž āĻĢā§āϞ āĻāϰāĻŦā§āύāĨ¤ āϏā§āĻĒāώā§āĻ āύāĻŋāϝāĻŧāĻŽ āύāĻž āĻĨāĻžāĻāϞ⧠âmergeâ āĻāĻĄāĻŧāĻŋāϝāĻŧā§ āĻāϞā§āύāĨ¤\n\nāĻāĻāĻļāĻŋāĻ āϏāĻžāĻĢāϞā§āϝ āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĨ¤ āϏāĻŦāĻāĻŋāĻā§ âokâ āĻŦāĻž âfailedâ āύāĻž āĻāϰā§, āĻāĻŦ-āϞā§āĻā§āϞ⧠āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏāĻžāϰāĻŋāϰ āĻāĻāĻāĻāĻžāĻŽ āϏā§āĻā§āϰ āĻāϰā§āύ: row number, natural key, status (created, updated, skipped, error), āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāϰāϰ āĻŽā§āϏā§āĻāĨ¤ āϰāĻŋāĻā§āϰāĻžāĻ āĻšāϞ⧠āĻāĻĒāύāĻŋ āύāĻŋāϰāĻžāĻĒāĻĻā§ āĻĒā§āύāϰāĻžāϝāĻŧ āĻāĻžāϞāĻžāϤ⧠āĻĒāĻžāϰāĻŦā§āύ āĻāĻŦāĻ āϝā§āϏāĻŦ āϏāĻžāϰāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ āĻļā§āώ āĻšāϝāĻŧā§āĻā§ āϤāĻžāĻĻā§āϰ āĻāĻāĻ āĻĢāϞāĻžāĻĢāϞ āϰāĻžāĻāĻŦā§āύāĨ¤\n\nāĻāĻŽā§āĻĒā§āϰā§āĻāĻā§āϞāĻŋ restartable āĻāϰāϤā§, āĻā§āĻāĻĒāϝāĻŧā§āύā§āĻ āϝā§āĻ āĻāϰā§āύāĨ¤ āĻĒā§āĻā§ āĻĒā§āϰāϏā§āϏ āĻāϰā§āύ (āĻāĻĻāĻžāĻšāϰāĻŖ: āĻĒā§āϰāϤāĻŋ āĻĒā§āĻ 500 āϏāĻžāϰāĻŋ), āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒā§āĻ āĻāĻŽāĻŋāĻ āĻāϰāĻžāϰ āĻĒāϰ⧠āĻļā§āώ āĻĒā§āϰāϏā§āϏ āĻšāĻāϝāĻŧāĻž āĻāĻžāϰā§āϏāϰ (row index āĻŦāĻž source cursor) āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύāĨ¤ āĻĒā§āϰāϏā§āϏ āĻā§āϰā§āϝāĻžāĻļ āĻāϰāϞ⧠āĻĒāϰāĻŦāϰā§āϤ⧠āĻā§āώā§āĻāĻž āĻļā§āώ āĻā§āĻāĻĒāϝāĻŧā§āύā§āĻ āĻĨā§āĻā§ āĻļā§āϰ⧠āĻāϰāĻŦā§āĨ¤\n\n## āĻāϝāĻŧā§āĻŦāĻšā§āĻ āĻāύāĻā§āĻļāύ: āĻĄā§āĻĄāĻžāĻĒ, āĻā§āϝāĻžāϞāĻŋāĻĄā§āĻ, āϤāĻžāϰāĻĒāϰ āύāĻŋāϰāĻžāĻĒāĻĻā§ āĻĒā§āϰāϏā§āϏ āĻāϰā§āύ\n\nāĻāϝāĻŧā§āĻŦāĻšā§āĻ āĻĒā§āϰā§āĻāĻžāĻāĻĄāĻžāϰāϰāĻž āϰāĻŋāĻā§āϰāĻžāĻ āĻāϰā§āĨ¤ āϤāĻžāϰāĻž āĻāĻāĻ-āĻ
āĻĢ-āĻ
āϰā§āĻĄāĻžāϰ⧠āĻāĻā§āύā§āĻ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤ āϝāĻĻāĻŋ āĻāĻĒāύāĻžāϰ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĄā§āϞāĻŋāĻāĻžāϰāĻŋāϤ⧠āϏā§āĻā§āĻ āĻāĻĒāĻĄā§āĻ āĻāϰā§, āĻāĻĒāύāĻŋ āĻ
āĻŦāĻļā§āϝāĻŽā§āĻāĻžāĻŦā§āĻāĻžāĻŦā§ āĻļā§āώ⧠āϰā§āĻāϰā§āĻĄ āĻĄā§āĻŦāϞ-āĻā§āϰāĻŋāϝāĻŧā§āĻ, āĻĄā§āĻŦāϞ-āĻāĻŽā§āĻāϞ āĻĒāĻžāĻ āĻžāύā§, āĻŦāĻž āĻĄā§āĻŦāϞ-āĻāĻžāϰā§āĻ āĻĒā§āϝāĻŧā§ āϝāĻžāĻŦā§āύāĨ¤\n\nāĻļā§āϰā§āϤā§āĻ āϏā§āϰāĻž āĻĄā§āĻĄāĻžāĻĒ āĻā§ āĻŦā§āĻā§ āύāĻŋāύāĨ¤ āϝāĻĻāĻŋ āĻĒā§āϰā§āĻāĻžāĻāĻĄāĻžāϰ āĻāĻĒāύāĻžāĻā§ āĻāĻāĻāĻŋ āĻāĻāύāĻŋāĻ āĻāĻā§āύā§āĻ ID āĻĻā§āϝāĻŧ, āϏā§āĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤ āϝāĻāύ āĻĒā§āϰā§āĻāĻžāĻāĻĄāĻžāϰ āĻāĻā§āύā§āĻ ID āύāĻž āĻĻā§āϝāĻŧ, āϤāĻāύ āĻĒāϞā§āĻĄā§āϰ āĻšā§āϝāĻžāĻļ fallback āĻšāĻŋāϏā§āĻŦā§ āύāĻŋāύāĨ¤\n\nāϏāĻŋāĻāĻŋāĻāϰāĻŋāĻāĻŋ āĻĒā§āϰāĻĨāĻŽ: āϏāĻŋāĻāύā§āĻāĻžāϰ āϝāĻžāĻāĻžāĻ āĻāϰā§āύ āĻāĻā§ āĻā§-āĻāĻž āĻā§āϰāĻšāĻŖ āĻāϰāĻžāĨ¤ āϏāĻŋāĻāύā§āĻāĻžāϰ āĻĢā§āϞ āĻāϰāϞ⧠āĻ
āύā§āϰā§āϧ āĻĒā§āϰāϤā§āϝāĻžāĻā§āϝāĻžāύ āĻāϰā§āύ āĻāĻŦāĻ āĻāĻāĻāĻŋ dedup āϰā§āĻāϰā§āĻĄ āϞāĻŋāĻāĻŦā§āύ āύāĻž â āĻ
āύā§āϝāĻĨāĻžāϝāĻŧ āĻāĻāĻāύ āĻ
ā§āϝāĻžāĻāĻžāĻāĻžāϰ āĻāĻāĻāĻŋ āĻāĻā§āύā§āĻ ID âāϰāĻŋāĻāĻžāϰā§āĻâ āĻāϰ⧠āĻāĻŦāĻŋāώā§āϝāϤ⧠āĻāϏāϞ āĻāĻā§āύā§āĻ āĻŦā§āϞāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤\n\nāϰāĻŋāĻā§āϰāĻžāĻāϝāĻŧā§āϰ āϏāĻŽāϝāĻŧ āύāĻŋāϰāĻžāĻĒāĻĻ āĻĢā§āϞā§:\n\n- āϏāĻŋāĻāύā§āĻāĻžāϰ āĻāĻŦāĻ āĻŦā§āϏāĻŋāĻ āĻļā§āĻĒ āϝāĻžāĻāĻžāĻ āĻāϰā§āύ (āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻšā§āĻĄāĻžāϰ, event ID)\n- event ID āĻāĻāĻāĻŋ dedup āĻā§āĻŦāĻŋāϞ⧠āĻāĻāύāĻŋāĻ āĻāύāϏā§āĻā§āϰā§āĻāύā§āĻāϏāĻš insert āĻāϰā§āύ\n- āϝāĻĻāĻŋ insert āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻā§ āĻŦā§āϝāϰā§āĻĨ āĻšāϝāĻŧ, āϏāĻā§āĻā§ āϏāĻā§āĻā§ 200 āĻĢā§āϰāϤ āĻĻāĻŋāύ\n- āĻ
āĻĄāĻŋāĻ āĻ āĻĄāĻŋāĻŦāĻžāĻāĻŋāĻāϝāĻŧā§āϰ āĻāύā§āϝ āϰ.Raw āĻĒā§-āϞā§āĻĄ (āĻāĻŦāĻ āĻšā§āĻĄāĻžāϰ) āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āϝāĻāύ āĻĻāϰāĻāĻžāϰ\n- āĻĒā§āϰāϏā§āϏāĻŋāĻ āĻāύāĻāĻŋāĻ āĻāϰā§āύ āĻāĻŦāĻ āĻĻā§āϰā§āϤ 200 āĻĢā§āϰāϤ āĻĻāĻŋāύ\n\nāĻĻā§āϰā§āϤāĻāĻžāĻŦā§ acknowlege āĻāϰāĻž āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻāĻžāϰāĻŖ āĻ
āύā§āĻ āĻĒā§āϰā§āĻāĻžāĻāĻĄāĻžāϰā§āϰ āĻā§āĻ āĻāĻžāĻāĻŽāĻāĻāĻ āĻĨāĻžāĻā§āĨ¤ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻā§ āϏāĻŦāĻā§āϝāĻŧā§ āĻā§āĻ āύāĻŋāϰā§āĻāϰāϝā§āĻā§āϝ āĻāĻžāĻāĻāĻŋ āĻāϰā§āύ: verify, dedup, persistāĨ¤ āϤāĻžāϰāĻĒāϰ asynchronousāĻāĻžāĻŦā§ āĻĒā§āϰāϏā§āϏ āĻāϰā§āύ (āĻāϝāĻŧāĻžāϰā§āĻāĻžāϰ, āĻāĻŋāĻ, āĻŦā§āϝāĻžāĻāĻā§āϰāĻžāĻāύā§āĻĄ āĻāĻŦ)āĨ¤ āϝāĻĻāĻŋ āĻ
ā§āϝāĻžāϏāĻŋāĻā§āĻ āύāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ, āĻāĻāĻ event ID āĻĻāĻŋāϝāĻŧā§ āĻ
āĻā§āϝāύā§āϤāϰā§āĻŖ āϏāĻžāĻāĻĄ-āĻāĻĢā§āĻā§āĻāĻā§āϞāĻŋāĻā§ āĻā§ āĻāϰ⧠āĻā§āĻā§āϞāĻŋ āϧāϰ⧠āϰā§āĻā§ āĻĒā§āϰāϏā§āϏāĻŋāĻāĻā§ āĻāĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āĻ āϰāĻžāĻā§āύāĨ¤\n\nāĻāĻāĻ-āĻ
āĻĢ-āĻ
āϰā§āĻĄāĻžāϰ āĻĄā§āϞāĻŋāĻāĻžāϰāĻŋ āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĨ¤ āϧāϰ⧠āύā§āĻŦā§āύ āύāĻž âcreatedâ āĻāĻā§ āĻāϏ⧠âupdatedâ āĻĨā§āĻā§āĨ¤ āĻāĻā§āϏāĻāĻžāϰāύāĻžāϞ āĻ
āĻŦāĻā§āĻā§āĻ ID-āϤ⧠upsert āĻĒāĻāύā§āĻĻ āĻāϰā§āύ āĻāĻŦāĻ āĻļā§āώ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĻā§āϤ event timestamp āĻŦāĻž version āĻā§āϰā§āϝāĻžāĻ āĻāϰā§āύāĨ¤\n\nāϰ āĻāĻžāĻāĻāĻž āĻĒā§-āϞā§āĻĄ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāϞ⧠āĻā§āϰāĻžāĻšāĻ āĻŦāϞ⧠âāĻāĻŽāϰāĻž āĻāĻĒāĻĄā§āĻ āĻĒāĻžāĻāύāĻŋâ āĻŦāϞāϞ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĨ¤ āĻāĻĒāύāĻŋ āĻāĻāĻŦāĻžāϰ āĻŦāĻžāĻ āĻ āĻŋāĻ āĻāϰāϞ⧠āϏāĻāϰāĻā§āώāĻŋāϤ āĻŦāĻĄāĻŋ āĻĨā§āĻā§ āĻĒā§āϰāϏā§āϏāĻŋāĻ āĻĒā§āύāϰāĻžāϝāĻŧ āĻāĻžāϞāĻžāϤ⧠āĻĒāĻžāϰāĻŦā§āύ, āĻĒā§āϰā§āĻāĻžāĻāĻĄāĻžāϰāĻā§ āĻāĻŦāĻžāϰ āϰāĻŋāϏā§āύā§āĻĄ āĻāϰāĻžāϰ āĻ
āύā§āϰā§āϧ āύāĻž āĻāϰā§āĻāĨ¤\n\n## āĻāύāĻāĻžāϰā§āύā§āϏāĻŋ: āĻĒā§āϝāĻžāϰāĻžāϞāĻžāϞ āĻ
āύā§āϰā§āϧā§āϰ āϏāĻŽāϝāĻŧ āϏāĻ āĻŋāĻ āĻĨāĻžāĻāĻž\n\nāϰāĻŋāĻā§āϰāĻžāĻ āĻāĻžāĻŽā§āϞāĻž āĻŦāĻžāĻĄāĻŧāĻžāϝāĻŧ āϝāĻāύ āĻāĻāĻ idempotency āĻā§ āϏāĻš āĻĻā§āĻāĻŋ āĻ
āύā§āϰā§āϧāĻ āĻāĻāĻ āϏāĻŽāϝāĻŧā§ āĻāϏā§āĨ¤ āϝāĻĻāĻŋ āĻĻā§āĻ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰāĻ âdo workâ āϧāĻžāĻĒāĻāĻŋ āĻāĻžāϞāĻŋāϝāĻŧā§ āĻĻā§āϝāĻŧ āĻāĻā§ āϝ⧠āĻā§āĻ āĻĢāϞāĻžāĻĢāϞ āϏā§āĻ āĻāϰā§, āϤāĻāύ āĻāĻĒāύāĻŋ āĻāĻāύāĻ āĻĄāĻŦāϞ āĻāĻžāϰā§āĻ, āĻĄāĻŦāϞ āĻāĻŽā§āĻĒā§āϰā§āĻ, āĻŦāĻž āĻĄāĻŦāϞ āĻāύāĻāĻŋāĻ āĻĒā§āϝāĻŧā§ āϝā§āϤ⧠āĻĒāĻžāϰā§āύāĨ¤\n\nāϏāϰāϞ āϏāĻŽāύā§āĻŦāϝāĻŧā§āϰ āĻĒāϝāĻŧā§āύā§āĻ āĻšāϞ āĻĄāĻžāĻāĻžāĻŦā§āĻ āĻā§āϰāĻžāύā§āϏāĻ
ā§āϝāĻžāĻāĻļāύāĨ¤ āĻĒā§āϰāĻĨāĻŽ āϧāĻžāĻĒāĻāĻŋ āĻšā§āĻ âāĻā§ āĻā§āϞā§āĻāĻŽ āĻāϰāĻžâ āĻāĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻāĻ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰā§āĻ āĻā§ āĻāϝāĻŧā§āĨ¤ āϏāĻžāϧāĻžāϰāĻŖ āĻ
āĻĒāĻļāύāĻā§āϞā§:\n\n- dedup āĻā§āĻŦāĻŋāϞ⧠āĻāĻāύāĻŋāĻ insert (āĻĄāĻžāĻāĻžāĻŦā§āĻ āĻāĻ āĻŦāĻŋāĻāϝāĻŧā§ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰā§)\n- āϤā§āϰāĻŋ (āĻŦāĻž āĻā§āĻāĻā§) āĻāϰāĻžāϰ āĻĒāϰ⧠SELECT ... FOR UPDATE\n- idempotency key-āĻāϰ āĻšā§āϝāĻžāĻļ āĻĻāĻŋāϝāĻŧā§ transaction-level advisory locks\n- āĻŦāĻŋāĻāύā§āϏ āϰā§āĻāϰā§āĻĄā§ āĻāĻāύāĻŋāĻ āĻāύāϏā§āĻā§āϰā§āĻāύā§āĻ āĻāĻāĻāĻŋ āĻā§āĻĄāĻŧāĻžāύā§āϤ āĻŦā§āϝāĻžāĻāϏā§āĻāĻĒ āĻšāĻŋāϏā§āĻŦā§\n\nāĻĻā§āϰā§āĻ āĻāϞāĻŽāĻžāύ āĻāĻžāĻā§āϰ āĻāύā§āϝ āĻŦāĻžāĻāϰā§āϰ āϏāĻŋāϏā§āĻā§āĻŽ āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āϰā§-āϞāĻ āϧāϰā§āĻ āϰāĻžāĻāĻŦā§āύ āύāĻžāĨ¤ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠dedup āϰā§āϤ⧠āĻāĻāĻāĻŋ āĻā§āĻ state machine āϏā§āĻā§āϰ āĻāϰā§āύ āϝāĻžāϤ⧠āĻ
āύā§āϝāĻžāύā§āϝ āĻ
āύā§āϰā§āϧ āĻĻā§āϰā§āϤ āĻŦā§āϰ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤\n\nāĻĒā§āϰāĻžāϝāĻŧā§āĻāĻŋāĻ āϏā§āĻā§āĻāϏāĻŽā§āĻš:\n\n- in_progress āĻāĻŦāĻ started_at\n- completed āĻāĻŦāĻ cached response\n- failed āĻāĻŦāĻ āĻāĻāĻāĻŋ error code (āĻāĻā§āĻāĻŋāĻ, āĻāĻĒāύāĻžāϰ āϰāĻŋāĻā§āϰāĻžāĻ āύā§āϤāĻŋāϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§)\n- expires_at (āĻā§āϞāĻŋāύāĻāĻĒā§āϰ āĻāύā§āϝ)\n\nāĻāĻĻāĻžāĻšāϰāĻŖ: āĻĻā§āĻāĻāĻŋ āĻ
ā§āϝāĻžāĻĒ āĻāύāϏā§āĻā§āϝāĻžāύā§āϏ āĻāĻāĻ āĻĒā§āĻŽā§āύā§āĻ āĻ
āύā§āϰā§āϧ āĻĒāĻžāϝāĻŧāĨ¤ āĻāύāϏā§āĻā§āϝāĻžāύā§āϏ A āĻā§ āĻāύāϏāĻžāϰā§āĻ āĻāϰ⧠āĻāĻŦāĻ in_progress āĻŽāĻžāϰā§āĻ āĻāϰā§, āϤāĻžāϰāĻĒāϰ āĻĒā§āϰā§āĻāĻžāĻāĻĄāĻžāϰ⧠āĻāϞ āĻāϰā§āĨ¤ āĻāύāϏā§āĻā§āϝāĻžāύā§āϏ B āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻĒāĻžāĻĨ āĻšāĻŋāĻ āĻāϰā§, dedup āϰ⧠āĻĒāĻĄāĻŧā§ in_progress āĻĻā§āĻā§ āĻĻā§āϰā§āϤ âstill processingâ āϰā§āϏāĻĒāύā§āϏ āĻĻā§āϝāĻŧ (āĻ
āĻĨāĻŦāĻž āϏāĻāĻā§āώā§āĻĒā§ āĻ
āĻĒā§āĻā§āώāĻž āĻāϰ⧠āĻāĻŦāĻ āĻĒā§āύāϰā§āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§)āĨ¤ āϝāĻāύ A āĻļā§āώ āĻāϰā§, āĻāĻāĻŋ āϰ⧠āĻāĻĒāĻĄā§āĻ āĻāϰ⧠completed āĻāĻŦāĻ āϰā§āϏāĻĒāύā§āϏ āĻŦāĻĄāĻŋ āϏāĻāϰāĻā§āώāĻŖ āĻāϰ⧠āϝāĻžāϤ⧠āĻĒāϰāĻŦāϰā§āϤ⧠āϰāĻŋāĻā§āϰāĻžāĻ āĻāĻāĻ āĻāĻāĻāĻĒā§āĻ āĻĒāĻžāϝāĻŧāĨ¤\n\n## āϏāĻžāϧāĻžāϰāĻŖ āĻā§āϞ āϝā§āĻā§āϞ⧠āĻāĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āϏāĻŋ āĻā§āĻā§ āĻĻā§āϝāĻŧ\n\nāĻ
āϧāĻŋāĻāĻžāĻāĻļ āĻāĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āϏāĻŋ āĻŦāĻžāĻ āĻāĻāĻŋāϞ āϞāĻāĻŋāĻāϝāĻŧā§āϰ āĻŦāĻŋāώāϝāĻŧā§ āύāϝāĻŧ; āĻāĻā§āϞ⧠âāĻĒā§āϰāĻžāϝāĻŧ āϏāĻ āĻŋāĻâ āĻĒāĻāύā§āĻĻāĻā§āϞ⧠āϝā§āĻā§āϞ⧠āϰāĻŋāĻā§āϰāĻžāĻ, āĻāĻžāĻāĻŽāĻāĻāĻ, āĻŦāĻž āĻĻā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāĻāĻ āϰāĻāĻŽ āĻāĻžāĻ āĻāϰāϞ⧠āĻŦā§āϝāϰā§āĻĨ āĻšāϝāĻŧāĨ¤\n\nāĻāĻāĻāĻŋ āĻāĻŽāύ āĻĢāĻžāĻāĻĻ āĻšāϞ⧠idempotency āĻā§āĻā§ āĻā§āϞā§āĻŦāĻžāϞāĻŋ āĻāĻāύāĻŋāĻ āϧāϰāĻžāĨ¤ āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ āĻāĻāĻŋ āϏā§āĻā§āĻĒ āύāĻž āĻāϰā§āύ (by user, account, āĻŦāĻž endpoint), āĻĻā§āĻ āĻāĻŋāύā§āύ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻā§āϞāĻžāĻāĻĄ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āĻāĻŦāĻ āĻāĻāĻāύ āĻ
āύā§āϝāĻāύā§āϰ āϰā§āĻāĻžāϞā§āĻ āĻĒā§āϝāĻŧā§ āϝāĻžāĻŦā§āĨ¤\n\nāĻāϰāĻ āĻāĻāĻāĻŋ āϏāĻŽāϏā§āϝāĻž āĻšāϞ⧠āĻāĻāĻ āĻā§āĻā§ āĻāĻŋāύā§āύ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻŦāĻĄāĻŋ āύāĻŋāϝāĻŧā§ āĻā§āϰāĻšāĻŖ āĻāϰāĻžāĨ¤ āϝāĻĻāĻŋ āĻĒā§āϰāĻĨāĻŽ āĻāϞ $10 āĻāϰ āĻāύā§āϝ āĻāĻŋāϞ āĻāĻŦāĻ āϰāĻŋāϞā§āĻĒ $100, āĻāĻĒāύāĻžāĻā§ āĻĒā§āϰāĻĨāĻŽ āĻĢāϞāĻžāĻĢāϞ āύāĻŋāϰā§āĻŦāĻŋāĻāĻžāϰ⧠āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž āĻāĻāĻŋāϤ āύāϝāĻŧāĨ¤ request hash āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āĻāĻŦāĻ āϰāĻŋāϞā§āĻĒā§ āϤā§āϞāύāĻž āĻāϰ⧠āϏā§āĻĒāώā§āĻ āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻāϰāϰ āĻĢā§āϰāϤ āĻĻāĻŋāύāĨ¤\n\nāĻā§āϞāĻžāϝāĻŧā§āύā§āĻāϰāĻž āĻāϰāĻ āĻŦāĻŋāĻā§āϰāĻžāύā§āϤ āĻšāϝāĻŧ āϝāĻāύ āϰāĻŋāϞā§āĻĒ āĻāĻŋāύā§āύ āϰā§āϏāĻĒāύā§āϏ āĻļā§āĻĒ āĻŦāĻž āϏā§āĻā§āϝāĻžāĻāĻžāϏ āĻā§āĻĄ āĻĻā§āϝāĻŧāĨ¤ āϝāĻĻāĻŋ āĻĒā§āϰāĻĨāĻŽ āĻāϞ 201 āĻāĻŦāĻ āĻāĻāĻāĻŋ JSON āĻŦāĻĄāĻŋ āĻĢā§āϰāϤ āĻĻā§āϝāĻŧ, āϰāĻŋāϞā§āĻĒā§āĻ āĻāĻāĻ āĻŦāĻĄāĻŋ āĻ āϏāĻŽāĻžāύ āϏā§āĻā§āϝāĻžāĻāĻžāϏ āĻā§āĻĄ āĻĢā§āϰāϤ āĻĻāĻŋāύāĨ¤ āϰāĻŋāϞā§āĻĒ āĻāĻāϰāĻŖ āĻŦāĻĻāϞ⧠āĻĻāĻŋāϞ⧠āĻā§āϞāĻžāϝāĻŧā§āύā§āĻāĻā§ āĻ
āύā§āĻŽāĻžāύ āĻāϰāϤ⧠āĻšāϝāĻŧāĨ¤\n\nāĻĒā§āϰāĻāϞāĻŋāϤ āĻā§āϞāĻā§āϞ⧠āϝā§āĻā§āϞ⧠āĻĒā§āϰāĻžāϝāĻŧāĻ āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻ āĻāϰā§:\n\n- āĻā§āĻŦāϞāĻ āĻāύ-āĻŽā§āĻŽāϰāĻŋ āĻŽā§āϝāĻžāĻĒ āĻŦāĻž āĻā§āϝāĻžāĻļā§āϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰāĻž, āϤāĻžāϰāĻĒāϰ āϰāĻŋāϏā§āĻāĻžāϰā§āĻā§ dedup āϏā§āĻā§āĻ āĻšāĻžāϰāĻžāύā§\n- āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻāĻŋāύā§āϤ⧠āϏā§āĻā§āĻĒ āĻāϰāĻž āύāĻž (āĻā§āϰāϏ-āĻāĻāĻāĻžāϰ āĻŦāĻž āĻā§āϰāϏ-āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻ āĻā§āϞāĻŋāĻļāύ)\n- āĻāĻāĻ āĻā§-āϰ āĻāύā§āϝ āĻĒā§-āϞā§āĻĄ āĻŽāĻŋāϞ āύāĻž āĻāϰāĻž\n- āĻĒā§āϰāĻĨāĻŽā§ āϏāĻžāĻāĻĄ-āĻāĻĢā§āĻā§āĻ āĻāϰāĻž (āĻāĻžāϰā§āĻ, āĻāύāϏāĻžāϰā§āĻ, publish) āĻāĻŦāĻ āĻĒāϰ⧠dedup āϰā§āĻāϰā§āĻĄ āϞā§āĻāĻž\n- āĻĒā§āϰāϤāĻŋāĻāĻŋ āϰāĻŋāĻā§āϰāĻžāĻāϤ⧠āύāϤā§āύ āĻā§āύāĻžāϰā§āĻā§āĻĄ ID āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž, āĻŽā§āϞ āϰā§āĻāĻžāϞā§āĻ āϰāĻŋāĻĒā§āϞ⧠āύāĻž āĻāϰāĻž\n\nāĻā§āϝāĻžāĻļ āĻĒāĻĄāĻŧāĻž āĻĻā§āϰā§āϤ āĻāϰāϤ⧠āĻĒāĻžāϰā§, āĻāĻŋāύā§āϤ⧠āϏāϤā§āϝā§āϰ āĻā§āϏ āĻā§āĻāϏāĻ āĻšāĻāϝāĻŧāĻž āĻāĻāĻŋāϤ (āϏāĻžāϧāĻžāϰāĻŖāϤ PostgreSQL)āĨ¤ āύāĻžāĻšāϞ⧠āĻĄāĻŋāĻĒā§āϞāϝāĻŧā§āϰ āĻĒāϰ⧠āϰāĻŋāĻā§āϰāĻžāĻ āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤\n\nāĻā§āϞāĻŋāύāĻāĻĒāĻ āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž āĻāϰā§āύāĨ¤ āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻā§ āĻāĻŋāϰāĻĻāĻŋāύ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ, āĻā§āĻŦāĻŋāϞ āĻŦāĻžāĻĄāĻŧāĻŦā§ āĻāĻŦāĻ āĻāύāĻĄā§āĻā§āϏ āϧā§āϰ⧠āϝāĻžāĻŦā§āĨ¤ āĻŦāĻžāϏā§āϤāĻŦ āϰāĻŋāĻā§āϰāĻžāĻ āĻāĻāϰāĻŖ āĻ
āύā§āϝāĻžāϝāĻŧā§ āϰāĻŋāĻā§āύāĻļāύ āĻāĻāύā§āĻĄā§ āϰāĻžāĻā§āύ, āĻĒā§āϰā§āύ⧠āϰ⧠āĻŽā§āĻā§āύ, āĻāĻŦāĻ āĻāĻāύāĻŋāĻ āĻāύāĻĄā§āĻā§āϏ āĻā§āĻ āϰāĻžāĻā§āύāĨ¤\n\n## āĻĻā§āϰā§āϤ āĻā§āĻāϞāĻŋāϏā§āĻ āĻāĻŦāĻ āĻĒāϰāĻŦāϰā§āϤ⧠āϧāĻžāĻĒ\n\nāĻāĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āϏāĻŋāĻā§ āĻāĻĒāύāĻžāϰ API āĻā§āĻā§āϤāĻŋāϰ āĻ
āĻāĻļ āĻšāĻŋāϏā§āĻŦā§ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āύāĨ¤ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻ āϝāĻž āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ, āĻāĻŋāĻ, āĻŦāĻž āĻā§āĻāĻāϝāĻŧā§ āĻĻā§āĻŦāĻžāϰāĻž āϰāĻŋāĻā§āϰāĻžāĻ āĻāϰāĻž āĻšāϤ⧠āĻĒāĻžāϰā§, āϤāĻžāϰ āĻāύā§āϝ âāĻāĻāĻ āĻ
āύā§āϰā§āϧâ āĻā§ āĻŦā§āĻāĻžāϝāĻŧ āĻāĻŦāĻ âāĻāĻāĻ āĻĢāϞāĻžāĻĢāϞâ āĻā§āĻŽāύ āĻšāĻŦā§ āϤāĻž āϏā§āĻĒāώā§āĻ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰā§āύāĨ¤\n\nāĻļāĻŋāĻĒ āĻāϰāĻžāϰ āĻāĻā§ āĻāĻāĻāĻŋ āĻā§āĻāϞāĻŋāϏā§āĻ:\n\n- āĻĒā§āϰāϤāĻŋāĻāĻŋ āϰāĻŋāĻā§āϰāĻžāĻāĻāĻŦāϞ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻā§āϰ āĻāύā§āϝ, āĻāĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āϏāĻŋ āϏā§āĻā§āĻĒ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ (per user, per account, per order, per external event) āĻāĻŦāĻ āϞāĻŋāĻā§ āϰāĻžāĻāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŋ?\n- Dedup āĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ āĻĻā§āĻŦāĻžāϰāĻž āĻāύāĻĢā§āϰā§āϏ āĻāϰāĻž āĻšāĻā§āĻā§ (idempotency key āĻāĻŦāĻ āϏā§āĻā§āĻĒā§ āĻāĻāύāĻŋāĻ āĻāύāϏā§āĻā§āϰā§āĻāύā§āĻ), āĻā§āĻŦāϞ āĻā§āĻĄā§ āĻā§āĻ āĻāϰāĻž āύāϝāĻŧ?\n- āϰāĻŋāϞā§āĻĒā§, āĻāĻĒāύāĻŋ āĻāĻāĻ āϏā§āĻā§āϝāĻžāĻāĻžāϏ āĻā§āĻĄ āĻāĻŦāĻ āϰā§āϏāĻĒāύā§āϏ āĻŦāĻĄāĻŋ (āĻ
āĻĨāĻŦāĻž āĻĄāĻā§āĻŽā§āύā§āĻā§āĻĄ āϏā§āĻĨāĻŋāϰ āϏāĻžāĻŦāϏā§āĻ) āĻĢā§āϰāϤ āĻĻāĻŋāĻā§āĻā§āύ, āύāĻž āĻāĻŋ āĻāĻāĻāĻŋ āύāϤā§āύ āĻ
āĻŦāĻā§āĻā§āĻ āĻŦāĻž āύāϤā§āύ āĻāĻžāĻāĻŽāϏā§āĻā§āϝāĻžāĻŽā§āĻĒ?\n- āĻĒā§āĻŽā§āύā§āĻā§, āϏāĻžāĻŦāĻŽāĻŋāĻ āĻāϰāĻžāϰ āĻĒāϰ⧠āĻ
āĻāĻžāύāĻž āĻĢāϞāĻžāĻĢāϞāĻā§āϞ⧠āύāĻŋāϰāĻžāĻĒāĻĻā§ āĻšā§āϝāĻžāύā§āĻĄāϞ āĻāϰāĻā§āύ (āĻāĻžāĻāĻŽāĻāĻāĻ, āĻā§āĻāĻāϝāĻŧā§ āĻŦāϞ⧠âprocessingâ) āϝāĻžāϤ⧠āĻĻā§âāĻŦāĻžāϰ āĻāĻžāϰā§āĻ āύāĻž āĻšāϝāĻŧ?\n- āϞāĻ āĻ āĻŽā§āĻā§āϰāĻŋāĻā§āϏ āĻāĻŋ āϏāĻšāĻā§āĻ āĻĻā§āĻāĻžāϝāĻŧ āĻāĻāύ āĻ
āύā§āϰā§āϧ āĻĒā§āϰāĻĨāĻŽ-āĻĻā§āĻāĻž āĻšāϝāĻŧā§āĻā§ āĻŦāύāĻžāĻŽ āϰāĻŋāϞā§āĻĒ?\n\nāϝāĻĻāĻŋ āĻā§āύ⧠āĻāĻāĻā§āĻŽ âāĻšāϝāĻŧāϤā§â āĻĨāĻžāĻā§, āĻāĻāύāĻ āĻ āĻŋāĻ āĻāϰā§āύāĨ¤ āĻŦā§āĻļāĻŋāϰāĻāĻžāĻ āĻŦā§āϝāϰā§āĻĨāϤāĻž āĻāĻžāĻĒā§āϰ āϏāĻŽāϝāĻŧāĻ āĻĻā§āĻāĻž āĻĻā§āϝāĻŧ: āĻĒā§āϝāĻžāϰāĻžāϞāĻžāϞ āϰāĻŋāĻā§āϰāĻžāĻ, āϧā§āϰ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ, āĻ āĻāĻāĻļāĻŋāĻ āĻāĻāĻā§āĻāĨ¤\n\nāĻāĻĒāύāĻŋ āϝāĻĻāĻŋ AppMaster (appmaster.io) āĻāϰ āĻāĻĒāϰ⧠āĻ
āĻā§āϝāύā§āϤāϰā§āĻŖ āĻā§āϞ āĻŦāĻž āĻāĻžāϏā§āĻāĻŽāĻžāϰ-āĻĢā§āϏāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āĻŦāĻžāύāĻžāύ, āϤāĻžāĻšāϞ⧠āĻļā§āϰā§āϤā§āĻ idempotency āĻā§āĻā§āϞāĻŋ āĻāĻŦāĻ PostgreSQL dedup āĻā§āĻŦāĻŋāϞ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰāĻž āϏā§āĻŦāĻŋāϧāĻžāϝā§āĻā§āϤāĨ¤ āĻāĻāĻžāĻŦā§, āϝāĻāύ āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻŦāĻĻāϞāĻžāϞ⧠Go āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ āĻā§āĻĄ āĻĒā§āύāϰāĻžāϝāĻŧ āĻā§āύāĻžāϰā§āĻ āĻāϰā§, āĻāĻĒāύāĻžāϰ retry āĻāĻāϰāĻŖ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻ āĻĨāĻžāĻāĻŦā§āĨ¤
āĻĒā§āϰāĻļā§āύā§āϤā§āϤāϰ
āϰāĻŋāĻā§āϰāĻžāĻāĻ āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻāĻžāϰāĻŖ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āĻŦāĻž āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻŽāĻžāĻā§ āĻŽāĻžāĻā§ āĻŦā§āϝāϰā§āĻĨ āĻšāϝāĻŧāĨ¤ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻ āύā§āϰā§āϧ āϏāĻĢāϞ āĻšāϞā§āĻ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻĒāϰā§āϝāύā§āϤ āĻāϤā§āϤāϰ āĻĒā§āĻāĻāĻžāϤ⧠āύāĻžāĻ āĻĒāĻžāϰā§, āĻĢāϞ⧠āĻā§āϞāĻžā§ā§āύā§āĻ āĻĒā§āύāϰāĻžāϝāĻŧ āĻ āύā§āϰā§āϧ āĻāϰ⧠āĻāĻŦāĻ āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻāĻāĻ āĻĢāϞāĻžāĻĢāϞ āĻĒā§āύāϰāĻžāϝāĻŧ āĻĒā§āϞ⧠āύāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āϤāĻžāĻšāϞ⧠āĻāĻāĻ āĻāĻžāĻ āĻĻā§âāĻŦāĻžāϰ āĻāϰāϤ⧠āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻāĻ āĻāĻžāĻā§āϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒā§āύāϰāĻžāϝāĻŧāĻā§āώā§āĻāĻžāϝāĻŧ āĻāĻāĻ āĻā§ āĻĒāĻžāĻ āĻžāύāĨ¤ āĻāĻāĻŋ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻāĻ āĻā§āύāĻžāϰā§āĻ āĻāϰāĻž āĻāĻāĻŋāϤ â āĻāĻāĻāĻŋ āϰā§āϝāĻžāύā§āĻĄāĻŽ, āĻ āύā§āĻŽāĻžāύāϝā§āĻā§āϝ āύāϝāĻŧ āϏā§āĻā§āϰāĻŋāĻ (āĻāĻĻāĻžāĻšāϰāĻŖ: UUID)āĨ¤ āĻāĻāĻ āĻā§āĻā§ āĻāĻŋāύā§āύ āĻāĻžāĻā§āϰ āĻāύā§āϝ āĻĒā§āύāϰāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ āύāĻžāĨ¤
āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāϏāĻžāϝāĻŧāĻŋāĻ āĻŦāĻŋāϧāĻŋāϰ āϏāĻā§āĻā§ āĻŽāĻŋāϞ āϰā§āĻā§ āϏā§āĻā§āĻĒ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰā§āύ â āϏāĻžāϧāĻžāϰāĻŖāϤ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻ āĻĒā§āϞāĻžāϏ āĻāϞ āĻāϰāĻžāϰ āĻĒāϰāĻŋāĻāϝāĻŧ āϝā§āĻŽāύ user, account, tenant, āĻŦāĻž API tokenāĨ¤ āĻāϤ⧠āĻĻā§āĻ āĻāĻŋāύā§āύ āĻā§āϰāĻžāĻšāĻ āĻāĻāĻ āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻā§ āĻ āĻĒāϰā§āϰ āĻĢāϞāĻžāĻĢāϞ āĻĒāĻžāĻŦā§ āύāĻžāĨ¤
āĻĒā§āϰāĻĨāĻŽ āϏāĻĢāϞ āĻĒā§āϰāĻā§āώā§āĻāĻžāϰ āĻāĻāĻ āĻĢāϞāĻžāĻĢāϞ āĻĢāĻŋāϰāĻŋāϝāĻŧā§ āĻĻāĻŋāύāĨ¤ āĻŦāĻžāϏā§āϤāĻŦā§ āĻāϰ āĻŽāĻžāύ⧠āĻšāϞ⧠āĻāĻāĻ HTTP āϏā§āĻā§āϝāĻžāĻāĻžāϏ āĻā§āĻĄ āĻāĻŦāĻ āĻāĻāĻ āϰā§āϏāĻĒāύā§āϏ āĻŦāĻĄāĻŋ (āĻ āĻĨāĻŦāĻž āĻ āύā§āϤāϤ āĻāĻāĻ resource ID āĻ state) āϰāĻŋāϞā§āĻĒ āĻāϰāĻž āϝāĻžāϤ⧠āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āύāĻŋāϰāĻžāĻĒāĻĻā§ āĻĒā§āύāϰāĻžāϝāĻŧ āĻā§āώā§āĻāĻž āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āĻāĻŦāĻ āĻĻā§āĻŦāĻŋāϤā§ā§ āĻā§āύ āĻĒāĻžāϰā§āĻļā§āĻŦāĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻž āύāĻž āĻāĻā§āĨ¤
āĻāĻāĻž āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻā§āϞ āĻāϰ⧠āĻāĻāĻ idempotency āĻā§ āĻĻāĻŋāϝāĻŧā§ āĻāĻŋāύā§āύ āĻ āύā§āϰā§āϧ āĻĒāĻžāĻ āĻžāϞ⧠āϤāĻž āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§ āĻāύāĻĢā§āϞāĻŋāĻā§āĻ-āϏā§āĻāĻžāĻāϞ āĻāϰāϰ āĻĻāĻŋāϝāĻŧā§ āĻĒā§āϰāϤā§āϝāĻžāĻā§āϝāĻžāύ āĻāϰā§āύāĨ¤ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻ āύā§āϰā§āϧ āĻā§āώā§āϤā§āϰāĻā§āϞā§āϰ āĻšā§āϝāĻžāĻļ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āĻāĻŦāĻ āĻā§ āĻŽāĻŋāϞāϞ⧠āĻāĻŋāύā§āϤ⧠āĻĒā§-āϞā§āĻĄ āύāĻž āĻŽāĻŋāϞ⧠āĻĻā§āϰā§āϤ āϤā§āϰā§āĻāĻŋ āĻĻā§āĻāĻžāύ, āϝāĻžāϤ⧠āĻāĻāĻ āĻā§âāϤ⧠āĻĻā§āĻ āĻāϞāĻžāĻĻāĻž āĻ āĻĒāĻžāϰā§āĻļāύ āĻŽāĻŋāĻļā§ āύāĻž āϝāĻžāϝāĻŧāĨ¤
āĻŦāĻžāϏā§āϤāĻŦāϏāĻŽā§āĻŽāϤ āϰāĻŋāĻā§āϰāĻžāĻ āĻāĻāĻžāϰ āĻāϰāĻžāϰ āĻŽāϤ āϏāĻŽāϝāĻŧ āĻĒāϰā§āϝāύā§āϤ āĻā§ āϰāĻžāĻā§āύ, āϤāĻžāϰāĻĒāϰ āϏā§āĻā§āϞ⧠āĻŽā§āĻā§āύāĨ¤ āϏāĻžāϧāĻžāϰāĻŖ āĻĄāĻŋāĻĢāϞā§āĻ: āĻĒā§āĻŽā§āύā§āĻā§āϰ āĻāύā§āϝ 24â72 āĻāύā§āĻāĻž, āĻāĻŽā§āĻĒā§āϰā§āĻā§āϰ āĻāύā§āϝ āĻāĻ āϏāĻĒā§āϤāĻžāĻš, āĻāĻŦāĻ āĻāϝāĻŧā§āĻŦāĻšā§āĻāĻā§āϞā§āϰ āĻāύā§āϝ āĻĒā§āϰā§āϰāĻā§āϰ āϰāĻŋāĻā§āϰāĻžāĻ āĻĒāϞāĻŋāϏāĻŋāϰ āϏāĻžāĻĨā§ āĻŽā§āϞ⧠āĻāĻŽāύ āĻāĻāĻāĻŋ āĻāĻāύā§āĻĄā§ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰā§āύāĨ¤
āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ dedup āĻā§āĻŦāĻŋāϞ āĻā§āĻŦ āĻāĻžāϰā§āϝāĻāϰ āĻāĻžāϰāĻŖ āĻĄāĻžāĻāĻžāĻŦā§āĻ āĻāĻāύāĻŋāĻ āĻāύāϏā§āĻā§āϰā§āĻāύā§āĻ āĻāύāĻĢā§āϰā§āϏ āĻāϰ⧠āĻāĻŦāĻ āϰāĻŋāϏā§āĻāĻžāϰā§āĻā§āϰ āĻĒāϰ⧠āĻā§āĻāϏāĻ āĻĨāĻžāĻā§āĨ¤ āĻŽāĻžāϞāĻŋāĻ āϏā§āĻā§āĻĒ, āĻā§, āĻāĻāĻāĻŋ āĻ
āύā§āϰā§āϧ āĻšā§āϝāĻžāĻļ, āϏā§āĻā§āϝāĻžāĻāĻžāϏ, āĻāĻŦāĻ āϰāĻŋāĻĒā§āϞ⧠āĻāϰāĻžāϰ āĻāύā§āϝ āϰā§āϏāĻĒāύā§āϏ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ; āϤāĻžāϰāĻĒāϰ (owner, key)-āĻ āĻāĻāύāĻŋāĻ āĻāύāϏā§āĻā§āϰā§āĻāύā§āĻ āĻāϰā§āύ āϝāĻžāϤ⧠āĻļā§āϧ⧠āĻāĻ āĻ
āύā§āϰā§āϧāĻ âāĻā§ā§â āĻšā§āĨ¤
āĻĒā§āϰāĻĨāĻŽā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ āĻā§āϰāĻžāύā§āϏāĻ
ā§āϝāĻžāĻāĻļāύā§āϰ āĻŽāϧā§āϝ⧠āĻā§ āĻā§āϞā§āĻāĻŽ āĻāϰā§āύ, āϤāĻžāϰāĻĒāϰ āϏāĻžāĻāĻĄ-āĻāĻĢā§āĻā§āĻāĻāĻŋ āĻā§āĻŦāϞ āϤāĻāύāĻ āĻāĻžāϞāĻžāύ āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ āϏāĻĢāϞāĻāĻžāĻŦā§ āĻā§āϞā§āĻāĻŽ āĻāϰā§āύāĨ¤ āĻ
āύā§āϝ āϝā§āĻā§āύ⧠āĻĒā§āϝāĻžāϰāĻžāϞāĻžāϞ āĻ
āύā§āϰā§āϧ āĻāĻāύāĻŋāĻ āĻāύāĻĢā§āϞāĻŋāĻā§āĻā§ āĻĒā§āĻāĻāĻŦā§, in_progress āĻŦāĻž completed āĻĻā§āĻāĻŦā§ āĻāĻŦāĻ āϞāĻāĻŋāĻāĻāĻŋ āĻĻā§âāĻŦāĻžāϰ āĻāĻžāϞāĻžāύ⧠āĻĨā§āĻā§ āĻŦāĻŋāϰāϤ āĻĨāĻžāĻāĻŦā§āĨ¤
āĻāĻžāĻāĻŽāĻāĻāĻāĻā§ âāĻĢā§āϞâ āϧāϰ⧠āύā§āĻŦā§āύ āύāĻž; āĻāĻāĻŋāĻā§ "āĻ āĻā§āĻāĻžāϤ" āĻšāĻŋāϏā§āĻŦā§ āĻĻā§āĻā§āύāĨ¤ āĻāĻāĻāĻŋ pending āϏā§āĻā§āĻ āϰā§āĻāϰā§āĻĄ āĻāϰā§āύ āĻāĻŦāĻ āϝāĻĻāĻŋ provider ID āĻĨāĻžāĻā§, āϏā§āĻāĻžāĻā§ āϏā§āϤā§āϰ āĻšāĻŋāϏā§āĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ āϝāĻžāϤ⧠āϰāĻŋāĻā§āϰāĻžāĻ āĻā§āĻŦāϞ āĻāĻāĻ āĻĒā§āĻŽā§āύā§āĻ āϰā§āĻāĻžāϞā§āĻ āĻĢāĻŋāϰāĻŋāϝāĻŧā§ āĻĻā§āϝāĻŧ āĻāĻŦāĻ āύāϤā§āύ āĻāĻžāϰā§āĻ āϤā§āϰāĻŋ āύāĻž āĻāϰā§āĨ¤
āĻĻā§āĻ āϏā§āϤāϰ⧠āĻĄā§āĻĄāĻžāĻĒ āĻāϰā§āύ: job-level āĻāĻŦāĻ item-levelāĨ¤ āϰāĻŋ-āĻā§āϰāĻžāĻ āĻāĻāĻ import job ID āĻĢāĻŋāϰāĻŋāϝāĻŧā§ āĻĻāĻŋāĻ, āĻāĻŦāĻ āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏāĻžāϰāĻŋāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻĒā§āϰāĻžāĻā§āϤāĻŋāĻ āĻā§ (external ID āĻŦāĻž (account_id, email) āĻāϤā§āϝāĻžāĻĻāĻŋ) āĻāĻāύāĻŋāĻ āĻāύāϏā§āĻā§āϰā§āĻāύā§āĻ āĻŦāĻž upsert āĻĻāĻŋāϝāĻŧā§ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āύ āϝāĻžāϤ⧠āĻĒā§āύāϰāĻžāϝāĻŧ āĻĒā§āϰāϏā§āϏ āĻāϰāϞ⧠āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻ āύāĻž āĻšāϝāĻŧāĨ¤


