Sitemap

Service Models

Users prefer Pleasant Password Server with a KeePass client!

Contents

 

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

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
    }
}

 
 


 

CredentialGroup (Folder)

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

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:
    {
        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
        }
    }
    Comment: "Usage Comment"
}

 
 


 

CommentPrompt

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

Example CommentPrompt (JSON)

{
   
        AskForCommentOnViewPassword: true
        AskForCommentOnViewOffline: false
        AskForCommentOnModifyEntries: true
        AskForCommentOnMoveEntries: false
        AskForCommentOnMoveFolders: false
        AskForCommentOnModifyFolders: false

 

}


 


 

Tag

Used by entries and folders to hold Tags

  • Fields
    • Read-only
      • Name : String

Example Tag (JSON)

{
    Name: "Example Tag"
}

 
 


 

Attachment

Used by entries and folders to hold file attachments.

  • Fields
    • Mandatory
      • CredentialObjectId : GUID
      • FileName : String
      • FileData : Byte[]
    • Read-only
      • FileSize : Long

Example Attachment (JSON)

{
    CredentialObjectId: "f2e640fa-72aa-49e3-b7ff-5376311fe8f6"
    FileName: "sample.txt"
    FileData: "UllYNg=="
    FileSize: 4
}

 
 


 

Offline Package

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

Example Entry (JSON)

 

{
    Root:
    {
        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
        }
    }
    Attchment: [0]
    Expiry: "2015-06-04T17:52:28.2500607-06:00"
}

 
 


 

AboutServer

Endpoints: https://[domain]:[port]/api/{version}/rest/about

  • Fields
    • Read-only
      • ServerVersion : String
      • NetVersion : String
      • OsVersion : String
      • PortSettings : String
      • DnsInformation : String
      • Ping : String

Notes:

  1. For details on NetVersion and OsVersion, see MSDN and MSDN respectively.
  2. 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
}

 
 


 

PasswordStrength

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

Example PasswordStrength (JSON)

{
    "NumericalStrength":5.0,
    "DescriptiveStrength":"weak"
}

 
 


 

SearchResults

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>

 

CredentialSearchResult

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

CredentialGroupSearchResult

The other type returned in a SearchResults object. 

  • Fields
    • Read-only
      • Id : GUID
      • Name : String
      • FullPath : 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/"
        }]
}

 
 


ClientConfig

Endpoint: https://[domain]:[port]/api/{version}/rest/configuration/{client}

  • Fields
    • Read-only
      • Name : String
      • ConfigXml : String

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>"
}