Create a custom profile field

This endpoint is only available to organization administrators.

Create a custom profile field in the user's organization.

POST https://z.labs.greyorange.com/api/v1/realm/profile_fields

Usage examples

#!/usr/bin/env python

import zulip

# The user for this zuliprc file must be an organization administrator
client = zulip.Client(config_file="~/zuliprc-admin")

# Create a custom profile field in the user's organization.
request = {"name": "Phone", "hint": "Contact no.", "field_type": 1}

result = client.call_endpoint(url="/realm/profile_fields", method="POST", request=request)
print(result)

curl -sSX POST https://z.labs.greyorange.com/api/v1/realm/profile_fields \
    -u BOT_EMAIL_ADDRESS:BOT_API_KEY \
    --data-urlencode 'name=Favorite programming language' \
    --data-urlencode 'hint=Your favorite programming language.' \
    --data-urlencode field_type=3 \
    --data-urlencode 'field_data={"java": {"order": "2", "text": "Java"}, "python": {"order": "1", "text": "Python"}}'

Parameters

name string optional

Example: "Favorite programming language"

The name of the custom profile field, which will appear both in user-facing settings UI for configuring custom profile fields and in UI displaying a user's profile.


hint string optional

Example: "Your favorite programming language."

The help text to be displayed for the custom profile field in user-facing settings UI for configuring custom profile fields.


field_type integer required

Example: 3

The field type can be any of the supported custom profile field types. See the custom profile fields documentation more details on what each type means.

  • 1: Short text
  • 2: Long text
  • 3: List of options
  • 4: Date picker
  • 5: Link
  • 6: Person picker
  • 7: External account

field_data object optional

Example: {"python": {"text": "Python", "order": "1"}, "java": {"text": "Java", "order": "2"}}

Field types 3 (List of options) and 7 (External account) support storing additional configuration for the field type in the field_data attribute.

For field type 3 (List of options), this attribute is a JSON dictionary defining the choices and the order they will be displayed in the dropdown UI for individual users to select an option.

The interface for field type 7 is not yet stabilized.


Response

Return values

  • id: integer

    The ID for the custom profile field.

Example response

A typical successful JSON response may look like:

{
    "id": 9,
    "msg": "",
    "result": "success"
}