{
  "id": "RB-001",
  "name": "Restore recycle-bin row by entry id",
  "description": "Restoring a soft-deleted record should use the recycle-bin entry id and clear the underlying Account.IsDeleted flag.",
  "scene": "recycle_bin",
  "object": "RecycleBin",
  "method": "POST",
  "endpoint": "/services/data/v63.0/recyclebin/restore/{recycle_bin_entry_id}",
  "setup": [
    {
      "name": "Create soft-deleted Account for recycle-bin restore",
      "type": "sql",
      "sql": "INSERT INTO Account (Id, Name, IsDeleted) VALUES ('001RB001', 'Recycle Restore Account', 1) ON DUPLICATE KEY UPDATE Name=VALUES(Name), IsDeleted=VALUES(IsDeleted)",
      "id_var": "seed_account_id",
      "id_value": "001RB001",
      "object": "Account"
    },
    {
      "name": "Create recycle-bin entry keyed by synthetic row id",
      "type": "sql",
      "sql": "INSERT INTO _System_RecycleBin (Id, RecordId, ObjectApiName, RecordName, DeletedBy, DeletedDate, CreatedDate, LastModifiedDate) VALUES ('rb-001-entry', '001RB001', 'Account', 'Recycle Restore Account', '10000000-0000-0000-0000-000000000001', NOW(), NOW(), NOW()) ON DUPLICATE KEY UPDATE RecordId=VALUES(RecordId), ObjectApiName=VALUES(ObjectApiName), RecordName=VALUES(RecordName), DeletedBy=VALUES(DeletedBy), DeletedDate=VALUES(DeletedDate), LastModifiedDate=VALUES(LastModifiedDate)",
      "id_var": "recycle_bin_entry_id",
      "id_value": "rb-001-entry",
      "object": "_System_RecycleBin"
    }
  ],
  "expects": {
    "status_code": 204
  },
  "query_after": {
    "object": "Account",
    "record_id": "{seed_account_id}",
    "assertions": [
      {
        "field": "IsDeleted",
        "operator": "eq",
        "value": false
      }
    ]
  },
  "teardown": [
    {
      "type": "sql",
      "sql": "DELETE FROM _System_RecycleBin WHERE Id = 'rb-001-entry'"
    },
    {
      "type": "sql",
      "sql": "DELETE FROM Account WHERE Id = '001RB001'"
    }
  ],
  "priority": "P1"
}
