---
title: "Create or update custom properties for an enterprise"
method: PATCH
path: "/enterprises/{enterprise}/properties/schema"
tags: ["enterprise-admin"]
---

# Create or update custom properties for an enterprise

`PATCH /enterprises/{enterprise}/properties/schema`

Creates new or updates existing custom properties defined for an enterprise in a batch.

If the property already exists, the existing property will be replaced with the new values.
Missing optional values will fall back to default values, previous values will be overwritten.
E.g. if a property exists with `values_editable_by: org_and_repo_actors` and it's updated without specifying `values_editable_by`, it will be updated to default value `org_actors`.

To use this endpoint, the authenticated user must be an administrator for the enterprise.

## Path parameters

- `enterprise` string, required

## Request body

- object
  - `properties` CustomProperty[], required — The array of custom properties to create or update.
    - `property_name` string, required — The name of the property
    - `url` string, uri — The URL that can be used to fetch, update, or delete info about this property via the API.
    - `source_type` 'organization' | 'enterprise' — The source type of the property
    - `value_type` 'string' | 'single_select' | 'multi_select' | 'true_false' | 'url', required — The type of the value for the property
    - `required` boolean — Whether the property is required.
    - `default_value` union — Default value of the property
      - string
      - string[]
    - `description` string, nullable — Short description of the property
    - `allowed_values` string[], nullable — An ordered list of the allowed values of the property. The property can have up to 200 allowed values.
    - `values_editable_by` 'org_actors' | 'org_and_repo_actors', nullable — Who can edit the values of the property
    - `require_explicit_values` boolean — Whether setting properties values is mandatory

## Response `200`

Response

- CustomProperty[]
  - `property_name` string, required — The name of the property
  - `url` string, uri — The URL that can be used to fetch, update, or delete info about this property via the API.
  - `source_type` 'organization' | 'enterprise' — The source type of the property
  - `value_type` 'string' | 'single_select' | 'multi_select' | 'true_false' | 'url', required — The type of the value for the property
  - `required` boolean — Whether the property is required.
  - `default_value` union — Default value of the property
    - string
    - string[]
  - `description` string, nullable — Short description of the property
  - `allowed_values` string[], nullable — An ordered list of the allowed values of the property. The property can have up to 200 allowed values.
  - `values_editable_by` 'org_actors' | 'org_and_repo_actors', nullable — Who can edit the values of the property
  - `require_explicit_values` boolean — Whether setting properties values is mandatory

## Other responses

- `403` — Forbidden
- `404` — Resource not found

---

[API](https://skmtc.net/github/apis/github-v3-rest-api-2.md) · [All operations](https://skmtc.net/github/apis/github-v3-rest-api-2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/github/github-v3-rest-api-2/versions/8ae6d0c8716e/schema)
