You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Organization administrators need to define, manage, and assign custom property schemas and values for repositories within their organization. Custom properties enable metadata-driven governance, search filtering, and automation rules based on repository classification (e.g., environment, team ownership, compliance tier).
Request
Desired capability
Full lifecycle management of organization-level custom property definitions and the ability to assign values to repositories in bulk. This includes creating property schemas (with all five value types), querying definitions, listing property values across all org repos, setting values on repos in batch, and removing definitions.
Acceptance criteria
All organization custom property schema endpoints are implemented (CRUD)
Bulk value assignment to repositories is supported (up to 30 repos per call)
Listing property values across all org repositories is supported with pagination and query filtering
All five value types work: string, single_select, multi_select, true_false, url
Properties can be created with all options: required, default_value, description, allowed_values, values_editable_by, require_explicit_values
Tests create definitions of each type, assign values to repos, verify retrieval, update, unset (null), and clean up
Setting value to null unsets the property on those repositories.
Query parameter for value listing:repository_query supports the same qualifiers as GitHub search.
Class: Reuse GitHubCustomPropertyDefinition class from enterprise issue (#586). Add GitHubRepositoryCustomPropertyValues class for the values list response (contains RepositoryID, RepositoryName, RepositoryFullName, Properties).
Test approach: Integration tests in tests/Organizations.Tests.ps1 using the org auth case. Tests must own their full lifecycle:
Create property definitions of each type during setup
Organization administrators need to define, manage, and assign custom property schemas and values for repositories within their organization. Custom properties enable metadata-driven governance, search filtering, and automation rules based on repository classification (e.g., environment, team ownership, compliance tier).
Request
Desired capability
Full lifecycle management of organization-level custom property definitions and the ability to assign values to repositories in bulk. This includes creating property schemas (with all five value types), querying definitions, listing property values across all org repos, setting values on repos in batch, and removing definitions.
Acceptance criteria
string,single_select,multi_select,true_false,urlrequired,default_value,description,allowed_values,values_editable_by,require_explicit_valuesTechnical decisions
API choice: REST API. The organization custom properties endpoints provide complete CRUD for both definitions and values. No GraphQL fallback needed.
Endpoints to implement:
GET/orgs/{org}/properties/schemaGet-GitHubOrganizationCustomProperty(list all definitions)GET/orgs/{org}/properties/schema/{custom_property_name}Get-GitHubOrganizationCustomProperty -Name(get one)PUT/orgs/{org}/properties/schema/{custom_property_name}Set-GitHubOrganizationCustomProperty(create/update single)PATCH/orgs/{org}/properties/schemaSet-GitHubOrganizationCustomProperty(batch create/update)DELETE/orgs/{org}/properties/schema/{custom_property_name}Remove-GitHubOrganizationCustomPropertyGET/orgs/{org}/properties/valuesGet-GitHubOrganizationCustomPropertyValue(list values for all repos)PATCH/orgs/{org}/properties/valuesSet-GitHubOrganizationCustomPropertyValue(batch set values on repos)Permissions required:
"Custom properties" organization permissions (read)"Custom properties" organization permissions (admin)"Custom properties" organization permissions (read)"Custom properties" organization permissions (write)Function placement:
src/functions/public/Organization/CustomProperties/src/functions/private/Organization/(if needed)Value types supported:
allowed_valuesdefault_valuestringsingle_selectmulti_selecttrue_false"true"/"false"or nullurlBatch value assignment payload:
{ "repository_names": ["Hello-World", "octo-repo"], "properties": [ { "property_name": "environment", "value": "production" }, { "property_name": "service", "value": "web" } ] }Setting
valuetonullunsets the property on those repositories.Query parameter for value listing:
repository_querysupports the same qualifiers as GitHub search.Class: Reuse
GitHubCustomPropertyDefinitionclass from enterprise issue (#586). AddGitHubRepositoryCustomPropertyValuesclass for the values list response (containsRepositoryID,RepositoryName,RepositoryFullName,Properties).Test approach: Integration tests in
tests/Organizations.Tests.ps1using the org auth case. Tests must own their full lifecycle:Implementation plan
Classes
GitHubCustomPropertyDefinitionfrom Add enterprise-level custom property definition management #586 (or create if enterprise issue is not done first)GitHubRepositoryCustomPropertyValuesclass for org-level value listing responsePublic functions — Schema management
Get-GitHubOrganizationCustomProperty— list all or get by name (src/functions/public/Organization/CustomProperties/)Set-GitHubOrganizationCustomProperty— create or update single or batchRemove-GitHubOrganizationCustomProperty— delete by namePublic functions — Value management
Get-GitHubOrganizationCustomPropertyValue— list property values for all org repos (with pagination and query)Set-GitHubOrganizationCustomPropertyValue— batch assign values to repos (up to 30 repos)Tests
tests/Organizations.Tests.ps1stringproperty definition, assign value, read backsingle_selectproperty with allowed values, assign, verifymulti_selectproperty, assign array value, verify array preservationtrue_falseproperty, assign, verifyurlproperty, assign, verifyGet-GitHubOrganizationCustomPropertyValuewithrepository_queryfilter