{
  "id": "744f19d9521c",
  "url": "https://github.com/stickfigure/blog/wiki/How-to-%28and-how-not-to%29-design-REST-APIs",
  "title": "How to (and how not to) design REST APIs · stickfigure",
  "note": "Schnitzer with design suggestions for REST APIs. This is pretty straightforward, and I that it stays pretty simple and has a clear focus on usability. \n\n> 1. DO use plural nouns for collections\n> 2. DON'T add unnecessary path segments\n> 3. DON'T add .json or other extensions to the url\n> 4. DON'T return arrays as top level responses\n> 5. DON'T return map structures\n> 6. DO use strings for all identifiers\n> 7. DO prefix your identifiers\n> 8. DON'T use 404 to indicate \"not found\"\n> 9. BE consistent\n> 10. DO use a structured error format\n> 11. DO provide idempotence mechanisms\n\nOf all of them, I think 9 is one of the most important. ",
  "voice": "mixed",
  "saved": "2023-11-02T11:38:37Z",
  "host": "github.com",
  "kind": "repository",
  "tags": [],
  "record": "https://links.thingelstad.xyz/links/744f19d9521c/",
  "markdown": "https://links.thingelstad.xyz/links/744f19d9521c.md",
  "issues": [
    {
      "number": 268,
      "slug": "268",
      "title": "Weekly Thing 268 / Schema, Achtung, Gamification",
      "date": "2023-11-05T12:00:00Z",
      "section": "Notable",
      "position": 7,
      "url": "https://weekly.thingelstad.com/archive/268/",
      "page": "https://links.thingelstad.xyz/issues/268/"
    }
  ],
  "connections": {
    "same_host": {
      "count": 250,
      "page": "https://links.thingelstad.xyz/hosts/github.com/",
      "nearest": [
        {
          "id": "7d8eea3ee147",
          "title": "How GitHub Engineering communicates",
          "url": "https://github.com/github/how-engineering-communicates/blob/main/how-github-engineering-communicates.md",
          "record": "https://links.thingelstad.xyz/links/7d8eea3ee147/"
        },
        {
          "id": "089a85bdb994",
          "title": "pypipe: Python pipe command line tool",
          "url": "https://github.com/bugen/pypipe",
          "record": "https://links.thingelstad.xyz/links/089a85bdb994/"
        },
        {
          "id": "ef8eeffa68db",
          "title": "tailspin: 🌀 A log file highlighter",
          "url": "https://github.com/bensadeh/tailspin",
          "record": "https://links.thingelstad.xyz/links/ef8eeffa68db/"
        },
        {
          "id": "47d65d5baf4d",
          "title": "standard-webhooks",
          "url": "https://github.com/standard-webhooks/standard-webhooks/blob/main/spec/standard-webhooks.md",
          "record": "https://links.thingelstad.xyz/links/47d65d5baf4d/"
        },
        {
          "id": "2a5bdff70645",
          "title": "qsv: CSVs sliced, diced & analyzed.",
          "url": "https://github.com/jqnatividad/qsv",
          "record": "https://links.thingelstad.xyz/links/2a5bdff70645/"
        }
      ]
    },
    "same_week": {
      "count": 16,
      "nearest": [
        {
          "id": "acff027db2ce",
          "title": "Microsoft’s 2023 Diversity and Inclusion Report - The Official Microsoft Blog",
          "url": "https://blogs.microsoft.com/blog/2023/11/01/microsofts-2023-diversity-and-inclusion-report-a-decade-of-transparency-commitment-and-progress/",
          "record": "https://links.thingelstad.xyz/links/acff027db2ce/"
        },
        {
          "id": "921b12daa3cf",
          "title": "Rob Pike's 5 Rules of Programming",
          "url": "https://users.ece.utexas.edu/~adnan/pike.html",
          "record": "https://links.thingelstad.xyz/links/921b12daa3cf/"
        },
        {
          "id": "bf21b3d2eb61",
          "title": "How Bear does analytics with CSS | Herman's blog",
          "url": "https://herman.bearblog.dev/how-bear-does-analytics-with-css/",
          "record": "https://links.thingelstad.xyz/links/bf21b3d2eb61/"
        },
        {
          "id": "455a41ddb5f8",
          "title": "Life Lessons from the Death Bed – Isonomia Quarterly",
          "url": "https://isonomiaquarterly.com/archive/volume-1-issue-2/life-lessons-from-the-death-bed/",
          "record": "https://links.thingelstad.xyz/links/455a41ddb5f8/"
        },
        {
          "id": "c5995837a801",
          "title": "The Omni Show: GTD Focus President Meg Edwards Returns",
          "url": "https://www.omnigroup.com/blog/the-omni-show-gtd-focus-president-meg-edwards-returns",
          "record": "https://links.thingelstad.xyz/links/c5995837a801/"
        }
      ]
    },
    "mentions": [],
    "mentioned_by": [],
    "saved_twice": []
  },
  "elsewhere": {
    "wayback": "https://web.archive.org/web/*/https://github.com/stickfigure/blog/wiki/How-to-%28and-how-not-to%29-design-REST-APIs"
  }
}
