{
  "_id": "6a104a20acfb0bcc41c9f9e3",
  "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://mrc-ide.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-05-10 08:22:34 UTC",
    "User": "root"
  },
  "Author": "Rich FitzJohn [aut, cre],\nImperial College of Science, Technology and Medicine [cph]",
  "Maintainer": "Rich FitzJohn <rich.fitzjohn@gmail.com>",
  "MD5sum": "ab9b0898bce79e648648a6c55a4d602e",
  "_user": "mrc-ide",
  "_type": "src",
  "_file": "porcelain_0.1.16.tar.gz",
  "_fileid": "d9647adf15a1b95d64c4e191b07a841e6ceab70554ffe88f55799784450892d2",
  "_filesize": 203274,
  "_sha256": "d9647adf15a1b95d64c4e191b07a841e6ceab70554ffe88f55799784450892d2",
  "_created": "2026-05-10T08:22:34.000Z",
  "_published": "2026-05-22T12:20:48.566Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 77378171634,
      "time": 146,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "6902283513"
    },
    {
      "job": 77378171542,
      "time": 148,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "ERROR",
      "artifact": "6902283738"
    },
    {
      "job": 77378171576,
      "time": 101,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "6902339400"
    },
    {
      "job": 77378171432,
      "time": 93,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "ERROR",
      "artifact": "6902318796"
    },
    {
      "job": 77378171159,
      "time": 172,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6902269387"
    },
    {
      "job": 77378170786,
      "time": 106,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7160324777"
    },
    {
      "job": 77378171124,
      "time": 136,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "6902282720"
    },
    {
      "job": 77378171555,
      "time": 92,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "6902278405"
    },
    {
      "job": 77378171558,
      "time": 96,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "ERROR",
      "artifact": "6902278776"
    }
  ],
  "_buildurl": "https://github.com/r-universe/mrc-ide/actions/runs/25623882096",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/reside-ic/porcelain",
  "_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
  },
  "_maintainer": {
    "name": "Rich FitzJohn",
    "email": "rich.fitzjohn@gmail.com",
    "login": "richfitz",
    "mastodon": "@richfitz@fosstodon.org",
    "uuid": 1558093
  },
  "_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": [
    {
      "week": "2025-19",
      "n": 2
    }
  ],
  "_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": 25453642,
    "type": "organization",
    "name": "MRC Centre for Global Infectious Disease Analysis",
    "description": "MRC Centre hosted within the Department of Infectious Disease Epidemiology at Imperial College London"
  },
  "_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.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/porcelain.html",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_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": [
    "mrc-ide"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.1.16",
      "date": "2026-05-10T08:24:46.000Z",
      "distro": "noble",
      "commit": "674b6c17216ecfdab024ff35e96fd564f437d50f",
      "fileid": "f02ea4df7e1a5bc9952206cca328bec0eefdcde828ef56f6421e8d149d2bd2c1",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/mrc-ide/actions/runs/25623882096"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.1.16",
      "date": "2026-05-10T08:24:47.000Z",
      "distro": "noble",
      "commit": "674b6c17216ecfdab024ff35e96fd564f437d50f",
      "fileid": "1dc9efb74b84221ae3e850fbca1b7020b91cf26d15a6238f387189036fff2d65",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/mrc-ide/actions/runs/25623882096"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.1.16",
      "date": "2026-05-10T08:34:30.000Z",
      "commit": "674b6c17216ecfdab024ff35e96fd564f437d50f",
      "fileid": "ff092415b0106c055721b1b43563e8a437422d27d6f43bb0263660c500a74d42",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/mrc-ide/actions/runs/25623882096"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.1.16",
      "date": "2026-05-10T08:30:55.000Z",
      "commit": "674b6c17216ecfdab024ff35e96fd564f437d50f",
      "fileid": "46123e7a099a5ac2eec338b38c56e0f5019049618d8debce98390c913a25b30f",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/mrc-ide/actions/runs/25623882096"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.1.16",
      "date": "2026-05-10T08:24:29.000Z",
      "commit": "674b6c17216ecfdab024ff35e96fd564f437d50f",
      "fileid": "4f356a32f7c1fdee351e553bd01226d85b0b0f6fd912cd20b55ebde10c888895",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/mrc-ide/actions/runs/25623882096"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.1.16",
      "date": "2026-05-10T08:23:39.000Z",
      "commit": "674b6c17216ecfdab024ff35e96fd564f437d50f",
      "fileid": "781024271e6def51800c371f84cd736cad1a31cd58744d95415e54002e6d1e3d",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/mrc-ide/actions/runs/25623882096"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.1.16",
      "date": "2026-05-10T08:23:49.000Z",
      "commit": "674b6c17216ecfdab024ff35e96fd564f437d50f",
      "fileid": "3799d3908a8409fab3a212ebad2915b9bf36353421e9eb22589b13044d9b2af0",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/mrc-ide/actions/runs/25623882096"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.1.16",
      "date": "2026-05-22T12:20:32.000Z",
      "commit": "674b6c17216ecfdab024ff35e96fd564f437d50f",
      "fileid": "87e48d53c4b87895a15afc87724b3c580d5f5060b85fb17e954f4d8f97f1847e",
      "status": "success",
      "buildurl": "https://github.com/r-universe/mrc-ide/actions/runs/25623882096"
    }
  ]
}