CreatePropertySetDefinition1 API¶
Creates a new custom property set definition with full control over privacy settings. This is an extended version of CreatePropertySetDefinition that adds the PrivatePropertySet parameter to control whether anonymous users can see the property set.
Endpoint¶
Methods¶
- GET
/srv.asmx/CreatePropertySetDefinition1?authenticationTicket=...&PropertySetName=...&PropertySetCaption=...&AppliestoDocuments=...&AppliestoFolders=...&AppliestoUsers=...&DomainNames=...&PrivatePropertySet=... - POST
/srv.asmx/CreatePropertySetDefinition1(form data) - SOAP Action:
http://tempuri.org/CreatePropertySetDefinition1
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
authenticationTicket |
string | Yes | Authentication ticket obtained from AuthenticateUser. |
PropertySetName |
string | Yes | Internal name for the property set. Alphanumeric and underscore characters only (auto-converted to uppercase). Max 40 characters (23 on Oracle). Must be unique. |
PropertySetCaption |
string | Yes | Display label shown to users in the UI. Must be unique across all property sets. Maximum 50 characters; a longer value is refused with 4000. |
AppliestoDocuments |
boolean | Yes | true if this property set can be applied to documents. |
AppliestoFolders |
boolean | Yes | true if this property set can be applied to folders. |
AppliestoUsers |
boolean | Yes | true if this property set can be applied to user accounts. |
DomainNames |
string | No | Comma-separated list of library (domain) names to restrict the property set to. If empty or omitted, the property set is global (available in all libraries). Non-existent domain names are silently ignored. |
PrivatePropertySet |
boolean | Yes | true to hide this property set from anonymous users. false makes it visible to everyone including anonymous users. |
Difference from CreatePropertySetDefinition¶
CreatePropertySetDefinition always creates a property set with PrivatePropertySet = false (public). This API allows explicitly controlling the PrivatePropertySet flag.
| API | PrivatePropertySet |
|---|---|
CreatePropertySetDefinition |
Always false (public) |
CreatePropertySetDefinition1 |
Caller-specified |
Response¶
Success Response¶
Error Response¶
Required Permissions¶
The calling user must be a System Administrator.
Anonymous access is not permitted.
Behavior¶
PropertySetNameis trimmed and automatically converted to uppercase before storage.PropertySetNamemust contain only letters (A-"Z), digits (0-"9), and underscores (_). Special characters and spaces are not allowed.- When
DomainNamesis empty or omitted, the property set is global -" available in every library. - When
DomainNamesis specified, the property set is domain-restricted -" it only appears in the listed libraries. - When
PrivatePropertySet = true, the property set is excluded from results returned to anonymous (unauthenticated) users. - Internally, a new database table named
CUSTOM_<PropertySetName>is created to store the property set rows. - At least one of
AppliestoDocuments,AppliestoFolders, orAppliestoUsersshould betrue; creating a property set that applies to nothing is technically allowed but has no practical use.
Example¶
GET Request¶
GET /srv.asmx/CreatePropertySetDefinition1
?authenticationTicket=3f7a1b2c-4d5e-6f7a-8b9c-0d1e2f3a4b5c
&PropertySetName=ConfidentialMeta
&PropertySetCaption=Confidential+Metadata
&AppliestoDocuments=true
&AppliestoFolders=false
&AppliestoUsers=false
&DomainNames=Legal
&PrivatePropertySet=true
HTTP/1.1
Host: yourserver
POST Request¶
POST /srv.asmx/CreatePropertySetDefinition1 HTTP/1.1
Host: yourserver
Content-Type: application/x-www-form-urlencoded
authenticationTicket=3f7a1b2c-4d5e-6f7a-8b9c-0d1e2f3a4b5c&PropertySetName=ConfidentialMeta&PropertySetCaption=Confidential+Metadata&AppliestoDocuments=true&AppliestoFolders=false&AppliestoUsers=false&DomainNames=Legal&PrivatePropertySet=true
JavaScript¶
Every call answers XML with HTTP 200, success or not, so success is the thing to branch on and
errorCode is the number to report.
async function call(action, params) {
const response = await fetch(`/srv.asmx/${action}?${new URLSearchParams(params)}`);
const root = new DOMParser()
.parseFromString(await response.text(), 'text/xml')
.documentElement;
if (root.getAttribute('success') !== 'true') {
throw new Error(`${root.getAttribute('errorCode')}: ${root.getAttribute('error')}`);
}
return root;
}
CreatePropertySetDefinition with the private flag. A private set is left out of
GetPropertySetDefinitions for a caller with no ticket, and asking for one by name without a ticket
is refused.
await call('CreatePropertySetDefinition1', {
authenticationTicket: ticket,
PropertySetName: 'SALARYBAND',
PropertySetCaption: 'Salary band',
AppliestoDocuments: false,
AppliestoFolders: false,
AppliestoUsers: true,
DomainNames: '',
PrivatePropertySet: true
});
Notes¶
PropertySetNameis stored as the internal key and also forms the database table name (CUSTOM_<name>). It cannot be changed after creation without using UpdatePropertySetDefinition.PropertySetCaptionis the visible display name in the UI.- After creating the definition, add fields to it using AddPropertySetField.
Related APIs¶
- CreatePropertySetDefinition -" Same as this API but always creates a public (non-private) property set.
- AddPropertySetField -" Add a field to the new property set definition.
- AddPropertySetFieldOption -" Add option values to a dropdown/list/radio field.
- DeletePropertySetDefinition -" Delete a property set definition.
- UpdatePropertySetDefinition -" Rename or update the properties of a property set definition.
- GetPropertySetDefinition -" Get the full definition of a property set including its fields.
Error Codes¶
The errorCode values this operation returns, checked against a running server:
errorCode |
When |
|---|---|
4010 |
the ticket is expired or unknown |
4030 |
the caller is not a system administrator - including a caller with no ticket at all |
4090 |
a set of that name already exists |
HTTP 400 |
a required string parameter was empty; refused by model binding, so there is no error document |