ish · Schema

PublicPersonCreateRequest

A person to create in this workspace. Only `name` is required. Everything else is what you know about them; `bio` is the highest-leverage field by a distance, because it is the bulk of what the model is told when a session runs.

Artificial IntelligenceSimulationResearchDesignPlatform

Properties

Name Type Description
accessibility_profile object Declared accessibility needs. Validated on the way IN (an unrecognized key is a 422) while the read tolerates keys it does not know: strict where a typo would silently do nothing, lenient where a new
bio object Free-text background written in the person's own register. This is the bulk of what the model is told about them when a session runs, so it carries more of the simulation than every demographic field
city object
country object ISO 3166-1 alpha-2 code, normalized uppercase.
date_of_birth object
education_level object
employment_status object
external_id object Your own identifier for this person. Unique among the people this workspace owns, so you can address the row by the id your system already holds: `GET .../people?external_id=...`. Reusing one that is
gender object
household object
income_level object
interests object IAB Content Taxonomy node ids. Every id is checked against the taxonomy: an unknown one is a `422`, never a tag that silently matches nothing later.
locale_type object
name string The person's display name.
occupation object Free-text job title. ish resolves it to a canonical `occupation_code` where it can, which is what makes occupational family filters work on people you created.
View JSON Schema on GitHub

JSON Schema

ishlabs-io-public-person-create-request-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/ishlabs-io/json-schema/ishlabs-io-public-person-create-request-schema.json",
  "title": "PublicPersonCreateRequest",
  "description": "A person to create in this workspace.\n\nOnly `name` is required. Everything else is what you know about them;\n`bio` is the highest-leverage field by a distance, because it is the bulk\nof what the model is told when a session runs.",
  "x-generated": "2026-11-13",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/ishlabs-io-openapi.json#/components/schemas/PublicPersonCreateRequest",
  "additionalProperties": false,
  "properties": {
    "accessibility_profile": {
      "anyOf": [
        {
          "$ref": "#/$defs/AccessibilityProfileSchema"
        },
        {
          "type": "null"
        }
      ],
      "description": "Declared accessibility needs. Validated on the way IN (an unrecognized key is a 422) while the read tolerates keys it does not know: strict where a typo would silently do nothing, lenient where a new key must not break an old client."
    },
    "bio": {
      "anyOf": [
        {
          "maxLength": 8000,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Free-text background written in the person's own register. This is the bulk of what the model is told about them when a session runs, so it carries more of the simulation than every demographic field combined.",
      "title": "Bio"
    },
    "city": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "City"
    },
    "country": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "ISO 3166-1 alpha-2 code, normalized uppercase.",
      "title": "Country"
    },
    "date_of_birth": {
      "anyOf": [
        {
          "format": "date",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Date Of Birth"
    },
    "education_level": {
      "anyOf": [
        {
          "$ref": "#/$defs/EducationLevel"
        },
        {
          "type": "null"
        }
      ]
    },
    "employment_status": {
      "anyOf": [
        {
          "$ref": "#/$defs/EmploymentStatus"
        },
        {
          "type": "null"
        }
      ]
    },
    "external_id": {
      "anyOf": [
        {
          "maxLength": 255,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Your own identifier for this person. Unique among the people this workspace owns, so you can address the row by the id your system already holds: `GET .../people?external_id=...`. Reusing one that is taken is a `409`.",
      "title": "External Id"
    },
    "gender": {
      "anyOf": [
        {
          "$ref": "#/$defs/Gender"
        },
        {
          "type": "null"
        }
      ]
    },
    "household": {
      "anyOf": [
        {
          "$ref": "#/$defs/Household"
        },
        {
          "type": "null"
        }
      ]
    },
    "income_level": {
      "anyOf": [
        {
          "$ref": "#/$defs/IncomeLevel"
        },
        {
          "type": "null"
        }
      ]
    },
    "interests": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "description": "IAB Content Taxonomy node ids. Every id is checked against the taxonomy: an unknown one is a `422`, never a tag that silently matches nothing later.",
      "title": "Interests"
    },
    "locale_type": {
      "anyOf": [
        {
          "$ref": "#/$defs/LocaleType"
        },
        {
          "type": "null"
        }
      ]
    },
    "name": {
      "description": "The person's display name.",
      "maxLength": 255,
      "minLength": 1,
      "title": "Name",
      "type": "string"
    },
    "occupation": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Free-text job title. ish resolves it to a canonical `occupation_code` where it can, which is what makes occupational family filters work on people you created.",
      "title": "Occupation"
    }
  },
  "required": [
    "name"
  ],
  "type": "object",
  "$defs": {
    "AccessibilityAuditory": {
      "additionalProperties": false,
      "description": "Auditory preferences, such as whether captions are expected.",
      "properties": {
        "audio_descriptions_required": {
          "default": false,
          "title": "Audio Descriptions Required",
          "type": "boolean"
        },
        "captions_required": {
          "default": false,
          "title": "Captions Required",
          "type": "boolean"
        },
        "mono_audio": {
          "default": false,
          "title": "Mono Audio",
          "type": "boolean"
        },
        "uses_hearing_aid": {
          "default": false,
          "title": "Uses Hearing Aid",
          "type": "boolean"
        },
        "visual_alerts_required": {
          "default": false,
          "title": "Visual Alerts Required",
          "type": "boolean"
        }
      },
      "title": "AccessibilityAuditory",
      "type": "object"
    },
    "AccessibilityCognitive": {
      "additionalProperties": false,
      "description": "Cognitive preferences, such as reduced motion and plain language.",
      "properties": {
        "avoid_flashing": {
          "default": false,
          "title": "Avoid Flashing",
          "type": "boolean"
        },
        "extra_reading_time": {
          "default": false,
          "title": "Extra Reading Time",
          "type": "boolean"
        },
        "predictable_navigation": {
          "default": false,
          "title": "Predictable Navigation",
          "type": "boolean"
        },
        "reduce_motion": {
          "default": false,
          "title": "Reduce Motion",
          "type": "boolean"
        },
        "simple_language_preferred": {
          "default": false,
          "title": "Simple Language Preferred",
          "type": "boolean"
        }
      },
      "title": "AccessibilityCognitive",
      "type": "object"
    },
    "AccessibilityData": {
      "additionalProperties": false,
      "description": "Data preferences, such as a metered or low-bandwidth connection.",
      "properties": {
        "reduce_data": {
          "default": false,
          "title": "Reduce Data",
          "type": "boolean"
        }
      },
      "title": "AccessibilityData",
      "type": "object"
    },
    "AccessibilityMotor": {
      "additionalProperties": false,
      "description": "Motor preferences, such as reliance on alternative input methods.",
      "properties": {
        "avoid_hover_interactions": {
          "default": false,
          "title": "Avoid Hover Interactions",
          "type": "boolean"
        },
        "extended_interaction_timeouts": {
          "default": false,
          "title": "Extended Interaction Timeouts",
          "type": "boolean"
        },
        "needs_larger_tap_targets": {
          "default": false,
          "title": "Needs Larger Tap Targets",
          "type": "boolean"
        },
        "sticky_keys": {
          "default": false,
          "title": "Sticky Keys",
          "type": "boolean"
        },
        "uses_eye_tracking": {
          "default": false,
          "title": "Uses Eye Tracking",
          "type": "boolean"
        },
        "uses_switch_control": {
          "default": false,
          "title": "Uses Switch Control",
          "type": "boolean"
        },
        "uses_voice_control": {
          "default": false,
          "title": "Uses Voice Control",
          "type": "boolean"
        }
      },
      "title": "AccessibilityMotor",
      "type": "object"
    },
    "AccessibilityProfileSchema": {
      "additionalProperties": false,
      "description": "How a person experiences an interface.\n\nOptional, and absent means no accessibility configuration was declared rather than none applying. Treat a missing nested key as that field's default rather than as a deliberate choice.",
      "properties": {
        "assistive_tech": {
          "items": {
            "type": "string"
          },
          "title": "Assistive Tech",
          "type": "array"
        },
        "auditory": {
          "$ref": "#/$defs/AccessibilityAuditory"
        },
        "cognitive": {
          "$ref": "#/$defs/AccessibilityCognitive"
        },
        "data": {
          "$ref": "#/$defs/AccessibilityData"
        },
        "extensions": {
          "additionalProperties": true,
          "title": "Extensions",
          "type": "object"
        },
        "motor": {
          "$ref": "#/$defs/AccessibilityMotor"
        },
        "notes": {
          "default": "",
          "title": "Notes",
          "type": "string"
        },
        "version": {
          "const": "1.0",
          "default": "1.0",
          "title": "Version",
          "type": "string"
        },
        "visual": {
          "$ref": "#/$defs/AccessibilityVisual"
        }
      },
      "title": "AccessibilityProfileSchema",
      "type": "object"
    },
    "AccessibilityVisual": {
      "additionalProperties": false,
      "description": "Visual presentation preferences, such as text size and contrast.",
      "properties": {
        "color_filter": {
          "default": "none",
          "enum": [
            "none",
            "deuteranopia",
            "protanopia",
            "tritanopia",
            "grayscale"
          ],
          "title": "Color Filter",
          "type": "string"
        },
        "color_scheme": {
          "default": "no_preference",
          "enum": [
            "no_preference",
            "light",
            "dark"
          ],
          "title": "Color Scheme",
          "type": "string"
        },
        "contrast_preference": {
          "default": "default",
          "enum": [
            "default",
            "more",
            "less"
          ],
          "title": "Contrast Preference",
          "type": "string"
        },
        "dyslexia_friendly_font": {
          "default": false,
          "title": "Dyslexia Friendly Font",
          "type": "boolean"
        },
        "forced_colors": {
          "default": false,
          "title": "Forced Colors",
          "type": "boolean"
        },
        "inverted_colors": {
          "default": false,
          "title": "Inverted Colors",
          "type": "boolean"
        },
        "reduce_transparency": {
          "default": false,
          "title": "Reduce Transparency",
          "type": "boolean"
        },
        "text_size": {
          "default": "default",
          "enum": [
            "default",
            "large",
            "xl",
            "xxl"
          ],
          "title": "Text Size",
          "type": "string"
        },
        "uses_magnifier": {
          "default": false,
          "title": "Uses Magnifier",
          "type": "boolean"
        },
        "uses_screen_reader": {
          "default": false,
          "title": "Uses Screen Reader",
          "type": "boolean"
        }
      },
      "title": "AccessibilityVisual",
      "type": "object"
    },
    "EducationLevel": {
      "enum": [
        "less_than_secondary",
        "secondary",
        "some_post_secondary",
        "vocational_or_associate",
        "bachelor",
        "graduate"
      ],
      "title": "EducationLevel",
      "type": "string"
    },
    "EmploymentStatus": {
      "enum": [
        "employed_full_time",
        "employed_part_time",
        "self_employed",
        "unemployed_seeking",
        "student",
        "homemaker",
        "retired",
        "unable_to_work",
        "other"
      ],
      "title": "EmploymentStatus",
      "type": "string"
    },
    "Gender": {
      "description": "Gender options for people.",
      "enum": [
        "male",
        "female",
        "non-binary",
        "prefer_not_to_say"
      ],
      "title": "Gender",
      "type": "string"
    },
    "Household": {
      "enum": [
        "single",
        "couple_no_kids",
        "couple_with_kids",
        "single_parent",
        "shared_housing",
        "adult_with_parents",
        "multi_generational"
      ],
      "title": "Household",
      "type": "string"
    },
    "IncomeLevel": {
      "enum": [
        "lower",
        "lower_middle",
        "middle",
        "upper_middle",
        "upper",
        "prefer_not_to_say"
      ],
      "title": "IncomeLevel",
      "type": "string"
    },
    "LocaleType": {
      "enum": [
        "urban",
        "suburban",
        "small_town",
        "rural"
      ],
      "title": "LocaleType",
      "type": "string"
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/ishlabs-io-public-person-create-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.