ProjectConfigurationAction
At most 1 MiB. Revision is mandatory for every mutation. Profile mutations require id; create takes optional name. Save merges typed values and removes overrides named in unset. Field edits use field and optional old key. Import takes a complete document. Export optionally filters by id and always applies the current role. Fixed values and base names cannot be changed. Unauthorized batches are rejected atomically.
Possible values: [get, export, create, duplicate, rename, save, select, delete, field.save, field.delete, import, publication.save, publication.preview]
Possible values: >= 0
Possible values: non-empty and <= 200 characters
Base policy inherited by a newly created personal configuration.
values object
field object
Possible values: Value must match regular expression ^[A-Za-z_][A-Za-z0-9_.-]{0,199}$
Possible values: [string, number, boolean, json, file]
Native JSON default. Never store real secrets in source declarations.
String arrays for string fields; up to 32 server file references for file fields.
ai-models is reserved for the STEAMHARNESS_AGENT_MODELS JSON field. Entries contain id, name, model and source. System entries use credentialId; third-party entries use apiKind, baseUrl and apiKey. Values are private unless explicitly included in publication.
Possible values: [text, textarea, select, radio, checkboxes, ai-models]
Only valid for ai-models. Set false in configuration.json to allow only system AI. Saves and imports cannot add third-party entries or relax the project's declared policy. Omitted or true allows both sources.
File fields only. Accepted MIME types or extensions. Files upload through POST /api/projects/{projectId}/configurations/files and values contain server metadata, never file bytes.
options object[]
sharing object
truefalsetruepaths object
JSON Pointer rules, inherited from the parent with more specific rules taking precedence. Excluding the whole field excludes every descendant.
property name* ConfigurationSharingRule
truefalsetrueGenerated opaque deny hashes for omitted JSON paths, without private path names.
Possible values: Value must match regular expression ^[a-f0-9]{64}$
document object
Possible values: [1]
Possible values: [steamharness-project-configurations]
fields object[]required
Possible values: Value must match regular expression ^[A-Za-z_][A-Za-z0-9_.-]{0,199}$
Possible values: [string, number, boolean, json, file]
Native JSON default. Never store real secrets in source declarations.
String arrays for string fields; up to 32 server file references for file fields.
ai-models is reserved for the STEAMHARNESS_AGENT_MODELS JSON field. Entries contain id, name, model and source. System entries use credentialId; third-party entries use apiKind, baseUrl and apiKey. Values are private unless explicitly included in publication.
Possible values: [text, textarea, select, radio, checkboxes, ai-models]
Only valid for ai-models. Set false in configuration.json to allow only system AI. Saves and imports cannot add third-party entries or relax the project's declared policy. Omitted or true allows both sources.
File fields only. Accepted MIME types or extensions. Files upload through POST /api/projects/{projectId}/configurations/files and values contain server metadata, never file bytes.
options object[]
sharing object
truefalsetruepaths object
JSON Pointer rules, inherited from the parent with more specific rules taking precedence. Excluding the whole field excludes every descendant.
property name* ConfigurationSharingRule
truefalsetrueGenerated opaque deny hashes for omitted JSON paths, without private path names.
Possible values: Value must match regular expression ^[a-f0-9]{64}$
configurations object[]required
Possible values: >= 1
values objectrequired
publication object
Possible values: >= 0
Possible values: >= 0
profilePolicy object
Source-owned role policy. Client labels, role claims and personal metadata never grant authority. Projects without this policy keep their existing behavior.
Possible values: [1]
Must identify a guest profile.
权限逐级累加:访客只读;开发者编辑草稿、上传、发布、写服务器数据;维护者管理设置和低级成员;所有者管理全部成员、删除与转移。 / Cumulative guest, developer, maintainer and owner roles.
Possible values: [guest, developer, maintainer, owner]
profiles object[]required
Possible values: >= 1
权限逐级累加:访客只读;开发者编辑草稿、上传、发布、写服务器数据;维护者管理设置和低级成员;所有者管理全部成员、删除与转移。 / Cumulative guest, developer, maintainer and owner roles.
Possible values: [guest, developer, maintainer, owner]
fixedValues objectrequired
agentModelPolicy object
Source-declared restriction retained independently of published field visibility. Draft and template metadata cannot relax the current source restriction.
Server-assigned source account for personal revision checks; client values do not grant authority.
fields object[]required
Possible values: Value must match regular expression ^[A-Za-z_][A-Za-z0-9_.-]{0,199}$
Possible values: [string, number, boolean, json, file]
Native JSON default. Never store real secrets in source declarations.
String arrays for string fields; up to 32 server file references for file fields.
ai-models is reserved for the STEAMHARNESS_AGENT_MODELS JSON field. Entries contain id, name, model and source. System entries use credentialId; third-party entries use apiKind, baseUrl and apiKey. Values are private unless explicitly included in publication.
Possible values: [text, textarea, select, radio, checkboxes, ai-models]
Only valid for ai-models. Set false in configuration.json to allow only system AI. Saves and imports cannot add third-party entries or relax the project's declared policy. Omitted or true allows both sources.
File fields only. Accepted MIME types or extensions. Files upload through POST /api/projects/{projectId}/configurations/files and values contain server metadata, never file bytes.
options object[]
sharing object
truefalsetruepaths object
JSON Pointer rules, inherited from the parent with more specific rules taking precedence. Excluding the whole field excludes every descendant.
property name* ConfigurationSharingRule
truefalsetrueGenerated opaque deny hashes for omitted JSON paths, without private path names.
Possible values: Value must match regular expression ^[a-f0-9]{64}$
configurations object[]required
Possible values: >= 1
Possible values: non-empty and <= 200 characters
Stable source-declared role profile.
values objectrequired
{
"action": "get",
"revision": 0,
"id": "string",
"name": "string",
"profileKey": "string",
"values": {},
"unset": [
"string"
],
"field": {
"name": "string",
"type": "string",
"label": "string",
"description": "string",
"required": true,
"secret": true,
"multiple": true,
"control": "text",
"allowThirdParty": true,
"accept": [
"string"
],
"options": [
{
"value": "string",
"label": "string"
}
],
"sharing": {
"publish": true,
"includeValue": false,
"editable": true
},
"paths": {},
"omittedPaths": [
"string"
]
},
"key": "string",
"document": {
"version": 1,
"kind": "steamharness-project-configurations",
"fields": [
{
"name": "string",
"type": "string",
"label": "string",
"description": "string",
"required": true,
"secret": true,
"multiple": true,
"control": "text",
"allowThirdParty": true,
"accept": [
"string"
],
"options": [
{
"value": "string",
"label": "string"
}
],
"sharing": {
"publish": true,
"includeValue": false,
"editable": true
},
"paths": {},
"omittedPaths": [
"string"
]
}
],
"configurations": [
{
"profileKey": "string",
"templateId": "string",
"name": "string",
"values": {}
}
]
},
"publication": {
"revision": 0,
"configurationRevision": 0,
"profilePolicy": {
"version": 1,
"defaultProfileKey": "string",
"manageMinimumRole": "guest",
"profiles": [
{
"key": "string",
"name": "string",
"minimumRole": "guest",
"fixedValues": {},
"description": "string",
"tags": [
"string"
]
}
]
},
"agentModelPolicy": {
"allowThirdParty": true
},
"configurationAccountId": "string",
"fields": [
{
"name": "string",
"type": "string",
"label": "string",
"description": "string",
"required": true,
"secret": true,
"multiple": true,
"control": "text",
"allowThirdParty": true,
"accept": [
"string"
],
"options": [
{
"value": "string",
"label": "string"
}
],
"sharing": {
"publish": true,
"includeValue": false,
"editable": true
},
"paths": {},
"omittedPaths": [
"string"
]
}
],
"configurations": [
{
"id": "string",
"name": "string",
"profileKey": "string",
"values": {}
}
],
"defaultConfigurationId": "string"
}
}