{
  "_id": "6adb0ca6343c88418cb727e6",
  "Package": "porcelain",
  "Title": "Turn a Package into an HTTP API",
  "Version": "0.1.16",
  "Authors@R": "c(person(\"Rich\", \"FitzJohn\", role = c(\"aut\", \"cre\"),\nemail = \"rich.fitzjohn@gmail.com\"),\nperson(\"Imperial College of Science, Technology and Medicine\",\nrole = \"cph\"))",
  "Description": "Wrapper around the plumber package to turn a package into\nan HTTP API. This adds some conventions that we find useful,\nsuch as some testing infrastructure and automatic validation of\nresponses against a json schema.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "Language": "en-GB",
  "URL": "https://github.com/reside-ic/porcelain",
  "BugReports": "https://github.com/reside-ic/porcelain/issues",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.1",
  "VignetteBuilder": "knitr",
  "Remotes": [
    "ropensci/jsonvalidate"
  ],
  "Config/testthat/edition": "3",
  "Config/pak/sysreqs": "make libicu-dev libsodium-dev libssl-dev\nlibnode-dev zlib1g-dev",
  "Repository": "https://vimc.r-universe.dev",
  "Date/Publication": "2025-05-09 09:48:18 UTC",
  "RemoteUrl": "https://github.com/reside-ic/porcelain",
  "RemoteRef": "master",
  "RemoteSha": "674b6c17216ecfdab024ff35e96fd564f437d50f",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-23 07:25:32 UTC",
    "User": "root"
  },
  "Author": "Rich FitzJohn [aut, cre],\nImperial College of Science, Technology and Medicine [cph]",
  "Maintainer": "Rich FitzJohn <rich.fitzjohn@gmail.com>",
  "_user": "vimc",
  "_type": "src",
  "_file": "porcelain_0.1.16.tar.gz",
  "_fileid": "https://r2.ropensci.org/3dd5698ce6b77fecde10cd7f6b14b010e53a02404bdd3ff5a86ce976cb30f67b",
  "_filesize": 200717,
  "_sha256": "3dd5698ce6b77fecde10cd7f6b14b010e53a02404bdd3ff5a86ce976cb30f67b",
  "_expires": "2027-01-31T07:28:37.000Z",
  "_created": "2026-10-23T07:25:32.000Z",
  "_published": "2026-10-23T07:28:38.886Z",
  "_upstream": "https://github.com/reside-ic/porcelain",
  "_status": "success",
  "_maintainer": {
    "name": "Rich FitzJohn",
    "email": "rich.fitzjohn@gmail.com",
    "login": "richfitz",
    "mastodon": "@richfitz@fosstodon.org",
    "description": "",
    "uuid": 1558093
  },
  "_jobs": [
    {
      "job": 120294957373,
      "time": 147,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "12485752070"
    },
    {
      "job": 120294957491,
      "time": 136,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "12486000959"
    },
    {
      "job": 120294957482,
      "time": 108,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "12485602645"
    },
    {
      "job": 120294957470,
      "time": 125,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "12486435518"
    },
    {
      "job": 120293544209,
      "time": 184,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12485174031"
    },
    {
      "job": 120294957571,
      "time": 99,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "12486595331"
    },
    {
      "job": 120294957497,
      "time": 87,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "12485308284"
    },
    {
      "job": 120294957458,
      "time": 93,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "12485398116"
    },
    {
      "job": 120294957560,
      "time": 77,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "12486840096"
    }
  ],
  "_buildurl": "https://github.com/r-universe/vimc/actions/runs/39917278950",
  "_commit": {
    "id": "674b6c17216ecfdab024ff35e96fd564f437d50f",
    "author": "Rich FitzJohn <r.fitzjohn@imperial.ac.uk>",
    "committer": "Rich FitzJohn <r.fitzjohn@imperial.ac.uk>",
    "message": "Bump version\n",
    "time": 1746784098
  },
  "_distro": "resolute",
  "_host": "GitHub-Actions",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 3.6.0",
      "role": "Depends"
    },
    {
      "package": "R6",
      "role": "Imports"
    },
    {
      "package": "V8",
      "role": "Imports"
    },
    {
      "package": "ids",
      "role": "Imports"
    },
    {
      "package": "jsonlite",
      "role": "Imports"
    },
    {
      "package": "jsonvalidate",
      "version": ">= 1.2.2",
      "role": "Imports"
    },
    {
      "package": "lgr",
      "role": "Imports"
    },
    {
      "package": "plumber",
      "role": "Imports"
    },
    {
      "package": "callr",
      "role": "Suggests"
    },
    {
      "package": "fs",
      "role": "Suggests"
    },
    {
      "package": "httr",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "mockery",
      "role": "Suggests"
    },
    {
      "package": "pkgload",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "roxygen2",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    }
  ],
  "_owner": "reside-ic",
  "_selfowned": false,
  "_usedby": 2,
  "_updates": [],
  "_tags": [],
  "_stars": 4,
  "_contributors": [
    {
      "user": "richfitz",
      "count": 254,
      "uuid": 1558093
    },
    {
      "user": "r-ash",
      "count": 83,
      "uuid": 39248272
    },
    {
      "user": "hillalex",
      "count": 7,
      "uuid": 6736820
    }
  ],
  "_userbio": {
    "uuid": 26278316,
    "type": "organization",
    "name": "Vaccine Impact Modelling Consortium",
    "followers": 14
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/porcelain"
  },
  "_devurl": "https://github.com/reside-ic/porcelain",
  "_searchresults": 1,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/porcelain.html",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_cranurl": false,
  "_exports": [
    "porcelain",
    "porcelain_add_headers",
    "porcelain_background",
    "porcelain_endpoint",
    "porcelain_input_body_binary",
    "porcelain_input_body_json",
    "porcelain_input_query",
    "porcelain_logger",
    "porcelain_package_endpoint",
    "porcelain_returning",
    "porcelain_returning_binary",
    "porcelain_returning_json",
    "porcelain_returning_text",
    "porcelain_roclet",
    "porcelain_state",
    "porcelain_stop"
  ],
  "_help": [
    {
      "page": "porcelain",
      "title": "A 'porcelain' object",
      "topics": [
        "porcelain"
      ]
    },
    {
      "page": "porcelain_add_headers",
      "title": "Add headers to endpoint output data",
      "topics": [
        "porcelain_add_headers"
      ]
    },
    {
      "page": "porcelain_background",
      "title": "While porcelain makes it easy to test endpoints individually, you may still want some integration or end-to-end tests where you bring the entire API up and interact with it from your tests. This class provides a helper for doing this in a way that is reasonably tidy.",
      "topics": [
        "porcelain_background"
      ]
    },
    {
      "page": "porcelain_endpoint",
      "title": "Basic endpoint object",
      "topics": [
        "porcelain_endpoint"
      ]
    },
    {
      "page": "porcelain_input_body",
      "title": "Control for body parameters",
      "topics": [
        "porcelain_input_body_binary",
        "porcelain_input_body_json"
      ]
    },
    {
      "page": "porcelain_input_query",
      "title": "Control for query parameters",
      "topics": [
        "porcelain_input_query"
      ]
    },
    {
      "page": "porcelain_logger",
      "title": "Create logger",
      "topics": [
        "porcelain_logger"
      ]
    },
    {
      "page": "porcelain_package_endpoint",
      "title": "Find roxygen-defined endpoint",
      "topics": [
        "porcelain_package_endpoint"
      ]
    },
    {
      "page": "porcelain_returning",
      "title": "Support for endpoint return types",
      "topics": [
        "porcelain_returning",
        "porcelain_returning_binary",
        "porcelain_returning_json",
        "porcelain_returning_text"
      ]
    },
    {
      "page": "porcelain_roclet",
      "title": "Define API using roxygen tags",
      "topics": [
        "porcelain_roclet"
      ]
    },
    {
      "page": "porcelain_state",
      "title": "Bind state into an endpoint",
      "topics": [
        "porcelain_state"
      ]
    },
    {
      "page": "porcelain_stop",
      "title": "Throw an error from an endpoint",
      "topics": [
        "porcelain_stop"
      ]
    }
  ],
  "_readme": "https://github.com/reside-ic/porcelain/raw/master/README.md",
  "_rundeps": [
    "askpass",
    "cli",
    "crayon",
    "curl",
    "fastmap",
    "httpuv",
    "ids",
    "jsonlite",
    "jsonvalidate",
    "later",
    "lgr",
    "lifecycle",
    "magrittr",
    "mime",
    "openssl",
    "otel",
    "plumber",
    "promises",
    "R6",
    "Rcpp",
    "rlang",
    "sodium",
    "stringi",
    "swagger",
    "sys",
    "uuid",
    "V8",
    "webutils"
  ],
  "_vignettes": [
    {
      "source": "cookbook.Rmd",
      "filename": "cookbook.html",
      "title": "cookbook",
      "engine": "knitr::rmarkdown",
      "headings": [
        "GET endpoint, inputs as query parameters, returning JSON",
        "GET endpoint, inputs as path and query parameters, returning JSON",
        "POST endpoint, inputs as JSON, returning JSON",
        "POST endpoint, inputs as binary, returning binary"
      ],
      "created": "2021-09-03 16:14:39",
      "modified": "2021-09-03 16:14:39",
      "commits": 1
    },
    {
      "source": "porcelain.Rmd",
      "filename": "porcelain.html",
      "title": "porcelain",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Motivation",
        "Introduction - a porcelain approach to adding-as-a-service"
      ],
      "created": "2021-09-03 16:14:39",
      "modified": "2021-09-03 16:14:39",
      "commits": 1
    },
    {
      "source": "roxygen.Rmd",
      "filename": "roxygen.html",
      "title": "roxygen",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Prerequisites",
        "Declaring a simple endpoint",
        "The basic syntax",
        "Adding inputs",
        "Binding state",
        "Testing",
        "An example"
      ],
      "created": "2021-11-12 17:04:20",
      "modified": "2021-11-12 17:04:20",
      "commits": 1
    }
  ],
  "_score": 4.857332496431269,
  "_indexed": false,
  "_nocasepkg": "porcelain",
  "_universes": [
    "vimc"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.1.16",
      "date": "2026-10-23T07:27:40.000Z",
      "distro": "resolute",
      "commit": "674b6c17216ecfdab024ff35e96fd564f437d50f",
      "fileid": "https://r2.ropensci.org/06bf85aa8c54c5487c084b432df6e594e4d9b5142990a261806e6063b333281c",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/vimc/actions/runs/39917278950"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.1.16",
      "date": "2026-10-23T07:27:37.000Z",
      "distro": "resolute",
      "commit": "674b6c17216ecfdab024ff35e96fd564f437d50f",
      "fileid": "https://r2.ropensci.org/3f7a53999c6ff0a4d732249090feff668e8a1f084cdadc6a932cf51319f3f2e8",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/vimc/actions/runs/39917278950"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.1.16",
      "date": "2026-10-23T07:27:10.000Z",
      "commit": "674b6c17216ecfdab024ff35e96fd564f437d50f",
      "fileid": "https://r2.ropensci.org/7ea865f525b93dcb322dd456abccdfba9e5e3a4a6e7cbb6d0ec5e94ef7b11909",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/vimc/actions/runs/39917278950"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.1.16",
      "date": "2026-10-23T07:27:29.000Z",
      "commit": "674b6c17216ecfdab024ff35e96fd564f437d50f",
      "fileid": "https://r2.ropensci.org/bb67cfe40aee12c5ce833df159477a40a4b3ee3396d6a5d53344dc8119566a32",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/vimc/actions/runs/39917278950"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.1.16",
      "date": "2026-10-23T07:27:27.000Z",
      "commit": "674b6c17216ecfdab024ff35e96fd564f437d50f",
      "fileid": "https://r2.ropensci.org/5144a93207b8778e6b9f4e874df6f75b7ef6042ff8f7682fc9c98c1fac866bcf",
      "status": "success",
      "buildurl": "https://github.com/r-universe/vimc/actions/runs/39917278950"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.1.16",
      "date": "2026-10-23T07:26:42.000Z",
      "commit": "674b6c17216ecfdab024ff35e96fd564f437d50f",
      "fileid": "https://r2.ropensci.org/e289c4c94a04ca7ba2d02b60df7b4d6ee24ce1737dd7466406f14200fa5dc058",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/vimc/actions/runs/39917278950"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.1.16",
      "date": "2026-10-23T07:26:43.000Z",
      "commit": "674b6c17216ecfdab024ff35e96fd564f437d50f",
      "fileid": "https://r2.ropensci.org/a7d1b80b10452c4de2d4a62b9d37931eb648649592c04f4613005fa43ae64070",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/vimc/actions/runs/39917278950"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.1.16",
      "date": "2026-10-23T07:26:37.000Z",
      "commit": "674b6c17216ecfdab024ff35e96fd564f437d50f",
      "fileid": "https://r2.ropensci.org/290fea41e49feffe1cdd18a56e9c0b1f1abce2505fea329d1d2f84b04f114131",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/vimc/actions/runs/39917278950"
    }
  ]
}