# cms-edit create person-from-json — Batch Author Import

`create person-from-json` creates multiple `person` entries from a single JSON file. Use it for spreadsheet-to-CMS author imports and team directory bootstraps.

```bash
cms-edit create person-from-json --json '{...}' --dry-run
cms-edit create person-from-json --json '{...}' --if-not-exists
```

All entries are created as **drafts**. Nothing is published automatically.

**Not transactional:** If the command fails partway through, entries created earlier remain in the space. Re-run with `--if-not-exists` to continue idempotently.

---

## JSON schema

```jsonc
{
  "persons": [
    {
      "slug": "jane-smith",
      "name": "Jane Smith",
      "jobTitle": "Chief Medical Officer",
      "description": "Short card blurb",
      "emailAddress": "jane@example.com",
      "phoneNumber": "+1 555 0100",
      "bioMarkdown": "## Bio\n\nMarkdown converted to Rich Text.",
      "fields": {
        "location": "Boston"
      }
    }
  ]
}
```

| Key | Required | Description |
|---|---|---|
| `slug` | Yes | URL slug |
| `name` | Yes | Display name |
| `cmsLabel` | No | CMS label (defaults to `name`) |
| `jobTitle` | No | Job title (CLI flags override JSON `fields` on single-entry create) |
| `description` | No | Short description |
| `emailAddress` | No | Email |
| `phoneNumber` | No | Phone |
| `bioMarkdown` | No | Bio as Markdown (converted to Rich Text `bio` field) |
| `fields` | No | Additional Contentful field values |

You can also pass a full Rich Text document on `bio` inside `fields` instead of `bioMarkdown`.

---

## Single-entry alternative

```bash
cms-edit create person --slug jane-smith --name "Jane Smith" --job-title "CMO" --bio-file bio.md
cms-edit create person --slug jane-smith --name "Jane Smith" --if-not-exists
```

---

## Link authors to articles

After import, link person IDs to articles in a session:

```bash
cms-edit open --article-slug blog/my-post
cms-edit set @p0 authors <personId1>,<personId2> --links
cms-edit diff && cms-edit save
```

Or batch-link in a `cms-edit batch run` ops file.

---

## Related commands

| Command | Purpose |
|---|---|
| `cms-edit create person` | Create one person |
| `cms-edit create person … --if-not-exists` | Idempotent single create |
| `cms-edit help fields` | Field overview |