{
  "_id": "6ae110ff95ca2370cc8cad4d",
  "Package": "survey160r",
  "Title": "R Client for Survey160 Data",
  "Version": "0.78.1",
  "Authors@R": "c(\nperson(\"Lennon\", \"Shimokawa\", email = \"lshimokawa@survey160.com\", role = c(\"aut\", \"cre\"))\n)",
  "Description": "Access Survey160 campaign data from R. Reads campaign\nexports from Google Cloud Storage or local files and triggers\nfresh exports via the Survey160 API. Computes per-campaign\nrecipient-latency reports, screens phone samples against the\ndisposition dataset and the opt-out list, and rolls disposition\nand campaign metrics up to funnel counts and rates. Results are\nin-memory data frames; persistence and fleet orchestration live\nin consumer projects.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/survey160/survey160r",
  "BugReports": "https://github.com/survey160/survey160r/issues",
  "Encoding": "UTF-8",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "RoxygenNote": "7.3.3",
  "Config/pak/sysreqs": "cmake make libuv1-dev libssl-dev",
  "Repository": "https://survey160.r-universe.dev",
  "Date/Publication": "2026-10-27 16:36:55 UTC",
  "RemoteUrl": "https://github.com/survey160/survey160r",
  "RemoteRef": "HEAD",
  "RemoteSha": "36fc10d6af6a5194fbfd6ac22205aa0d2efc3d63",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-27 20:20:33 UTC",
    "User": "root"
  },
  "Author": "Lennon Shimokawa [aut, cre]",
  "Maintainer": "Lennon Shimokawa <lshimokawa@survey160.com>",
  "_user": "survey160",
  "_type": "src",
  "_file": "survey160r_0.78.1.tar.gz",
  "_fileid": "https://r2.ropensci.org/d9eae63691eaf076c9d3ddbc36b3519f413d9dbd32838479d8e7eb8b14227081",
  "_filesize": 764008,
  "_sha256": "d9eae63691eaf076c9d3ddbc36b3519f413d9dbd32838479d8e7eb8b14227081",
  "_expires": "2027-02-04T21:00:44.000Z",
  "_created": "2026-10-27T20:20:33.000Z",
  "_published": "2026-10-27T21:00:46.776Z",
  "_upstream": "https://github.com/survey160/survey160r",
  "_status": "success",
  "_maintainer": {
    "name": "Lennon Shimokawa",
    "email": "lshimokawa@survey160.com"
  },
  "_jobs": [
    {
      "job": 122446828051,
      "time": 188,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12767818165"
    },
    {
      "job": 122446828166,
      "time": 173,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12768356426"
    },
    {
      "job": 122446827862,
      "time": 2206,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "12769913940"
    },
    {
      "job": 122446828118,
      "time": 160,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12768676596"
    },
    {
      "job": 122445149194,
      "time": 186,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12767782642"
    },
    {
      "job": 122446828184,
      "time": 119,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "12768371006"
    },
    {
      "job": 122446828156,
      "time": 173,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "12766684304"
    },
    {
      "job": 122446828043,
      "time": 162,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "12768126540"
    },
    {
      "job": 122446827835,
      "time": 156,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "12766818986"
    }
  ],
  "_buildurl": "https://github.com/r-universe/survey160/actions/runs/40576702648",
  "_commit": {
    "id": "36fc10d6af6a5194fbfd6ac22205aa0d2efc3d63",
    "author": "Lennon Shimokawa <lshimokawa@gmail.com>",
    "committer": "GitHub <noreply@github.com>",
    "message": "A factor campaign_id orders by its label in the per-phone rollups (#126)",
    "time": 1793119015
  },
  "_distro": "resolute",
  "_host": "GitHub-Actions",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1",
      "role": "Depends"
    },
    {
      "package": "googleCloudStorageR",
      "version": ">= 0.7.0",
      "role": "Imports"
    },
    {
      "package": "googleAuthR",
      "role": "Imports"
    },
    {
      "package": "gargle",
      "role": "Imports"
    },
    {
      "package": "httr",
      "role": "Imports"
    },
    {
      "package": "jsonlite",
      "role": "Imports"
    },
    {
      "package": "lubridate",
      "role": "Imports"
    },
    {
      "package": "digest",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "lifecycle",
      "role": "Imports"
    },
    {
      "package": "data.table",
      "role": "Imports"
    },
    {
      "package": "nanoparquet",
      "version": ">= 0.4.0",
      "role": "Imports"
    },
    {
      "package": "askpass",
      "role": "Suggests"
    },
    {
      "package": "DBI",
      "role": "Suggests"
    },
    {
      "package": "dbplyr",
      "version": ">= 2.4.0",
      "role": "Suggests"
    },
    {
      "package": "duckdb",
      "version": ">= 1.0.0",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.1.9",
      "role": "Suggests"
    },
    {
      "package": "mockery",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    },
    {
      "package": "lintr",
      "role": "Suggests"
    },
    {
      "package": "covr",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    }
  ],
  "_owner": "survey160",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-12",
      "n": 2
    },
    {
      "week": "2026-13",
      "n": 2
    },
    {
      "week": "2026-14",
      "n": 3
    },
    {
      "week": "2026-15",
      "n": 5
    },
    {
      "week": "2026-20",
      "n": 10
    },
    {
      "week": "2026-21",
      "n": 4
    },
    {
      "week": "2026-22",
      "n": 4
    },
    {
      "week": "2026-23",
      "n": 1
    },
    {
      "week": "2026-24",
      "n": 4
    },
    {
      "week": "2026-32",
      "n": 2
    },
    {
      "week": "2026-33",
      "n": 21
    },
    {
      "week": "2026-34",
      "n": 7
    },
    {
      "week": "2026-35",
      "n": 2
    },
    {
      "week": "2026-36",
      "n": 11
    },
    {
      "week": "2026-37",
      "n": 5
    },
    {
      "week": "2026-38",
      "n": 13
    },
    {
      "week": "2026-39",
      "n": 8
    },
    {
      "week": "2026-40",
      "n": 2
    },
    {
      "week": "2026-41",
      "n": 2
    },
    {
      "week": "2026-42",
      "n": 5
    },
    {
      "week": "2026-43",
      "n": 4
    },
    {
      "week": "2026-44",
      "n": 5
    }
  ],
  "_tags": [],
  "_stars": 1,
  "_contributors": [
    {
      "user": "lshimokawa",
      "count": 122,
      "uuid": 187926
    }
  ],
  "_userbio": {
    "uuid": 78113752,
    "type": "organization",
    "name": "Survey 160",
    "followers": 1,
    "description": "Polling the nation, 160 GSM-7 characters at a time"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/survey160r"
  },
  "_devurl": "https://github.com/survey160/survey160r",
  "_searchresults": 8,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/survey160r.html",
    "LICENSE"
  ],
  "_cranurl": false,
  "_exports": [
    "campaign_metrics_pull",
    "campaign_metrics_records",
    "campaign_metrics_summary",
    "disposition_funnel",
    "disposition_input_columns",
    "disposition_paths",
    "disposition_pull",
    "disposition_records",
    "disposition_run",
    "disposition_screen",
    "disposition_steps",
    "disposition_summary",
    "funnel_rates",
    "latency_build_config",
    "latency_config_hash",
    "latency_discover_questions",
    "latency_funnel",
    "latency_input_columns",
    "latency_report",
    "latency_run",
    "latency_validate_config",
    "opt_out_pull",
    "opt_out_screen",
    "parse_campaign_timestamps",
    "question_funnel",
    "question_timestamps",
    "s160_api_auth",
    "s160_api_campaign_get",
    "s160_api_campaign_results",
    "s160_config",
    "s160_csv_header",
    "s160_datasets",
    "s160_gcs_campaign_results_files",
    "s160_gcs_campaign_results_list",
    "s160_gcs_campaign_results_read",
    "s160_gcs_campaign_results_status",
    "s160_gcs_init",
    "s160_read_csv",
    "utils_fix_double_utf8"
  ],
  "_help": [
    {
      "page": "survey160r-package",
      "title": "survey160r: R Client for Survey160 Data",
      "topics": [
        "survey160r-package",
        "survey160r"
      ]
    },
    {
      "page": "campaign_metrics_pull",
      "title": "Download the campaign-metrics projection from Cloud Storage",
      "topics": [
        "campaign_metrics_pull"
      ]
    },
    {
      "page": "campaign_metrics_records",
      "title": "Read the campaign-metrics projection into analysis-ready cells",
      "topics": [
        "campaign_metrics_records"
      ]
    },
    {
      "page": "campaign_metrics_summary",
      "title": "Summarize campaign metrics to funnel counts and rates by dimension",
      "topics": [
        "campaign_metrics_summary"
      ]
    },
    {
      "page": "disposition_funnel",
      "title": "Summarize the disposition dataset to funnel counts and rates by dimension",
      "topics": [
        "disposition_funnel"
      ]
    },
    {
      "page": "disposition_input_columns",
      "title": "List the export columns disposition_run() reads",
      "topics": [
        "disposition_input_columns"
      ]
    },
    {
      "page": "disposition_paths",
      "title": "Read the disposition dataset as one path per phone, and match sequence patterns",
      "topics": [
        "disposition_paths"
      ]
    },
    {
      "page": "disposition_pull",
      "title": "Download the disposition dataset from Cloud Storage",
      "topics": [
        "disposition_pull"
      ]
    },
    {
      "page": "disposition_records",
      "title": "Read the disposition records, one row per phone and campaign",
      "topics": [
        "disposition_records"
      ]
    },
    {
      "page": "disposition_run",
      "title": "Build the per-respondent disposition frame for one campaign",
      "topics": [
        "disposition_run"
      ]
    },
    {
      "page": "disposition_screen",
      "title": "Screen a sample against the disposition dataset",
      "topics": [
        "disposition_screen"
      ]
    },
    {
      "page": "disposition_steps",
      "title": "Read the disposition dataset as a sequence: one row per campaign, with history",
      "topics": [
        "disposition_steps"
      ]
    },
    {
      "page": "disposition_summary",
      "title": "Summarize the disposition dataset to one row per phone",
      "topics": [
        "disposition_summary"
      ]
    },
    {
      "page": "funnel_rates",
      "title": "Add the standard funnel rates to a counts frame",
      "topics": [
        "funnel_rates"
      ]
    },
    {
      "page": "latency_build_config",
      "title": "Build a latency config from a campaign export",
      "topics": [
        "latency_build_config"
      ]
    },
    {
      "page": "latency_config_hash",
      "title": "Hash a latency config",
      "topics": [
        "latency_config_hash"
      ]
    },
    {
      "page": "latency_discover_questions",
      "title": "Discover the question flow from export column names",
      "topics": [
        "latency_discover_questions"
      ]
    },
    {
      "page": "latency_funnel",
      "title": "Reduce a latency report to funnel counts",
      "topics": [
        "latency_funnel"
      ]
    },
    {
      "page": "latency_input_columns",
      "title": "List the export columns the latency report reads",
      "topics": [
        "latency_input_columns"
      ]
    },
    {
      "page": "latency_report",
      "title": "Compute a latency report for one campaign",
      "topics": [
        "latency_report"
      ]
    },
    {
      "page": "latency_run",
      "title": "Build the config and run the latency report for one campaign",
      "topics": [
        "latency_run"
      ]
    },
    {
      "page": "latency_validate_config",
      "title": "Validate a latency config against a campaign export",
      "topics": [
        "latency_validate_config"
      ]
    },
    {
      "page": "opt_out_pull",
      "title": "Download the opt-out list from Cloud Storage",
      "topics": [
        "opt_out_pull"
      ]
    },
    {
      "page": "opt_out_screen",
      "title": "Screen a sample against the opt-out list",
      "topics": [
        "opt_out_screen"
      ]
    },
    {
      "page": "parse_campaign_timestamps",
      "title": "Parse campaign-export timestamps",
      "topics": [
        "parse_campaign_timestamps"
      ]
    },
    {
      "page": "question_funnel",
      "title": "Count the recipients reaching each question of a campaign export",
      "topics": [
        "question_funnel"
      ]
    },
    {
      "page": "question_timestamps",
      "title": "Read one question's timestamps from a campaign export",
      "topics": [
        "question_timestamps"
      ]
    },
    {
      "page": "s160_api_auth",
      "title": "Authenticate to the Survey160 API",
      "topics": [
        "s160_api_auth"
      ]
    },
    {
      "page": "s160_api_campaign_get",
      "title": "Read one campaign's attributes from the Survey160 API",
      "topics": [
        "s160_api_campaign_get"
      ]
    },
    {
      "page": "s160_api_campaign_results",
      "title": "Trigger a fresh campaign export and read it",
      "topics": [
        "s160_api_campaign_results"
      ]
    },
    {
      "page": "s160_config",
      "title": "Read the Survey160 environment configuration",
      "topics": [
        "s160_config"
      ]
    },
    {
      "page": "s160_csv_header",
      "title": "Read the column names of a campaign export",
      "topics": [
        "s160_csv_header"
      ]
    },
    {
      "page": "s160_datasets",
      "title": "List the Survey160 datasets and their environments",
      "topics": [
        "s160_datasets"
      ]
    },
    {
      "page": "s160_gcs_campaign_results_files",
      "title": "List the files in a campaign's Cloud Storage folder",
      "topics": [
        "s160_gcs_campaign_results_files"
      ]
    },
    {
      "page": "s160_gcs_campaign_results_list",
      "title": "List the campaign ids in the campaign-results bucket",
      "topics": [
        "s160_gcs_campaign_results_list"
      ]
    },
    {
      "page": "s160_gcs_campaign_results_read",
      "title": "Read a campaign export from Cloud Storage",
      "topics": [
        "s160_gcs_campaign_results_read"
      ]
    },
    {
      "page": "s160_gcs_campaign_results_status",
      "title": "Check a campaign export's update time and size",
      "topics": [
        "s160_gcs_campaign_results_status"
      ]
    },
    {
      "page": "s160_gcs_init",
      "title": "Authenticate to Google Cloud Storage",
      "topics": [
        "s160_gcs_init"
      ]
    },
    {
      "page": "s160_read_csv",
      "title": "Read a campaign export from a local file",
      "topics": [
        "s160_read_csv"
      ]
    },
    {
      "page": "utils_fix_double_utf8",
      "title": "Detect or repair double-encoded UTF-8 in export text",
      "topics": [
        "utils_fix_double_utf8"
      ]
    }
  ],
  "_readme": "https://github.com/survey160/survey160r/raw/HEAD/README.md",
  "_rundeps": [
    "askpass",
    "assertthat",
    "cachem",
    "cli",
    "cpp11",
    "curl",
    "data.table",
    "digest",
    "dplyr",
    "fastmap",
    "fs",
    "gargle",
    "generics",
    "glue",
    "googleAuthR",
    "googleCloudStorageR",
    "httr",
    "jsonlite",
    "lifecycle",
    "lubridate",
    "magrittr",
    "memoise",
    "mime",
    "nanoparquet",
    "openssl",
    "pillar",
    "pkgconfig",
    "R6",
    "rappdirs",
    "rlang",
    "sys",
    "tibble",
    "tidyselect",
    "timechange",
    "utf8",
    "vctrs",
    "withr",
    "yaml",
    "zip"
  ],
  "_vignettes": [
    {
      "source": "campaign-metrics.Rmd",
      "filename": "campaign-metrics.html",
      "title": "Campaign metrics",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Summarize the funnel by dimension",
        "Summarize a slice",
        "Compute the rates on your own counts",
        "What you get back",
        "Notes",
        "See also"
      ],
      "created": "2026-10-15 13:42:24",
      "modified": "2026-10-26 11:23:16",
      "commits": 2
    },
    {
      "source": "disposition.Rmd",
      "filename": "disposition.html",
      "title": "Disposition screening",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Screen a sample",
        "Screen on contact history",
        "Look up specific numbers",
        "Screen several samples",
        "Roll up to funnel counts by dimension",
        "Follow numbers over time",
        "What you get back",
        "Stored record columns",
        "Notes",
        "See also"
      ],
      "created": "2026-08-13 15:28:15",
      "modified": "2026-10-27 16:05:47",
      "commits": 22
    },
    {
      "source": "latency.Rmd",
      "filename": "latency.html",
      "title": "Latency analysis",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Build a report",
        "Customize the config",
        "Run deterministically",
        "Reduce a report to funnel counts",
        "Count recipients reaching each question",
        "Run a large export",
        "What you get back",
        "Notes",
        "See also"
      ],
      "created": "2026-08-13 15:28:15",
      "modified": "2026-10-26 11:23:16",
      "commits": 10
    },
    {
      "source": "opt-out.Rmd",
      "filename": "opt-out.html",
      "title": "Opt-out screening",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Screen a sample",
        "Screen for opt-out and prior contact together",
        "What you get back",
        "Notes",
        "See also"
      ],
      "created": "2026-09-01 22:43:37",
      "modified": "2026-10-26 11:23:16",
      "commits": 6
    }
  ],
  "_score": 4.643452676486188,
  "_indexed": true,
  "_nocasepkg": "survey160r",
  "_universes": [
    "survey160"
  ],
  "_previous": "0.77.1",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.78.1",
      "date": "2026-10-27T20:22:53.000Z",
      "distro": "resolute",
      "commit": "36fc10d6af6a5194fbfd6ac22205aa0d2efc3d63",
      "fileid": "https://r2.ropensci.org/77d6788fbfbbb24a032ce0c39bb735bc190402759e29e2f35220364e559f0dd1",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/survey160/actions/runs/40576702648"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.78.1",
      "date": "2026-10-27T20:22:47.000Z",
      "distro": "resolute",
      "commit": "36fc10d6af6a5194fbfd6ac22205aa0d2efc3d63",
      "fileid": "https://r2.ropensci.org/dd054a95015c9dcf7c9e97c3370eb7c8352ab7e36ed84f17e830b3ca15e7ab1e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/survey160/actions/runs/40576702648"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.78.1",
      "date": "2026-10-27T20:59:16.000Z",
      "commit": "36fc10d6af6a5194fbfd6ac22205aa0d2efc3d63",
      "fileid": "https://r2.ropensci.org/c80b62805e240e8c8f48a9c54085b764bff3814f024fb70c31430842cfbcffb4",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/survey160/actions/runs/40576702648"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.78.1",
      "date": "2026-10-27T20:29:33.000Z",
      "commit": "36fc10d6af6a5194fbfd6ac22205aa0d2efc3d63",
      "fileid": "https://r2.ropensci.org/ead6bbe97476dea3312d1895c3f79bf13d18200025edaba2faed9d768b14244f",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/survey160/actions/runs/40576702648"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.78.1",
      "date": "2026-10-27T20:22:56.000Z",
      "commit": "36fc10d6af6a5194fbfd6ac22205aa0d2efc3d63",
      "fileid": "https://r2.ropensci.org/e6a0ca8e8ca24afcf405083479386638e2fbf02e3d083227b46d2151be663c48",
      "status": "success",
      "buildurl": "https://github.com/r-universe/survey160/actions/runs/40576702648"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.78.1",
      "date": "2026-10-27T20:21:52.000Z",
      "commit": "36fc10d6af6a5194fbfd6ac22205aa0d2efc3d63",
      "fileid": "https://r2.ropensci.org/94a562bfc251dbc205f4577aa8da061dd927656b29dcf122b01104207f2e03ea",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/survey160/actions/runs/40576702648"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.78.1",
      "date": "2026-10-27T20:22:18.000Z",
      "commit": "36fc10d6af6a5194fbfd6ac22205aa0d2efc3d63",
      "fileid": "https://r2.ropensci.org/f64d42b15061b03c976c0f165c28f52e7ccd0db529f0cce3840aeb63d4cb8c47",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/survey160/actions/runs/40576702648"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.78.1",
      "date": "2026-10-27T20:21:49.000Z",
      "commit": "36fc10d6af6a5194fbfd6ac22205aa0d2efc3d63",
      "fileid": "https://r2.ropensci.org/82f7462fd9e9977014185526d9c27f876a672fa58f6e1d999c9849bc5b3d8b98",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/survey160/actions/runs/40576702648"
    }
  ]
}