{
  "_id": "6ae2866195ca2370cc8ccd2e",
  "Package": "gargle",
  "Title": "Utilities for Working with Google APIs",
  "Version": "1.7.0",
  "Authors@R": "c(\nperson(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0000-0002-6983-2759\")),\nperson(\"Craig\", \"Citro\", , \"craigcitro@google.com\", role = \"aut\"),\nperson(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\",\ncomment = c(ORCID = \"0000-0003-4757-117X\")),\nperson(\"Google Inc\", role = \"cph\"),\nperson(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"),\ncomment = c(ROR = \"03wc8by49\"))\n)",
  "Description": "Provides utilities for working with Google APIs\n<https://developers.google.com/apis-explorer>.  This includes\nfunctions and classes for handling common credential types and\nfor preparing, executing, and processing HTTP requests.",
  "License": "MIT + file LICENSE",
  "URL": "https://gargle.r-lib.org, https://github.com/r-lib/gargle",
  "BugReports": "https://github.com/r-lib/gargle/issues",
  "VignetteBuilder": "knitr",
  "Config/Needs/website": "tidyverse/tidytemplate",
  "Config/roxygen2/version": "8.1.0",
  "Config/testthat/edition": "3",
  "Config/usethis/last-upkeep": "2026-10-20",
  "Encoding": "UTF-8",
  "Language": "en-US",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-28 23:30:00 UTC",
    "User": "root"
  },
  "Author": "Jennifer Bryan [aut, cre] (ORCID:\n<https://orcid.org/0000-0002-6983-2759>), Craig Citro [aut],\nHadley Wickham [aut] (ORCID:\n<https://orcid.org/0000-0003-4757-117X>), Google Inc [cph],\nPosit Software, PBC [cph, fnd] (ROR:\n<https://ror.org/03wc8by49>)",
  "Maintainer": "Jennifer Bryan <jenny@posit.co>",
  "Repository": "https://cran.r-universe.dev",
  "Date/Publication": "2026-10-28 21:42:51 UTC",
  "RemoteUrl": "https://github.com/cran/gargle",
  "RemoteRef": "HEAD",
  "RemoteSha": "c4a01d9d18cfd02d6cdbc084d958d7a2eaaff7c0",
  "_user": "cran",
  "_type": "src",
  "_file": "gargle_1.7.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/47eeaee3c133893d3f01a261b8a654216afb51067b11a0e999e15ec8891342fc",
  "_filesize": 860182,
  "_sha256": "47eeaee3c133893d3f01a261b8a654216afb51067b11a0e999e15ec8891342fc",
  "_expires": "2027-02-05T23:33:49.000Z",
  "_created": "2026-10-28T23:30:00.000Z",
  "_published": "2026-10-28T23:33:52.858Z",
  "_upstream": "https://github.com/cran/gargle",
  "_status": "success",
  "_maintainer": {
    "name": "Jennifer Bryan",
    "email": "jenny@posit.co",
    "login": "jennybc",
    "mastodon": "@jennybryan@fosstodon.org",
    "bluesky": "@jennybryan.bsky.social",
    "twitter": "@jennybryan",
    "description": "Software engineer @posit-dev, humane #rstats",
    "uuid": 599454,
    "orcid": "0000-0002-6983-2759"
  },
  "_jobs": [
    {
      "job": 123165374743,
      "time": 134,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12859414324"
    },
    {
      "job": 123165374873,
      "time": 185,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12860825292"
    },
    {
      "job": 123164146537,
      "time": 190,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12860421285"
    },
    {
      "job": 123165374783,
      "time": 100,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "12859768359"
    },
    {
      "job": 123165374813,
      "time": 105,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12860810016"
    },
    {
      "job": 123165374883,
      "time": 99,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12859594700"
    }
  ],
  "_buildurl": "https://github.com/r-universe/cran/actions/runs/40787425619",
  "_commit": {
    "id": "c4a01d9d18cfd02d6cdbc084d958d7a2eaaff7c0",
    "author": "Jennifer Bryan <jenny@posit.co>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 1.7.0\n",
    "time": 1793223771
  },
  "_distro": "resolute",
  "_host": "GitHub-Actions",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.2",
      "role": "Depends"
    },
    {
      "package": "cli",
      "version": ">= 3.0.1",
      "role": "Imports"
    },
    {
      "package": "fs",
      "version": ">= 1.3.1",
      "role": "Imports"
    },
    {
      "package": "glue",
      "version": ">= 1.3.0",
      "role": "Imports"
    },
    {
      "package": "httr",
      "version": ">= 1.4.5",
      "role": "Imports"
    },
    {
      "package": "jsonlite",
      "role": "Imports"
    },
    {
      "package": "lifecycle",
      "role": "Imports"
    },
    {
      "package": "openssl",
      "role": "Imports"
    },
    {
      "package": "R6",
      "role": "Imports"
    },
    {
      "package": "rappdirs",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "version": ">= 1.1.0",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "withr",
      "role": "Imports"
    },
    {
      "package": "aws.ec2metadata",
      "role": "Suggests"
    },
    {
      "package": "aws.signature",
      "role": "Suggests"
    },
    {
      "package": "covr",
      "role": "Suggests"
    },
    {
      "package": "httpuv",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "spelling",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.1.7",
      "role": "Suggests"
    }
  ],
  "_owner": "cran",
  "_selfowned": false,
  "_usedby": 193,
  "_updates": [
    {
      "week": "2026-05",
      "n": 1
    },
    {
      "week": "2026-44",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "1.6.1",
      "date": "2026-01-29"
    },
    {
      "name": "1.7.0",
      "date": "2026-10-28"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "jennybc",
      "count": 18,
      "uuid": 599454
    }
  ],
  "_userbio": {
    "uuid": 6899542,
    "type": "organization",
    "name": "cran",
    "followers": 634,
    "description": "Unofficial read-only mirror of all CRAN R packages"
  },
  "_downloads": {
    "count": 450919,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/gargle"
  },
  "_devurl": "https://github.com/r-lib/gargle",
  "_pkgdown": "https://gargle.r-lib.org",
  "_searchresults": 643,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/gargle.html",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_homeurl": "https://github.com/r-lib/gargle",
  "_realowner": "r-lib",
  "_cranurl": false,
  "_releases": [
    {
      "version": "0.1.3",
      "date": "2019-06-03"
    },
    {
      "version": "0.2.0",
      "date": "2019-06-11"
    },
    {
      "version": "0.3.0",
      "date": "2019-06-27"
    },
    {
      "version": "0.3.1",
      "date": "2019-07-26"
    },
    {
      "version": "0.4.0",
      "date": "2019-10-04"
    },
    {
      "version": "0.5.0",
      "date": "2020-05-06"
    },
    {
      "version": "1.0.0",
      "date": "2021-03-03"
    },
    {
      "version": "1.1.0",
      "date": "2021-04-02"
    },
    {
      "version": "1.2.0",
      "date": "2021-07-02"
    },
    {
      "version": "1.2.1",
      "date": "2022-09-08"
    },
    {
      "version": "1.3.0",
      "date": "2023-01-30"
    },
    {
      "version": "1.4.0",
      "date": "2023-04-15"
    },
    {
      "version": "1.5.0",
      "date": "2023-06-10"
    },
    {
      "version": "1.5.1",
      "date": "2023-06-19"
    },
    {
      "version": "1.5.2",
      "date": "2023-07-20"
    },
    {
      "version": "1.6.0",
      "date": "2025-09-03"
    },
    {
      "version": "1.6.1",
      "date": "2026-01-29"
    },
    {
      "version": "1.7.0",
      "date": "2026-10-28"
    }
  ],
  "_exports": [
    "AuthState",
    "bulletize",
    "check_is_service_account",
    "cred_funs_add",
    "cred_funs_clear",
    "cred_funs_list",
    "cred_funs_list_default",
    "cred_funs_set",
    "cred_funs_set_default",
    "credentials_app_default",
    "credentials_byo_oauth2",
    "credentials_external_account",
    "credentials_gce",
    "credentials_service_account",
    "credentials_user_oauth2",
    "field_mask",
    "gargle_api_key",
    "gargle_app",
    "gargle_client",
    "gargle_error_message",
    "gargle_last_content",
    "gargle_last_response",
    "gargle_map_cli",
    "gargle_oauth_cache",
    "gargle_oauth_client",
    "gargle_oauth_client_from_json",
    "gargle_oauth_client_type",
    "gargle_oauth_email",
    "gargle_oauth_sitrep",
    "gargle_oob_default",
    "gargle_verbosity",
    "Gargle2.0",
    "gargle2.0_token",
    "gce_access_token",
    "gce_instance_service_accounts",
    "GceToken",
    "init_AuthState",
    "local_cred_funs",
    "local_gargle_verbosity",
    "oauth_app_from_json",
    "oauth_external_token",
    "request_build",
    "request_develop",
    "request_make",
    "request_retry",
    "response_as_json",
    "response_process",
    "secret_decrypt_json",
    "secret_encrypt_json",
    "secret_has_key",
    "secret_make_key",
    "secret_read_rds",
    "secret_write_rds",
    "tidyverse_api_key",
    "tidyverse_app",
    "tidyverse_client",
    "token_email",
    "token_fetch",
    "token_tokeninfo",
    "token_userinfo",
    "WifToken",
    "with_cred_funs",
    "with_gargle_verbosity"
  ],
  "_help": [
    {
      "page": "AuthState-class",
      "title": "Authorization state",
      "topics": [
        "AuthState",
        "AuthState-class"
      ]
    },
    {
      "page": "cred_funs",
      "title": "Credential function registry",
      "topics": [
        "cred_funs",
        "cred_funs_add",
        "cred_funs_clear",
        "cred_funs_list",
        "cred_funs_list_default",
        "cred_funs_set",
        "cred_funs_set_default",
        "local_cred_funs",
        "with_cred_funs"
      ]
    },
    {
      "page": "credentials_app_default",
      "title": "Load Application Default Credentials",
      "concept": [
        "credential functions"
      ],
      "topics": [
        "credentials_app_default"
      ]
    },
    {
      "page": "credentials_byo_oauth2",
      "title": "Load a user-provided token",
      "concept": [
        "credential functions"
      ],
      "topics": [
        "credentials_byo_oauth2"
      ]
    },
    {
      "page": "credentials_external_account",
      "title": "Get a token for an external account",
      "concept": [
        "credential functions"
      ],
      "topics": [
        "credentials_external_account"
      ]
    },
    {
      "page": "credentials_gce",
      "title": "Get a token from the Google metadata server",
      "concept": [
        "credential functions"
      ],
      "topics": [
        "credentials_gce"
      ]
    },
    {
      "page": "credentials_service_account",
      "title": "Load a service account token",
      "concept": [
        "credential functions"
      ],
      "topics": [
        "credentials_service_account"
      ]
    },
    {
      "page": "credentials_user_oauth2",
      "title": "Get an OAuth token for a user",
      "concept": [
        "credential functions"
      ],
      "topics": [
        "credentials_user_oauth2"
      ]
    },
    {
      "page": "field_mask",
      "title": "Generate a field mask",
      "topics": [
        "field_mask"
      ]
    },
    {
      "page": "gargle_oauth_client_from_json",
      "title": "Create an OAuth client for Google",
      "topics": [
        "gargle_oauth_client",
        "gargle_oauth_client_from_json"
      ]
    },
    {
      "page": "gargle_oauth_sitrep",
      "title": "OAuth token situation report",
      "topics": [
        "gargle_oauth_sitrep"
      ]
    },
    {
      "page": "gargle_options",
      "title": "Options consulted by gargle",
      "topics": [
        "gargle_oauth_cache",
        "gargle_oauth_client_type",
        "gargle_oauth_email",
        "gargle_oob_default",
        "gargle_options",
        "gargle_verbosity",
        "local_gargle_verbosity",
        "with_gargle_verbosity"
      ]
    },
    {
      "page": "gargle_secret",
      "title": "Encrypt/decrypt JSON or an R object",
      "topics": [
        "gargle_secret",
        "secret_decrypt_json",
        "secret_encrypt_json",
        "secret_has_key",
        "secret_make_key",
        "secret_read_rds",
        "secret_write_rds"
      ]
    },
    {
      "page": "gargle2.0_token",
      "title": "Generate a gargle token",
      "topics": [
        "gargle2.0_token"
      ]
    },
    {
      "page": "gce_instance_service_accounts",
      "title": "List all service accounts available on this GCE instance",
      "topics": [
        "gce_instance_service_accounts"
      ]
    },
    {
      "page": "init_AuthState",
      "title": "Create an AuthState",
      "topics": [
        "init_AuthState"
      ]
    },
    {
      "page": "request_develop",
      "title": "Build a Google API request",
      "concept": [
        "requests and responses"
      ],
      "topics": [
        "request_build",
        "request_develop"
      ]
    },
    {
      "page": "request_make",
      "title": "Make a Google API request",
      "concept": [
        "requests and responses"
      ],
      "topics": [
        "request_make"
      ]
    },
    {
      "page": "request_retry",
      "title": "Make a Google API request, repeatedly",
      "topics": [
        "request_retry"
      ]
    },
    {
      "page": "response_process",
      "title": "Process a Google API response",
      "concept": [
        "requests and responses"
      ],
      "topics": [
        "gargle_error_message",
        "response_as_json",
        "response_process"
      ]
    },
    {
      "page": "token_fetch",
      "title": "Fetch a token for the given scopes",
      "concept": [
        "credential functions"
      ],
      "topics": [
        "token_fetch"
      ]
    },
    {
      "page": "token-info",
      "title": "Get info from a token",
      "topics": [
        "token-info",
        "token_email",
        "token_tokeninfo",
        "token_userinfo"
      ]
    }
  ],
  "_readme": "https://github.com/cran/gargle/raw/HEAD/README.md",
  "_rundeps": [
    "askpass",
    "cli",
    "curl",
    "fs",
    "glue",
    "httr",
    "jsonlite",
    "lifecycle",
    "mime",
    "openssl",
    "R6",
    "rappdirs",
    "rlang",
    "sys",
    "withr"
  ],
  "_vignettes": [
    {
      "source": "auth-from-web.Rmd",
      "filename": "auth-from-web.html",
      "title": "Auth when using R from the browser",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Consider using a service account token (or no token!)",
        "When and how to use OOB",
        "Request OOB auth in the PKG_auth() call",
        "Set the \"gargle_oob_default\" option",
        "Conventional vs. pseudo-OOB auth",
        "How pseudo-OOB works",
        "More details about the deprecation of conventional OOB",
        "But I didn't need OOB yesterday!",
        "Further reading"
      ],
      "created": "2019-10-04 04:40:05",
      "modified": "2026-10-28 21:42:51",
      "commits": 12
    },
    {
      "source": "how-gargle-gets-tokens.Rmd",
      "filename": "how-gargle-gets-tokens.html",
      "title": "How gargle gets tokens",
      "engine": "knitr::rmarkdown",
      "headings": [
        "token_fetch()",
        "Get verbose output",
        "credentials_byo_oauth2()",
        "credentials_service_account()",
        "credentials_external_account()",
        "credentials_app_default()",
        "credentials_gce()",
        "credentials_user_oauth2()",
        "Manipulate the credential function registry"
      ],
      "created": "2019-06-03 12:10:16",
      "modified": "2026-10-28 21:42:51",
      "commits": 12
    },
    {
      "source": "get-api-credentials.Rmd",
      "filename": "get-api-credentials.html",
      "title": "How to get your own API credentials",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Get a Google Cloud Platform project",
        "Enable API(s)",
        "Think about billing",
        "API Key",
        "What does a user do with an API key?",
        "OAuth client ID and secret",
        "What does a user do with an OAuth client?",
        "Service account token",
        "What does a user do with a service account token?",
        "Workload identity federation",
        "Further reading"
      ],
      "created": "2019-06-11 20:20:03",
      "modified": "2026-10-28 21:42:51",
      "commits": 12
    },
    {
      "source": "gargle-auth-in-client-package.Rmd",
      "filename": "gargle-auth-in-client-package.html",
      "title": "How to use gargle for auth in a client package",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Key choices",
        "User-facing auth",
        "Auth state",
        "OAuth client",
        "API key",
        "Email or Google identity",
        "Scopes",
        "OAuth cache and Out-of-band auth",
        "Overview of mechanics",
        "Getting that first token",
        "Auth interface",
        "De-auth",
        "Bring Your Own Client and Key",
        "Changing identities (and more)"
      ],
      "created": "2019-06-03 12:10:16",
      "modified": "2026-01-29 06:10:33",
      "commits": 13
    },
    {
      "source": "non-interactive-auth.Rmd",
      "filename": "non-interactive-auth.html",
      "title": "Non-interactive auth",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Provide a token or pre-authorize token discovery",
        "Sidebar 1: Deployment",
        "Sidebar 2: I just want my .Rmd to render",
        "Embrace credentials available in certain cloud settings",
        "Google Compute Engine",
        "Workload Identity on Google Kubernetes Engine (GKE)",
        "Workload identity federation (AWS, GitHub Actions)",
        "Provide a service account token directly",
        "Rig a service or external account for use with Application Default Credentials",
        "Provide an OAuth token directly",
        "Arrange for an OAuth user token to be re-discovered",
        "I just want my .Rmd to render",
        "Project-level OAuth cache",
        "OAuth client type: where the token is obtained vs. where it's used"
      ],
      "created": "2019-07-26 18:40:02",
      "modified": "2026-10-28 21:42:51",
      "commits": 13
    },
    {
      "source": "request-helper-functions.Rmd",
      "filename": "request-helper-functions.html",
      "title": "Request helper functions",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Why use gargle's request helpers?",
        "High-level design pattern",
        "gargle's HTTP request helpers",
        "Discovery Documents",
        "Method (or endpoint) data",
        "Design suggestion: forming requests",
        "Design suggestion: making requests",
        "Reference"
      ],
      "created": "2019-06-03 12:10:16",
      "modified": "2026-10-28 21:42:51",
      "commits": 4
    },
    {
      "source": "oauth-client-not-app.Rmd",
      "filename": "oauth-client-not-app.html",
      "title": "Transition from OAuth app to OAuth client",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Background",
        "Checklist for wrapper packages",
        "Create OAuth clients with gargle",
        "Use the client interfaces of AuthState",
        "Pass client to gargle's token functions",
        "Finish the user-facing functions",
        "Re-document with current gargle",
        "What's next in gargle"
      ],
      "created": "2023-06-10 20:40:02",
      "modified": "2026-10-28 21:42:51",
      "commits": 3
    },
    {
      "source": "troubleshooting.Rmd",
      "filename": "troubleshooting.html",
      "title": "Troubleshooting gargle auth",
      "engine": "knitr::rmarkdown",
      "headings": [
        "\"gargle_verbosity\" option",
        "gargle_oauth_sitrep()",
        "Why do good tokens go bad?",
        "Too many tokens",
        "Credential rolling",
        "How to avoid auth pain",
        "How to inspect the last response"
      ],
      "created": "2020-05-06 05:30:17",
      "modified": "2026-10-28 21:42:51",
      "commits": 8
    }
  ],
  "_score": 11.128078058842185,
  "_indexed": false,
  "_nocasepkg": "gargle",
  "_universes": [
    "cran"
  ],
  "_indexurl": "https://r-lib.r-universe.dev/gargle",
  "_previous": "1.6.1",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.7.0",
      "date": "2026-10-28T23:32:12.000Z",
      "distro": "resolute",
      "commit": "c4a01d9d18cfd02d6cdbc084d958d7a2eaaff7c0",
      "fileid": "https://r2.ropensci.org/5a5d7e9d78b8fc9dc5667e41ee5a5aab72e5b459ad373fbf096bc1e920960794",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/40787425619"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "1.7.0",
      "date": "2026-10-28T23:32:56.000Z",
      "distro": "resolute",
      "commit": "c4a01d9d18cfd02d6cdbc084d958d7a2eaaff7c0",
      "fileid": "https://r2.ropensci.org/c36e67d3586a380338bcc7c9935fb7c9db4382c358a513a2da48ea545a57bc28",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/40787425619"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.7.0",
      "date": "2026-10-28T23:32:03.000Z",
      "commit": "c4a01d9d18cfd02d6cdbc084d958d7a2eaaff7c0",
      "fileid": "https://r2.ropensci.org/c2cf77e13e23e8357e48ba8479ed26c04d45d3e260ccdbf40ab91b2890ac44b8",
      "status": "success",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/40787425619"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.7.0",
      "date": "2026-10-28T23:31:19.000Z",
      "commit": "c4a01d9d18cfd02d6cdbc084d958d7a2eaaff7c0",
      "fileid": "https://r2.ropensci.org/034b37d62af491e7c97401923292e343579d958904a7eca71f3f1894c218e14c",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/40787425619"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "1.7.0",
      "date": "2026-10-28T23:31:16.000Z",
      "commit": "c4a01d9d18cfd02d6cdbc084d958d7a2eaaff7c0",
      "fileid": "https://r2.ropensci.org/c41119f5c41395fe10511c1af031d0d5803482d94477edeb77d421a517080660",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/40787425619"
    }
  ]
}