Service Models
Users prefer Pleasant Password Server with a KeePass client!
Contents
- Entry
- Folder
- Comment Wrapper
- Comment Prompt
- Tag
- Attachment
- Offline Package
- About Server
- Password Strength
- Search Results
- Credential Search Result
- Credential Group Search Result
- Client Config
Credential (Entry)
API Version 5 (Server Versions 7.9.7+)
Endpoints: https://[domain]:[port]/api/v5/rest/entries/{id}
- Fields
- Mandatory
- Id : GUID (Can be omitted when creating a new credential with POST as of version 7.9.18)
- GroupId : GUID
- Optional
- Name : String
- Password : String
- Url : String
- Notes : String
- Expires : DateTimeOffset
- CustomUserFields : Dictionary<String, String>
- CustomApplicationFields : Dictonary<String, String>
- Tags : List<STag>
- Read-only
- Created : DateTimeOffset
- Modified : DateTimeOffset
- HasModifiyEntriesAccess : Boolean
- HasViewEntryContentsAccess : Boolean
- CommentPrompts : SCommentPrompt
- Mandatory
This object can be partially updated. To accomplish this, make a PATCH request with a JSON Object containing only the non read-only fields that you would like to update.
Note about CustomApplicationFields:
-
These are fields used by the KeePass Client.
It is best to pass these back with the values they come with.Possible Keys:
IconId
CustomIconId
ForegroundColor
BackgroundColor
OverrideUrl
AutoTypeEnabled
AutoTypeDefaultSequence
AutoType: + target window name
Example Entry (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}"
}
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 5 (Server Versions 7.9.7+)
Endpoints: https://[domain]:[port]/api/v5/rest/folders/{id}
- Fields
- Mandatory
- Id : GUID
- Name : String
- Password : String
- GroupId : GUID
- Optional
- Url : String
- Notes : String
- Expires : DateTimeOffset
- CustomUserFields : Dictionary<String, String>
- CustomApplicationFields : Dictonary<String, String>
- Tags : List<STag>
- Read-only
- Children : List<CredentialGroup>
- Credentials : List<Credential>
- Created : DateTimeOffset
- Modified : DateTimeOffset
- HasModifiyEntriesAccess : Boolean
- HasViewEntryContentsAccess : Boolean
- CommentPrompts : SCommentPrompt
- Mandatory
This object can be partially updated. To accomplish this, make a PATCH request with a JSON Object containing only the non read-only fields that you would like to update.
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: {}
Children: [0]
Credentials: [0]
Tags: [0]
HasModifyEntriesAccess: true
HasViewEntryContentsAccess: true
CommentPrompts: {
AskForCommentOnViewPassword: false
AskForCommentOnViewOffline: false
AskForCommentOnModifyEntries: false
AskForCommentOnMoveEntries: false
AskForCommentOnMoveFolders: false
AskForCommentOnModifyFolders: false
}
}
ActionCommentRequiredWrapper<T>
API Version 5 (Server Versions 7.9.7+)
This wrapper is used with entries or folders when a comment is required.
Fields
- Mandatory
- Item : Credential -or- CredentialGroup
- Comment : String
Item:
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: {}
Children: [0]
Credentials: [0]
Tags: [0]
HasModifyEntriesAccess: true
HasViewEntryContentsAccess: true
CommentPrompts: {
AskForCommentOnViewPassword: false
AskForCommentOnViewOffline: false
AskForCommentOnModifyEntries: false
AskForCommentOnMoveEntries: false
AskForCommentOnMoveFolders: false
AskForCommentOnModifyFolders: false
}
}
No specific endpoints, this object is used by entry and folder 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 entries and folders.
- Fields
- Read-only
- AskForCommentOnViewPassword : Boolean
- AskForCommentOnViewOffline : Boolean
- AskForCommentOnModifyEntries : Boolean
- AskForCommentOnMoveEntries : Boolean
- AskForCommentOnMoveFolders : Boolean
- AskForCommentOnModifyFolders : Boolean
- Read-only
Example CommentPrompt (JSON)
AskForCommentOnViewPassword: true
AskForCommentOnViewOffline: false
AskForCommentOnModifyEntries: true
AskForCommentOnMoveEntries: false
AskForCommentOnMoveFolders: false
AskForCommentOnModifyFolders: false
}
Used by entries and folders to hold Tags
- Fields
- Read-only
- Name : String
- Read-only
Example Tag (JSON)
Name: "Example Tag"
}
Used by entries and folders to hold file attachments.
- Fields
- Mandatory
- CredentialObjectId : GUID
- FileName : String
- FileData : Byte[]
- Read-only
- FileSize : Long
- Mandatory
Example Attachment (JSON)
CredentialObjectId: "f2e640fa-72aa-49e3-b7ff-5376311fe8f6"
FileName: "sample.txt"
FileData: "UllYNg=="
}
API Version 5 (Server Versions 7.9.7+
Endpoints: https://[domain]:[port]/api/v5/rest/offlinepackage
- Fields
- Read-only
- Root : CredentialGroup
- Attachment : List<Attachment>
- Expiry : DatetimeOffset
- Read-only
Example Entry (JSON)
Root:
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: {}
Children: [0]
Credentials: [0]
Tags: [0]
HasModifyEntriesAccess: true
HasViewEntryContentsAccess: true
CommentPrompts: {
AskForCommentOnViewPassword: false
AskForCommentOnViewOffline: false
AskForCommentOnModifyEntries: false
AskForCommentOnMoveEntries: false
AskForCommentOnMoveFolders: false
AskForCommentOnModifyFolders: false
}
}
Endpoints: https://[domain]:[port]/api/{version}/rest/about
- Fields
- Read-only
- ServerVersion : String
- NetVersion : String
- OsVersion : String
- PortSettings : String
- DnsInformation : String
- Ping : String
- Read-only
Notes:
- For details on NetVersion and OsVersion, see MSDN and MSDN respectively.
- Ping is not currently not implemented (as of version 7.0.10.0)
Example AboutServer (JSON)
"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
- Read-only
- NumericalStrength : Decimal
- DescriptiveStrength : String
- Read-only
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"
}
Response
- Fields
- Read-only
- Credentials : List<CredentialSearchResult>
- Groups : List<CredentialGroupSearchResult>
- Read-only
One of the two types returned in a SearchResults object.
- Fields
- Read-only
- Id : GUID
- Name : String
- Username : String
- Url : String
- Notes : String
- GroupId : GUID
- Path : GUID
- Read-only
The other type returned in a SearchResults object.
- Fields
- Read-only
- Id : GUID
- Name : String
- FullPath : String
- Read-only
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
- Read-only
- Name : String
- ConfigXml : String
- Read-only
Example ClientConfig (JSON)
{ Name: "SampleConfig.config.xml" ConfigXml: "<Configuration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://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>" }