{
  "openapi": "3.1.0",
  "info": {
    "title": "Job Kanban Jobs API",
    "description": "Job Kanban is a free, lightweight job application tracker. Drag applications across Wishlist, Applied, Interviewing, Offer, and Rejected, keep notes per role, and see simple funnel analytics. No signup required. Cloud job CRUD requires an authenticated browser session (optional social sign-in). Guest mode uses localStorage and does not call this API.",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://jobkanban.com"
    }
  ],
  "paths": {
    "/api/health": {
      "get": {
        "summary": "Health check",
        "operationId": "getHealth",
        "responses": {
          "200": {
            "description": "Service is up",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "name": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs": {
      "get": {
        "summary": "List jobs for the signed-in user",
        "operationId": "listJobs",
        "responses": {
          "200": {
            "description": "Job list"
          },
          "401": {
            "description": "Not signed in"
          }
        }
      },
      "post": {
        "summary": "Create a job",
        "operationId": "createJob",
        "responses": {
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Invalid body"
          },
          "401": {
            "description": "Not signed in"
          }
        }
      }
    },
    "/api/jobs/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "patch": {
        "summary": "Update a job",
        "operationId": "updateJob",
        "responses": {
          "200": {
            "description": "Updated"
          },
          "401": {
            "description": "Not signed in"
          },
          "404": {
            "description": "Not found"
          }
        }
      },
      "delete": {
        "summary": "Delete a job",
        "operationId": "deleteJob",
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Not signed in"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/api/jobs/board": {
      "put": {
        "summary": "Replace the full board for the signed-in user",
        "operationId": "replaceBoard",
        "responses": {
          "200": {
            "description": "Board replaced"
          },
          "400": {
            "description": "Invalid body"
          },
          "401": {
            "description": "Not signed in"
          }
        }
      }
    },
    "/api/jobs/claim": {
      "post": {
        "summary": "Claim local guest jobs into the signed-in account",
        "operationId": "claimJobs",
        "responses": {
          "200": {
            "description": "Claimed"
          },
          "401": {
            "description": "Not signed in"
          }
        }
      }
    }
  }
}