> ## Documentation Index
> Fetch the complete documentation index at: https://www.ayrshare.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Cập nhật Automation

> Cập nhật một automation hiện có

export const PlansAvailable = ({plans = [], maxPackRequired}) => {
  let displayPlans = plans;
  if (plans && plans.length === 1) {
    const lowerCasePlan = plans[0].toLowerCase();
    if (lowerCasePlan === "business") {
      displayPlans = ["Launch", "Business", "Enterprise"];
    } else if (lowerCasePlan === "premium") {
      displayPlans = ["Premium", "Launch", "Business", "Enterprise"];
    }
  }
  return <Note>
Available on {displayPlans.length === 1 ? "the " : ""}
{displayPlans.join(", ").replace(/\b\w/g, l => l.toUpperCase())}{" "}
{displayPlans.length > 1 ? "plans" : "plan"}.

{maxPackRequired && <span onClick={() => window.open('https://www.ayrshare.com/docs/additional/maxpack', '_self')} className="flex items-center mt-2 cursor-pointer">
 <span className="px-1.5 py-0.5 rounded text-sm" style={{
    backgroundColor: '#C264B6',
    color: 'white',
    fontSize: '12px'
  }}>
   Max Pack required
 </span>
</span>}
</Note>;
};

export const HeaderAPI = ({noProfileKey, profileKeyRequired}) => <>
    <ParamField header="Authorization" type="string" required>
      <a href="/apis/overview#authorization">API Key</a> of the Primary Profile.
      <br />
      <br />
      Format: <code>Authorization: Bearer API_KEY</code>
    </ParamField>
    {!noProfileKey && (profileKeyRequired ? <ParamField header="Profile-Key" type="string" required>
          <a href="/apis/overview#profile-key-format">Profile Key</a> of a User Profile.
          <br />
          <br />
          Format: <code>Profile-Key: PROFILE_KEY</code>
        </ParamField> : <ParamField header="Profile-Key" type="string">
          <a href="/apis/overview#profile-key-format">Profile Key</a> of a User Profile.
          <br />
          <br />
          Format: <code>Profile-Key: PROFILE_KEY</code>
        </ParamField>)}
  </>;

<PlansAvailable plans={["business", "enterprise"]} maxPackRequired={false} />

<Note>
  **Beta.** Xem [Tổng quan về Automations](/apis/automations/overview) để biết mô tả đầy đủ về tính năng.
</Note>

Cập nhật một phần. Chỉ các trường được liệt kê là có thể chỉnh sửa; gửi bất kỳ thứ gì khác (ví dụ: `platform`, `accountId`) sẽ bị từ chối như một lỗi validation.

Việc gửi `triggers` hoặc `actions` **thay thế** các mục con hiện có một cách nguyên tử: tập hợp cũ bị xóa và tập hợp mới được ghi trong một giao dịch Firestore duy nhất. Để thay đổi chỉ một trigger, hãy gửi toàn bộ mảng mới.

Kích hoạt lại một automation không hoạt động trước đó (`active: true`) sẽ kiểm tra lại giới hạn số lượng automation đang hoạt động. Nếu giới hạn đã đạt mức tối đa, việc cập nhật sẽ thất bại với mã `470` và không có thay đổi nào được thực hiện.

## Tham số Header

<HeaderAPI />

## Tham số Path

<ParamField path="id" type="string" required>
  ID automation được trả về từ `POST /automations`.
</ParamField>

## Tham số Body

<ParamField body="name" type="string">
  Tên mới.
</ParamField>

<ParamField body="description" type="string">
  Mô tả mới.
</ParamField>

<ParamField body="active" type="boolean">
  Bật hoặc tắt automation. Đặt từ `false` sang `true` sẽ kiểm tra lại giới hạn số lượng automation đang hoạt động.
</ParamField>

<ParamField body="triggers" type="array">
  Tập hợp thay thế đầy đủ các trigger (1–50). Cùng hình dạng với endpoint tạo.
</ParamField>

<ParamField body="actions" type="array">
  Tập hợp thay thế đầy đủ các action (1–50). Cùng hình dạng với endpoint tạo.
</ParamField>

<RequestExample>
  ```bash cURL theme={"system"}
  curl \
  -H "Authorization: Bearer API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Spring promo (updated)",
    "active": true,
    "actions": [
      {
        "type": "send_dm",
        "message": "Hey {{recipient_username}}! New link: https://example.com/spring"
      }
    ]
  }' \
  -X PUT https://api.ayrshare.com/api/automations/auto_9xKp2Lm4nQ
  ```

  ```javascript JavaScript theme={"system"}
  const API_KEY = "API_KEY";
  const id = "auto_9xKp2Lm4nQ";

  fetch(`https://api.ayrshare.com/api/automations/${id}`, {
    method: "PUT",
    headers: {
      "Authorization": `Bearer ${API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      name: "Spring promo (updated)",
      active: true,
      actions: [
        {
          type: "send_dm",
          message: "Hey {{recipient_username}}! New link: https://example.com/spring",
        },
      ],
    }),
  })
    .then((res) => res.json())
    .then((json) => console.log(json))
    .catch(console.error);
  ```

  ```python Python theme={"system"}
  import requests

  headers = {
      "Authorization": "Bearer API_KEY",
      "Content-Type": "application/json",
  }
  automation_id = "auto_9xKp2Lm4nQ"

  payload = {
      "name": "Spring promo (updated)",
      "active": True,
      "actions": [
          {
              "type": "send_dm",
              "message": "Hey {{recipient_username}}! New link: https://example.com/spring",
          }
      ],
  }

  r = requests.put(
      f"https://api.ayrshare.com/api/automations/{automation_id}",
      json=payload,
      headers=headers,
  )

  print(r.json())
  ```

  ```php PHP theme={"system"}
  $id = "auto_9xKp2Lm4nQ";

  $data = [
      "name" => "Spring promo (updated)",
      "active" => true,
      "actions" => [
          [
              "type" => "send_dm",
              "message" => "Hey {{recipient_username}}! New link: https://example.com/spring",
          ],
      ],
  ];

  $curl = curl_init();
  curl_setopt_array($curl, [
      CURLOPT_URL => "https://api.ayrshare.com/api/automations/" . $id,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_CUSTOMREQUEST => "PUT",
      CURLOPT_POSTFIELDS => json_encode($data),
      CURLOPT_HTTPHEADER => [
          "Authorization: Bearer API_KEY",
          "Content-Type: application/json",
      ],
  ]);

  $response = curl_exec($curl);
  curl_close($curl);
  echo $response;
  ```
</RequestExample>

<ResponseExample>
  ```json 200: Success theme={"system"}
  {
    "status": "success",
    "id": "auto_9xKp2Lm4nQ"
  }
  ```

  ```json 400: Validation failed — editing platform is not allowed theme={"system"}
  {
    "action": "request",
    "status": "error",
    "code": 473,
    "message": "Validation failed. Please see: https://www.ayrshare.com/docs/introduction",
    "details": {
      "formErrors": ["Unrecognized key: \"platform\""],
      "fieldErrors": {}
    }
  }
  ```

  ```json 404: Not found theme={"system"}
  {
    "action": "automation",
    "status": "error",
    "code": 469,
    "message": "Automation not found"
  }
  ```

  ```json 429: Cap reached on reactivation theme={"system"}
  {
    "action": "automation",
    "status": "error",
    "code": 470,
    "message": "Active automation limit reached for your plan tier"
  }
  ```
</ResponseExample>
