Service Models
Discover how Pleasant Password Server will enhance KeePass for business
Have Questions? Contact Us
Contents
- Credential
- CredentialGroup
- CommentPrompt
- Tag
- Attachment
- AboutServer
- PasswordStrength
- SearchResults
- CredentialSearchResult
- CredentialGroupSearchResult
- ClientConfig
API Version 4 (Server Versions 7+)
Endpoints: https://[domain]:[port]/api/v4/rest/credential/{id}
Fields | .NET Type | Notes |
Id * | GUID | Send an empty Guid 00000000-0000-0000-0000-00000000000 when creating a new Credential. |
Name * | String | |
Password * | String | Used for changing passwords. Use /api/v4/rest/credential/{id}/password to retrieve a password. |
Username ** | String | |
Url ** | String | |
Notes ** | String | |
GroupId * | GUID | The GUID of the folder this Credential belongs to |
Created * | DateTimeOffset | |
Modified * | DateTimeOffset | |
Expires ** | DateTimeOffset | |
CustomUserFields ** | Dictionary<string,string> | |
CustomApplicationFields ** | Dictionary<string,string> |
These are fields used by the KeePass Client. It is best to pass these back with the values they come with. Possible Keys: IconId |
Attachments ** | List<Attachment> | See Attachment |
UsageComment ** | string | If a comment is required to update the Credential, include it here. |
Tags ** | List<STag> | See Tag |
HasModifyEntriesAccess | bool | Read Only |
HasViewEntryContentsAccess | bool | Read Only |
CommentPrompts | SCommentPrompt | Read Only, See Comment Prompt |
* required field for creating and updating that model
** omitting this field will give it a null or default value
Example Credential (JSON)
Id: "2b45438a-2f4a-4d96-9ba9-058ea54252fb"
Name: "Credential 0"
Username: "Credential 0"
Password: null
Url: ""
Notes: ""
GroupId: "cfb2c08e-e990-43b7-99d1-c8e23e0ae00e"
Created: "2013-11-18T10:14:27.8218898-07:00"
Modified: "2015-06-01T13:26:12.336084-06:00"
Expires: null
CustomUserFields: {
CustomField: "CustomFieldValue"
}
CustomApplicationFields: {
BackgroundColor: "#00FF40"
CustomIconId: "c2284483-e595-4b51-aaa8-5a04eb03e611"
ForegroundColor: "#408080"
OverrideUrl: "cmd://{INTERNETEXPLORER} "{URL}""
AutoTypeDefaultSequence: "{USERNAME}{TAB}{PASSWORD}{ENTER}"
}
Attachments: [1]
0: {
CredentialObjectId: "2b45438a-2f4a-4d96-9ba9-058ea54252fb"
FileName: "sample.txt"
FileData: "c2FtcGxlIGZpbGU="
}
UsageComment: null
Tags: [2]
0: {
Name: "Tag1"
}
1: {
Name: "Tag2"
}
HasModifyEntriesAccess: true
HasViewEntryContentsAccess: true
CommentPrompts: {
AskForCommentOnViewPassword: false
AskForCommentOnViewOffline: false
AskForCommentOnModifyEntries: false
AskForCommentOnMoveEntries: false
AskForCommentOnMoveFolders: false
AskForCommentOnModifyFolders: false
}
}
API Version 3 (Server Version 6)
Endpoints: https://[domain]:[port]/api/v3/rest/credential/{id}
Fields | .NET Type | Notes |
Id | GUID | This will be an Empty Guid when creating a new Credential |
Name | String | |
Password | String | Used for changing passwords. Use /api/v3/rest/credential/{id}/password to retrieve a password. |
Username | String | |
Url | String | |
Notes | String | |
GroupId | GUID | The GUID of the folder this Credential belongs to |
Created | DateTimeOffset | |
Modified | DateTimeOffset | |
Expires | DateTimeOffset | |
CustomUserFields | Dictionary<string,byte[]> | |
CustomApplicationFields | Dictionary<string,byte[]> |
These are fields used by the KeePass Client. It is best to pass these back with the values they come with. Possible Keys: IconId Binary:<File Name> Tag <Number***> |
HasModifyEntriesAccess | bool | Not required for Updates or Inserts |
HasViewEntryContentsAccess | bool | Not required for Updates or Inserts |
* required field for creating and updating that model
** omitting this field will give it a null or default value
*** Tags are numbered sequentially starting from 1
API Version 4 (Server Version 7+)
Endpoints: https://[domain]:[port]/api/v4/rest/credentialgroup/{id}
Fields | .NET Type | Notes |
Id * | GUID | This will be an Empty Guid when creating a new CredentialGroup |
Name * | String | |
ParentId * | GUID | The GUID of the folder this CredentialGroup belongs to |
Notes ** | String | |
Created ** | DateTimeOffset | |
Modified ** | DateTimeOffset | |
Expires ** | DateTimeOffset | |
CustomUserFields ** | Dictionary<string,string> | |
CustomApplicationFields ** | Dictionary<string,string> |
These are fields used by the KeePass Client. It is best to pass these back with the values they come with. Possible Keys: IconId |
Attachments ** | List<Attachment> | See Attachment |
Children | List<CredentialGroup> | Read Only |
Credentials | List<Credential> | Read Only, See Credential |
Tags ** | List<Tag> | See Tag |
UsageComment ** | string | If a comment is required to update the CredentialGroup, include it here. |
HasModifyEntriesAccess | bool | Read Only |
HasViewEntryContentsAccess | bool | Read Only |
CommentPrompts | SCommentPrompt | Read Only, See Comment Prompt |
* required field for creating and updating that model
** omitting this field will give it a null or default value
Example CredentialGroup (JSON)
Id: "d3fd71bc-cadf-46e0-8a00-2b2cd49f0077"
Name: "My Folder"
ParentId: "c311b49a-255d-48b1-b9b5-a4ac00e23028"
Notes: null
Created: "2015-06-04T17:52:28.2500607-06:00"
Modified: "2015-06-04T17:52:28.2500607-06:00"
Expires: null
CustomUserFields: {}
CustomApplicationFields: {}
Attachments: [0]
Children: [0]
Credentials: [0]
Tags: [0]
UsageComment: null
HasModifyEntriesAccess: true
HasViewEntryContentsAccess: true
CommentPrompts: {
AskForCommentOnViewPassword: false
AskForCommentOnViewOffline: false
AskForCommentOnModifyEntries: false
AskForCommentOnMoveEntries: false
AskForCommentOnMoveFolders: false
AskForCommentOnModifyFolders: false
}
}
API Version 3 (Server Version 6)
Endpoints: https://[domain]:[port]/api/v3/rest/credentialgroup/{id}
Fields | .NET Type | Notes |
Id * | GUID | This will be an Empty Guid when creating a new CredentialGroup |
Name * | String | |
ParentId * | GUID | The GUID of the folder this CredentialGroup belongs to |
Notes ** | String | |
Created ** | DateTimeOffset | |
Modified ** | DateTimeOffset | |
Expires ** | DateTimeOffset | |
CustomUserFields ** | Dictionary<string,string> | |
CustomApplicationFields ** | Dictionary<string,string> |
These are fields used by the KeePass Client. It is best to pass these back with the values they come with. Possible Keys: IconId |
Children | List<CredentialGroup> | Read Only |
Credentials | List<Credential> | Read Only, See Credential |
HasModifyEntriesAccess | bool | Read Only |
HasViewEntryContentsAccess | bool | Read Only |
* required field for creating and updating that model
** omitting this field will give it a null or default value
No specific endpoints, this object is used by Credential and Credential Group to mark if usage comments are required in certain situations. The field name refers to the action that is being performed while the value should be true if a usage comment is required to perform that action.
These objects are not required for Updates or Inserts of Credentials and Credential Groups.
Fields | .NET Type | Notes |
AskForCommentOnViewPassword | bool | |
AskForCommentOnViewOffline | bool | |
AskForCommentOnModifyEntries | bool | |
AskForCommentOnMoveEntries | bool | |
AskForCommentOnMoveFolders | bool | |
AskForCommentOnModifyFolders | bool |
Example CommentPrompt (JSON)
AskForCommentOnViewPassword: true
AskForCommentOnViewOffline: false
AskForCommentOnModifyEntries: true
AskForCommentOnMoveEntries: false
AskForCommentOnMoveFolders: false
AskForCommentOnModifyFolders: false
}
Used by Credential and Credential Group to hold Tags
Fields | .NET Type | Notes |
Name | string |
Name: "Example Tag"
}
Used by Credential and Credential Group to hold file attachments.
Fields | .NET Type | Notes |
CredentialObjectId | GUID | The ID of the Credential or Folder that this attachment belongs to |
FileName | string | |
FileData | byte[] | Represented as a Base64 string when converted to JSON or XML |
Example Attachment (JSON)
CredentialObjectId: "f2e640fa-72aa-49e3-b7ff-5376311fe8f6"
FileName: "sample.txt"
FileData: "c2FtcGxl"
}
Endpoints: https://[domain]:[port]/api/{version}/rest/about
Fields | .NET Type | Notes |
ServerVersion | string | The version of Pleasant Password Server currently installed |
NetVersion | string | See MSDN |
OsVersion | string | See MSDN |
PortSettings | string | The port number Pleasant Password Server is currently running on |
DnsInformation | string | |
Ping | string | Not currently not implemented (as of version 7.0.10.0) |
"ServerVersion":"7.0.10.0",
"NetVersion":"4.0.30319.34014",
"OsVersion":"Microsoft Windows NT 6.2.9200.0",
"PortSettings":"10001",
"DnsInformation": "Adapter: Realtek PCIe GBE Family Controller
Suffix:
Enabled: False
Dynamically Configured: True
IpAddresses: 192.168.0.1",
"Ping" : null
}
Endpoints: https://[domain]:[port]/api/{version}/rest/passwordstrength
POST requests ONLY. Request body should contain a JSON or XML object with a single field 'Password' with the password that is to be mesaured. For example:
Password : "123abc"
}
Fields | .NET Type | Notes |
NumericalStrength | decimal | We currently use zxcvbn to measure password strength |
DescriptiveStrength | string |
Numerical strength of < 32 = weak Between 32-63 = medium 64 or above = strong |
Example PasswordStrength (JSON)
"NumericalStrength":5.0,
"DescriptiveStrength":"weak"
}
Endpoints: https://[domain]:[port]/api/{version}/rest/search
POST requests ONLY. Request body should contain a JSON or XML object with a single field 'Search' with the string that is to be searched for. For example:
Search : "find this"
}
Fields | .NET Type | Notes |
Credentials | List<CredentialSearchResult> | See CredentialSearchResult |
Groups | List<CredentialGroupSearchResult> |
See CredentialGroupSearchResult |
One of the two types returned in a SearchResults object.
Fields | .NET Type | Notes |
Id | GUID | |
Name | string |
|
Username | string | |
Url | string | |
Notes | string | |
GroupId | GUID | The GUID of the folder this Credential belongs to |
Path | string |
The other type returned in a SearchResults object.
Fields | .NET Type | Notes |
Id | GUID | |
Name | string |
|
FulPath | string |
Example Search Objects (JSON)
"Credentials": [
{
"Id":"79bc70d9-dfa8-430b-9f0c-0247b42bc6ce",
"Name":"find me",
"Username":"",
"Url":""",
"Notes":"",
"GroupId":"34e863ca-4578-4704-96bf-a49500b3e2c5",
"Path":"Root/find me"
},
{
"Id":"abe79d97-d135-44a1-a554-31b55d586b24",
"Name":"find me 2",
"Username":"",
"Url":"",
"Notes":"",
"GroupId":"34e863ca-4578-4704-96bf-a49500b3e2c5",
"Path":"Root/find me 2"
}],
"Groups": [
{
"Id":"3df4bab8-9d86-4101-82bf-6fee12052d79",
"Name":"find me folder",
"FullPath":"Root/find me folder/"
}]
}
Endpoint: https://[domain]:[port]/api/{version}/rest/configuration/{client}
Fields | .NET Type | Notes |
Name | string | |
ConfigXml | string | *The configuration file in plain text |
Name: "SampleConfig.config.xml"
ConfigXml: "<Configuration xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
<Meta> <TemplateGroupId /> <PreferUserConfiguration>true</PreferUserConfiguration> <OmitItemsWithDefaultValues>true</OmitItemsWithDefaultValues>
</Meta> <Application> <TemplateGroupId /> <LastUsedFile> <Path>Pleasant Password Server</Path> <CredProtMode>Obf</CredProtMode> <CredSaveMode>NoSave
</CredSaveMode> </LastUsedFile> <MostRecentlyUsed> <MaxItemCount>12</MaxItemCount> <Items /> </MostRecentlyUsed> <WorkingDirectories /> <Start>
<CheckForUpdate>false</CheckForUpdate> </Start> <FileOpening /> <FileClosing /> <TriggerSystem> <Triggers /> </TriggerSystem> </Application>
<Logging /> <MainWindow> <SplitterHorizontalFrac>0.828915656</SplitterHorizontalFrac> <CloseButtonMinimizesWindow>true</CloseButtonMinimizesWindow>
<MinimizeToTray>true</MinimizeToTray> <ToolBar /> <EntryView /> <EntryListColumnDisplayOrder>0 1 2 3 4</EntryListColumnDisplayOrder> </MainWindow>
<UI> <BannerStyle>WinVistaBlack</BannerStyle> <TrayIcon /> <Hiding /> <StandardFont> <Family>Microsoft Sans Serif</Family> <Size>8.25</Size>
<GraphicsUnit>Point</GraphicsUnit> <Style>Regular</Style> <OverrideUIDefault>false</OverrideUIDefault> </StandardFont> <PasswordFont> <Family>Courier
New</Family> <Size>8.25</Size> <GraphicsUnit>Point</GraphicsUnit> <Style>Regular</Style> <OverrideUIDefault>false</OverrideUIDefault> </PasswordFont>
<DataEditorFont> <Family>Microsoft Sans Serif</Family> <Size>8.25</Size> <GraphicsUnit>Point</GraphicsUnit> <Style>Regular</Style> <OverrideUIDefault>
false</OverrideUIDefault> </DataEditorFont> <UIFlags>0</UIFlags> <KeyCreationFlags>0</KeyCreationFlags> <KeyPromptFlags>0</KeyPromptFlags> </UI>
<Security> <WorkspaceLocking> <LockAfterTime>900</LockAfterTime> <LockAfterGlobalTime>240</LockAfterGlobalTime> </WorkspaceLocking> <Policy /> <MasterPassword>
<MinimumLength>0</MinimumLength> <MinimumQuality>0</MinimumQuality> </MasterPassword> <ClipboardClearAfterSeconds>-1</ClipboardClearAfterSeconds>
</Security> <Native /> <PasswordGenerator> <AutoGeneratedPasswordsProfile> <GeneratorType>CharSet</GeneratorType> <Length>20</Length> <CharSetRanges>
ULD_______</CharSetRanges> </AutoGeneratedPasswordsProfile> <LastUsedProfile> <Name> (Custom)</Name> <GeneratorType>CharSet</GeneratorType> <Length>16
</Length> <CharSetRanges>ULD_______</CharSetRanges> </LastUsedProfile> <UserProfiles /> </PasswordGenerator> <Defaults> <OptionsTabIndex>0</OptionsTabIndex>
<SearchParameters> <ComparisonMode>InvariantCultureIgnoreCase</ComparisonMode> </SearchParameters> <KeySources /> </Defaults> <Integration>
<HotKeyGlobalAutoType>393281</HotKeyGlobalAutoType> <HotKeySelectedAutoType>0</HotKeySelectedAutoType> HotKeyShowWindow>393291</HotKeyShowWindow>
<HotKeyEntryMenu>0</HotKeyEntryMenu> <UrlSchemeOverrides> <BuiltInOverridesEnabled>1</BuiltInOverridesEnabled> <CustomOverrides /> </UrlSchemeOverrides>
<ProxyType>System</ProxyType> </Integration> </Configuration>"
}