craaft · Schema

User

CompanyTask ManagementKanbanProject ManagementProductivityAI AgentsMCPREST APICollaboration

Properties

Name Type Description
id string
email string
name string
username string
avatarUrl string Empty when no upload; otherwise /api/v1/users/{id}/avatar
hasPassword boolean False for OAuth-only users (no password set). The hash itself is never returned.
emailVerified boolean Whether the address has been confirmed. Currently a soft gate - every endpoint still works for an unverified user - so treat it as a prompt to nudge, not as an authorization signal.
pendingEmail string Present while an email change waits for confirmation. `email` stays the current address until the link sent to this one is opened.
twoFactorEnabled boolean Whether the user has two-factor sign-in on. Managed from Settings → Security through session-only routes (`/me/2fa*`); personal access tokens and MCP tokens are not affected by it.
newsletterSubscribed boolean
emailNotifications boolean Whether card-activity emails are sent (mentions, assignments, and activity on followed cards that stays unread for a few minutes). Defaults to true. Account email such as password resets is always sen
newsletterAvailable boolean False when the newsletter feature isn't configured on the deployment at all, which is different from being unsubscribed.
isSuperAdmin boolean Whether the user can reach the `/admin` dashboard. Informational only - the real gate is server-side, and the admin endpoints are session-authenticated, so a token cannot use them.
csrfToken string Present only for cookie/session callers, who need it to send mutations. Omitted for bearer-token callers, since CSRF does not apply to a credential that isn't attached automatically.
View JSON Schema on GitHub

JSON Schema

craaft-io-user-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/craaft-io/json-schema/craaft-io-user-schema.json",
  "title": "User",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/craaft-io-openapi.yml#/components/schemas/User",
  "type": "object",
  "required": [
    "id",
    "email",
    "name",
    "username",
    "avatarUrl",
    "hasPassword",
    "emailVerified",
    "newsletterSubscribed",
    "newsletterAvailable",
    "emailNotifications",
    "isSuperAdmin",
    "twoFactorEnabled"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid"
    },
    "email": {
      "type": "string",
      "format": "email"
    },
    "name": {
      "type": "string"
    },
    "username": {
      "type": "string"
    },
    "avatarUrl": {
      "type": "string",
      "description": "Empty when no upload; otherwise /api/v1/users/{id}/avatar"
    },
    "hasPassword": {
      "type": "boolean",
      "description": "False for OAuth-only users (no password set). The hash itself is never returned."
    },
    "emailVerified": {
      "type": "boolean",
      "description": "Whether the address has been confirmed. Currently a soft gate -\nevery endpoint still works for an unverified user - so treat it\nas a prompt to nudge, not as an authorization signal.\n"
    },
    "pendingEmail": {
      "type": "string",
      "format": "email",
      "description": "Present while an email change waits for confirmation. `email`\nstays the current address until the link sent to this one is\nopened.\n"
    },
    "twoFactorEnabled": {
      "type": "boolean",
      "description": "Whether the user has two-factor sign-in on. Managed from\nSettings → Security through session-only routes (`/me/2fa*`);\npersonal access tokens and MCP tokens are not affected by it.\n"
    },
    "newsletterSubscribed": {
      "type": "boolean"
    },
    "emailNotifications": {
      "type": "boolean",
      "description": "Whether card-activity emails are sent (mentions, assignments,\nand activity on followed cards that stays unread for a few\nminutes). Defaults to true. Account email such as password\nresets is always sent.\n"
    },
    "newsletterAvailable": {
      "type": "boolean",
      "description": "False when the newsletter feature isn't configured on the\ndeployment at all, which is different from being unsubscribed.\n"
    },
    "isSuperAdmin": {
      "type": "boolean",
      "description": "Whether the user can reach the `/admin` dashboard. Informational\nonly - the real gate is server-side, and the admin endpoints are\nsession-authenticated, so a token cannot use them.\n"
    },
    "csrfToken": {
      "type": "string",
      "description": "Present only for cookie/session callers, who need it to send\nmutations. Omitted for bearer-token callers, since CSRF does not\napply to a credential that isn't attached automatically.\n"
    }
  }
}

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/craaft-io-user"
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.