{
  "_id": "6a1809edacfb0bcc41dad82c",
  "Package": "whapi",
  "Title": "R Client for 'whapi.cloud'",
  "Version": "0.0.2",
  "Date": "2025-09-10",
  "Authors@R": "c(\nperson(\"Andre\", \"Leite\", email = \"leite@castlab.org\", role = c(\"aut\", \"cre\")),\nperson(\"Hugo\", \"Vaconcelos\", email = \"hugo.vasconcelos@ufpe.br\", role = \"aut\"),\nperson(\"Diogo\", \"Bezerra\", email = \"diogo.bezerra@ufpe.br\", role = \"aut\"))",
  "Description": "Provides an R interface to the 'whapi.cloud' 'API',\nenabling sending and receiving 'WhatsApp' messages directly\nfrom 'R'. Functions include sending text, images, documents,\nstickers, geographic locations, and interactive messages\n(buttons and lists). Also includes webhook parsing utilities\nand channel health checks.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/StrategicProjects/whapi/",
  "BugReports": "https://github.com/StrategicProjects/whapi/",
  "Config/testthat/edition": "3",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.2",
  "Config/pak/sysreqs": "libicu-dev libssl-dev libx11-dev",
  "Repository": "https://strategicprojects.r-universe.dev",
  "Date/Publication": "2025-09-10 21:38:56 UTC",
  "RemoteUrl": "https://github.com/strategicprojects/whapi",
  "RemoteRef": "HEAD",
  "RemoteSha": "03dab89f410f40822f38fe07c49e1decc796ead7",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-05-28 09:21:55 UTC",
    "User": "root"
  },
  "Author": "Andre Leite [aut, cre],\nHugo Vaconcelos [aut],\nDiogo Bezerra [aut]",
  "Maintainer": "Andre Leite <leite@castlab.org>",
  "MD5sum": "46f78ede6a01b47aa0832469c3877b0c",
  "_user": "strategicprojects",
  "_type": "src",
  "_file": "whapi_0.0.2.tar.gz",
  "_fileid": "8e0b6d55d5c49e6263bde29c0c2568e61196e0e556979f5a267a96c709a127ec",
  "_filesize": 263018,
  "_sha256": "8e0b6d55d5c49e6263bde29c0c2568e61196e0e556979f5a267a96c709a127ec",
  "_created": "2026-05-28T09:21:55.000Z",
  "_published": "2026-05-28T09:25:01.172Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 78261386873,
      "time": 142,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7262307679"
    },
    {
      "job": 78261386879,
      "time": 136,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7262306001"
    },
    {
      "job": 78261386849,
      "time": 88,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7262289623"
    },
    {
      "job": 78261386807,
      "time": 106,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7262295248"
    },
    {
      "job": 78260926504,
      "time": 169,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7262259082"
    },
    {
      "job": 78261386886,
      "time": 114,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7262298254"
    },
    {
      "job": 78261386844,
      "time": 93,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7262291421"
    },
    {
      "job": 78261386867,
      "time": 89,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7262290397"
    },
    {
      "job": 78261387017,
      "time": 89,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7262290087"
    }
  ],
  "_buildurl": "https://github.com/r-universe/strategicprojects/actions/runs/26566049028",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/strategicprojects/whapi",
  "_commit": {
    "id": "03dab89f410f40822f38fe07c49e1decc796ead7",
    "author": "André Leite <leite@de.ufpe.br>",
    "committer": "André Leite <leite@de.ufpe.br>",
    "message": "update docs\n",
    "time": 1757540336
  },
  "_maintainer": {
    "name": "Andre Leite",
    "email": "leite@castlab.org"
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.2.0",
      "role": "Depends"
    },
    {
      "package": "httr2",
      "version": ">= 1.0.0",
      "role": "Imports"
    },
    {
      "package": "cli",
      "version": ">= 3.6.0",
      "role": "Imports"
    },
    {
      "package": "tibble",
      "version": ">= 3.2.0",
      "role": "Imports"
    },
    {
      "package": "purrr",
      "version": ">= 1.0.0",
      "role": "Imports"
    },
    {
      "package": "stringr",
      "version": ">= 1.5.0",
      "role": "Imports"
    },
    {
      "package": "stringi",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "role": "Imports"
    },
    {
      "package": "readr",
      "role": "Imports"
    },
    {
      "package": "lubridate",
      "version": ">= 1.9.0",
      "role": "Imports"
    },
    {
      "package": "jsonlite",
      "version": ">= 1.8.0",
      "role": "Imports"
    },
    {
      "package": "mime",
      "role": "Imports"
    },
    {
      "package": "openssl",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "pkgdown",
      "role": "Suggests"
    }
  ],
  "_owner": "strategicprojects",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2025-35",
      "n": 2
    },
    {
      "week": "2025-36",
      "n": 1
    },
    {
      "week": "2025-37",
      "n": 2
    }
  ],
  "_tags": [],
  "_stars": 0,
  "_contributors": [
    {
      "user": "milkway",
      "count": 5,
      "uuid": 7375849
    }
  ],
  "_userbio": {
    "uuid": 127886513,
    "type": "organization",
    "name": "Secretaria Executiva de Monitoramento Estratégicos",
    "description": "Repositório de código da Secretaria Executiva de Monitoramento Estratégicos."
  },
  "_downloads": {
    "count": 123,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/whapi"
  },
  "_devurl": "https://github.com/strategicprojects/whapi",
  "_searchresults": 0,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/whapi.html",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/strategicprojects/whapi",
  "_realowner": "strategicprojects",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.0.2",
      "date": "2025-09-29"
    }
  ],
  "_exports": [
    "whapi_as_array",
    "whapi_build_servicos_sections",
    "whapi_check_health",
    "whapi_clip_text",
    "whapi_coerce_buttons_base",
    "whapi_coerce_buttons_mixed",
    "whapi_coerce_buttons_quick",
    "whapi_common_blocks",
    "whapi_date_diff_days",
    "whapi_extract_common_fields",
    "whapi_flatten_webhook",
    "whapi_fmt_date",
    "whapi_get_contact_profile",
    "whapi_get_message",
    "whapi_log_plumber_req",
    "whapi_log_pretty_json",
    "whapi_make_unique",
    "whapi_mark_message_read",
    "whapi_match_digits",
    "whapi_normalize_to",
    "whapi_only_digits",
    "whapi_parse_body",
    "whapi_parse_command",
    "whapi_parse_messages",
    "whapi_parse_updates",
    "whapi_perform_request",
    "whapi_react_to_message",
    "whapi_redact",
    "whapi_scalarize_change",
    "whapi_send_document",
    "whapi_send_image",
    "whapi_send_list",
    "whapi_send_location",
    "whapi_send_mixed_actions",
    "whapi_send_quick_reply",
    "whapi_send_sticker",
    "whapi_send_text",
    "whapi_slugify",
    "whapi_to_ascii_lower",
    "whapi_to_num",
    "whapi_to_posix",
    "whapi_to_posixct",
    "whapi_to_pretty_json",
    "whapi_trunc",
    "whapi_validate_list_sections"
  ],
  "_help": [
    {
      "page": "whapi_build_servicos_sections",
      "title": "Build Whapi service sections from a tibble (with 'section' column)",
      "topics": [
        "whapi_build_servicos_sections"
      ]
    },
    {
      "page": "whapi_check_health",
      "title": "Check Whapi.Cloud channel health and status",
      "topics": [
        "whapi_check_health"
      ]
    },
    {
      "page": "whapi_clip_text",
      "title": "Clip long text with ellipsis",
      "topics": [
        "whapi_clip_text"
      ]
    },
    {
      "page": "whapi_coerce_buttons_base",
      "title": "Coerce and normalize button specs for Whapi interactive messages",
      "topics": [
        "whapi_coerce_buttons_base"
      ]
    },
    {
      "page": "whapi_coerce_buttons_mixed",
      "title": "Coerce and validate MIXED buttons (url / call / copy) for Whapi",
      "topics": [
        "whapi_coerce_buttons_mixed"
      ]
    },
    {
      "page": "whapi_coerce_buttons_quick",
      "title": "Coerce and validate QUICK REPLY buttons for Whapi",
      "topics": [
        "whapi_coerce_buttons_quick"
      ]
    },
    {
      "page": "whapi_common_blocks",
      "title": "Build common message blocks for Whapi interactive messages",
      "topics": [
        "whapi_common_blocks"
      ]
    },
    {
      "page": "whapi_date_diff_days",
      "title": "Days between two dates",
      "topics": [
        "whapi_date_diff_days"
      ]
    },
    {
      "page": "whapi_extract_common_fields",
      "title": "Extract common fields from Whapi API responses",
      "topics": [
        "whapi_extract_common_fields"
      ]
    },
    {
      "page": "whapi_flatten_webhook",
      "title": "Flatten Whapi webhook payload into tidy rows for persistence (robust)",
      "topics": [
        "whapi_flatten_webhook"
      ]
    },
    {
      "page": "whapi_fmt_date",
      "title": "Safe date formatting",
      "topics": [
        "whapi_fmt_date"
      ]
    },
    {
      "page": "whapi_get_contact_profile",
      "title": "Get WhatsApp contact profile(s) via Whapi.Cloud",
      "topics": [
        "whapi_get_contact_profile"
      ]
    },
    {
      "page": "whapi_get_message",
      "title": "Get a WhatsApp message by ID (Whapi.Cloud)",
      "topics": [
        "whapi_get_message"
      ]
    },
    {
      "page": "whapi_log_plumber_req",
      "title": "Log details of a Plumber request object using the cli package",
      "topics": [
        "whapi_log_plumber_req"
      ]
    },
    {
      "page": "whapi_log_pretty_json",
      "title": "Convert R objects to pretty JSON for logging",
      "topics": [
        "whapi_log_pretty_json"
      ]
    },
    {
      "page": "whapi_make_unique",
      "title": "Make identifiers unique while preserving order",
      "topics": [
        "whapi_make_unique"
      ]
    },
    {
      "page": "whapi_mark_message_read",
      "title": "Mark a WhatsApp message as READ (Whapi.Cloud)",
      "topics": [
        "whapi_mark_message_read"
      ]
    },
    {
      "page": "whapi_match_digits",
      "title": "Digit matching helper (with partial threshold)",
      "topics": [
        "whapi_match_digits"
      ]
    },
    {
      "page": "whapi_normalize_to",
      "title": "Normalize WhatsApp contact IDs (phone numbers only)",
      "topics": [
        "whapi_normalize_to"
      ]
    },
    {
      "page": "whapi_only_digits",
      "title": "Keep only digits from a string",
      "topics": [
        "whapi_only_digits"
      ]
    },
    {
      "page": "whapi_parse_body",
      "title": "Parse the raw body of a Plumber request",
      "topics": [
        "whapi_parse_body"
      ]
    },
    {
      "page": "whapi_parse_command",
      "title": "Parse a text message into command and arguments (Whapi helper)",
      "topics": [
        "whapi_parse_command"
      ]
    },
    {
      "page": "whapi_perform_request",
      "title": "Perform an HTTP request to Whapi.Cloud",
      "topics": [
        "whapi_perform_request"
      ]
    },
    {
      "page": "whapi_react_to_message",
      "title": "React to a WhatsApp message (Whapi.Cloud)",
      "topics": [
        "whapi_react_to_message"
      ]
    },
    {
      "page": "whapi_redact",
      "title": "Redact sensitive values in headers/cookies",
      "topics": [
        "whapi_redact"
      ]
    },
    {
      "page": "whapi_send_document",
      "title": "Send a DOCUMENT via Whapi.Cloud (file, url, or base64)",
      "topics": [
        "whapi_send_document"
      ]
    },
    {
      "page": "whapi_send_image",
      "title": "Send an image via Whapi.Cloud (file, url, or base64)",
      "topics": [
        "whapi_send_image"
      ]
    },
    {
      "page": "whapi_send_list",
      "title": "Send a WhatsApp interactive LIST message (Whapi.Cloud)",
      "topics": [
        "whapi_send_list"
      ]
    },
    {
      "page": "whapi_send_location",
      "title": "Send a geographic location via Whapi.Cloud",
      "topics": [
        "whapi_send_location"
      ]
    },
    {
      "page": "whapi_send_mixed_actions",
      "title": "Send a WhatsApp interactive message mixing URL/CALL/COPY buttons (Whapi.Cloud)",
      "topics": [
        "whapi_send_mixed_actions"
      ]
    },
    {
      "page": "whapi_send_quick_reply",
      "title": "Send a WhatsApp interactive message with QUICK REPLY buttons (Whapi.Cloud)",
      "topics": [
        "whapi_send_quick_reply"
      ]
    },
    {
      "page": "whapi_send_sticker",
      "title": "Send a STICKER via Whapi.Cloud (file, url, or base64)",
      "topics": [
        "whapi_send_sticker"
      ]
    },
    {
      "page": "whapi_send_text",
      "title": "Send a text message via Whapi.Cloud",
      "topics": [
        "whapi_send_text"
      ]
    },
    {
      "page": "whapi_slugify",
      "title": "whapi_slugify strings for safe IDs (e.g., button IDs in Whapi)",
      "topics": [
        "whapi_slugify"
      ]
    },
    {
      "page": "whapi_to_ascii_lower",
      "title": "Convert text to lowercase ASCII (remove accents)",
      "topics": [
        "whapi_to_ascii_lower"
      ]
    },
    {
      "page": "whapi_to_posixct",
      "title": "Convert numeric timestamp to POSIXct (UTC)",
      "topics": [
        "whapi_to_posixct"
      ]
    },
    {
      "page": "whapi_trunc",
      "title": "Truncate long strings for logging",
      "topics": [
        "whapi_trunc"
      ]
    },
    {
      "page": "whapi_validate_list_sections",
      "title": "Validate 'list_sections' for Whapi LIST interactive messages",
      "topics": [
        "whapi_validate_list_sections"
      ]
    }
  ],
  "_pkglogo": "https://github.com/strategicprojects/whapi/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/strategicprojects/whapi/raw/HEAD/README.md",
  "_rundeps": [
    "askpass",
    "bit",
    "bit64",
    "cli",
    "clipr",
    "cpp11",
    "crayon",
    "curl",
    "dplyr",
    "generics",
    "glue",
    "hms",
    "httr2",
    "jsonlite",
    "lifecycle",
    "lubridate",
    "magrittr",
    "mime",
    "openssl",
    "pillar",
    "pkgconfig",
    "prettyunits",
    "progress",
    "purrr",
    "R6",
    "rappdirs",
    "readr",
    "rlang",
    "stringi",
    "stringr",
    "sys",
    "tibble",
    "tidyselect",
    "timechange",
    "tzdb",
    "utf8",
    "vctrs",
    "vroom",
    "withr"
  ],
  "_score": 3.1760912590556813,
  "_indexed": true,
  "_nocasepkg": "whapi",
  "_universes": [
    "strategicprojects"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.0.2",
      "date": "2026-05-28T09:24:20.000Z",
      "distro": "noble",
      "commit": "03dab89f410f40822f38fe07c49e1decc796ead7",
      "fileid": "b92fa73dcbae81e9ed2ce0ab362220825f4dd8b3802a3f316a94c96475758003",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/strategicprojects/actions/runs/26566049028"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.0.2",
      "date": "2026-05-28T09:24:16.000Z",
      "distro": "noble",
      "commit": "03dab89f410f40822f38fe07c49e1decc796ead7",
      "fileid": "8c2126baa8d6bb89126a7ef7435b85a47490d687f51bea12eedd868a167a40bb",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/strategicprojects/actions/runs/26566049028"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.0.2",
      "date": "2026-05-28T09:23:32.000Z",
      "commit": "03dab89f410f40822f38fe07c49e1decc796ead7",
      "fileid": "e5a79f5f2c69f00e6bd7770f678c0ef6de6b98024235f459e4d45e324624cd5d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/strategicprojects/actions/runs/26566049028"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.0.2",
      "date": "2026-05-28T09:23:46.000Z",
      "commit": "03dab89f410f40822f38fe07c49e1decc796ead7",
      "fileid": "bf94fa59f40616a24cfa4f372dfbeb6c0309f2a05991bcdb021178c3789413a6",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/strategicprojects/actions/runs/26566049028"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.0.2",
      "date": "2026-05-28T09:24:11.000Z",
      "commit": "03dab89f410f40822f38fe07c49e1decc796ead7",
      "fileid": "d482d8b17680137e877702f144807d9c56b3c4f58f3e4f4ad83c3876bbcb4012",
      "status": "success",
      "buildurl": "https://github.com/r-universe/strategicprojects/actions/runs/26566049028"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.0.2",
      "date": "2026-05-28T09:23:26.000Z",
      "commit": "03dab89f410f40822f38fe07c49e1decc796ead7",
      "fileid": "9cbb23d7b5268f30240cd7749c9db0922cb401c6251ab09fdaefb91ba51ba34a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/strategicprojects/actions/runs/26566049028"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.0.2",
      "date": "2026-05-28T09:23:23.000Z",
      "commit": "03dab89f410f40822f38fe07c49e1decc796ead7",
      "fileid": "53d50ea4cb28d098f44b8b018c9f6f7970fa9d66423965bace4080c85eeb0281",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/strategicprojects/actions/runs/26566049028"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.0.2",
      "date": "2026-05-28T09:23:23.000Z",
      "commit": "03dab89f410f40822f38fe07c49e1decc796ead7",
      "fileid": "db9b7e3da4dd99f4a72703ebf38c181c9ec5ca2d172182a966038bd9170ce5f3",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/strategicprojects/actions/runs/26566049028"
    }
  ]
}