PreciseFP - API API Reference

The PreciseFP API is organized around REST. It's designed with resource-oriented URLs, and uses HTTP codes to indicate success and error responses. We use standard HTTP features, like HTTP authentication and HTTP verbs, which are understood by off-the-shelf HTTP clients. JSON is returned by all API responses, including errors.

API Endpoint
https://four.precisefp.com/api
Schemes: http, https
Version: 0.0.1

Authentication

Oauth

description

PreciseFP uses OAuth 2.0 for authorization. To use our API, please contact us and we will register your application and provider you with a client_id and client_secret. Once you have authorized your application and received the access_token, you will be able to make requests to the API by adding the following header to every request: Authorization: Bearer OAUTH_ACCESS_TOKEN

flow
accessCode
authorizationUrl
https://four.precisefp.com/oauth/authorize
tokenUrl
https://four.precisefp.com/oauth/token

User

Get User

GET /user
200 OK

Authenticated User Information

Response Example (200 OK)
{
  "first_name": "William",
  "last_name": "Black",
  "email": "williamblack@precisefp.com",
  "phone": "+1 996345132",
  "photo": {
    "type": "image",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "image/jpg",
    "filesize": 46080,
    "filename": "photo.jpg"
  },
  "company": "PreciseFP",
  "company_email": "company@precisefp.com",
  "company_phone": "+1 235762365",
  "company_logo": {
    "type": "image",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "image/jpg",
    "filesize": 46080,
    "filename": "photo.jpg"
  }
}
Oauth login

Get Statistics

GET /user/stats
start_date

The start date (YYYY-MM-DD) to fetch the stats. (defaults to 1 month before)

type
string
in
path
end_date

The end date (YYYY-MM-DD) to fetch the stats. (defaults to today)

type
string
in
path
200 OK

Authenticated User Statistical Information

Response Example (200 OK)
{
  "prospects": [
    0,
    3,
    4,
    1,
    0,
    0,
    0
  ],
  "clients": [
    0,
    3,
    4,
    1,
    0,
    0,
    0
  ],
  "sent_forms": [
    0,
    3,
    4,
    1,
    0,
    0,
    0
  ],
  "closed_forms": [
    0,
    3,
    4,
    1,
    0,
    0,
    0
  ]
}
Oauth accounts

Get Activity

GET /user/activities
type

Filter results by activity type.

type
string
in
query
sort

Sort results by comma delimited list of properties. (use - to sort descendently)

type
string
in
query
limit

Limit returned results. (defaults to 100)

type
integer
in
query
offset

Offset returned results. (defaults to 0)

type
integer
in
query
200 OK

List of Activities

Response Example (200 OK)
{
  "items": [
    {
      "id": 4567,
      "type": "account.currentdata.updated",
      "icon": "person",
      "icon_color": "orange",
      "title": "Client data updated.",
      "description": "By William Black 6 hours ago.",
      "created_at": "2017-01-01 12:00:00"
    }
  ],
  "limit": 100,
  "offset": "integer",
  "total": 2
}
Oauth accounts

Get Templates

GET /user/templates
200 OK

List of templates

Response Example (200 OK)
[
  {
    "key": "283b78e7-66c2-4aae-8ffb-307dcd1797e4",
    "type": "passwordless",
    "title": "Financial Profile 2",
    "description": "Default Financial Profile form",
    "status": "published",
    "modified": true,
    "default": true,
    "tags": [
      "Default",
      "PreciseFP",
      "Checklist"
    ],
    "id": "861e60c9-5017-4458-8618-ae53e9c8f695"
  }
]
Oauth accounts

Forms

Get Forms

GET /user/forms
200 OK

List of forms

Response Example (200 OK)
[
  {
    "account_id": 185,
    "key": 157,
    "definition_key": "b59be93a-91eb-41a0-b869-0eedd4d89fe1",
    "status": "CLOSED",
    "template": {
      "key": "283b78e7-66c2-4aae-8ffb-307dcd1797e4",
      "type": "passwordless",
      "title": "Financial Profile 2",
      "description": "Default Financial Profile form",
      "status": "published",
      "modified": true,
      "default": true,
      "tags": [
        "Default",
        "PreciseFP",
        "Checklist"
      ]
    },
    "recipients": [
      [
        "client",
        "John Doe"
      ]
    ],
    "created_at": "2017-02-02 12:00:00",
    "updated_at": "2017-03-03 12:00:00",
    "opened_at": "2017-04-04 12:00:00",
    "reminded_at": "2017-04-05 12:00:00",
    "closed_at": "2017-05-06 12:00:00",
    "urls": "https://four.precisefp.com/api/forms/preview/sBqX2r8fVIgqG1EHhTtOe0"
  }
]
Oauth accounts

Get Account Forms

GET /accounts/{accountId}/forms
accountId

The unique identifier of the account

type
integer
in
path
200 OK

List of forms

Response Example (200 OK)
[
  {
    "account_id": 185,
    "key": 155,
    "definition_key": "b59be93a-91eb-41a0-b869-0eedd4d89fe1",
    "status": "CLOSED",
    "template": {
      "key": "283b78e7-66c2-4aae-8ffb-307dcd1797e4",
      "type": "passwordless",
      "title": "Financial Profile 2",
      "description": "Default Financial Profile form",
      "status": "published",
      "modified": true,
      "default": true,
      "tags": [
        "Default",
        "PreciseFP",
        "Checklist"
      ]
    },
    "recipients": [
      [
        "client",
        "John Doe"
      ]
    ],
    "created_at": "2017-02-02 12:00:00",
    "updated_at": "2017-03-03 12:00:00",
    "opened_at": "2017-04-04 12:00:00",
    "reminded_at": "2017-04-05 12:00:00",
    "closed_at": "2017-05-06 12:00:00",
    "urls": "https://four.precisefp.com/api/forms/preview/sBqX2r8fVIgqG1EHhTtOe0"
  }
]
Oauth accounts

Send Form

POST /accounts/{accountId}/forms
Form

Form

type
object
in
path
accountId

The unique identifier of the account

type
integer
in
path
201 Created

Sent successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (201 Created)
{
  "account_id": 185,
  "key": 155,
  "definition_key": "b59be93a-91eb-41a0-b869-0eedd4d89fe1",
  "status": "CLOSED",
  "template": {
    "key": "283b78e7-66c2-4aae-8ffb-307dcd1797e4",
    "type": "passwordless",
    "title": "Financial Profile 2",
    "description": "Default Financial Profile form",
    "status": "published",
    "modified": true,
    "default": true,
    "tags": [
      "Default",
      "PreciseFP",
      "Checklist"
    ]
  },
  "recipients": [
    [
      "client",
      "John Doe"
    ]
  ],
  "created_at": "2017-02-02 12:00:00",
  "updated_at": "2017-03-03 12:00:00",
  "opened_at": "2017-04-04 12:00:00",
  "reminded_at": "2017-04-05 12:00:00",
  "closed_at": "2017-05-06 12:00:00",
  "urls": "https://four.precisefp.com/api/forms/preview/sBqX2r8fVIgqG1EHhTtOe0"
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Resend Form

POST /accounts/{accountId}/forms/{formKey}/resend
accountId

The unique identifier of the account

type
integer
in
path
formKey

The unique identifier of the form

type
integer
in
path
200 OK

Resent Successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "account_id": 185,
  "key": "283b78e7-66c2-4aae-8ffb-307dcd1797e4",
  "definition_key": "b59be93a-91eb-41a0-b869-0eedd4d89fe1",
  "status": "CLOSED",
  "template": {
    "key": "283b78e7-66c2-4aae-8ffb-307dcd1797e4",
    "type": "passwordless",
    "title": "Financial Profile 2",
    "description": "Default Financial Profile form",
    "status": "published",
    "modified": true,
    "default": true,
    "tags": [
      "Default",
      "PreciseFP",
      "Checklist"
    ]
  },
  "recipients": [
    [
      "client",
      "John Doe"
    ]
  ],
  "created_at": "2017-02-02 12:00:00",
  "updated_at": "2017-03-03 12:00:00",
  "opened_at": "2017-04-04 12:00:00",
  "reminded_at": "2017-04-05 12:00:00",
  "closed_at": "2017-05-06 12:00:00",
  "urls": "https://four.precisefp.com/api/forms/preview/sBqX2r8fVIgqG1EHhTtOe0"
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Close Form

PUT /accounts/{accountId}/forms/{formKey}/close
accountId

The unique identifier of the account

type
integer
in
path
formKey

The unique identifier of the form

type
integer
in
path
200 OK

Closed successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "account_id": 185,
  "key": "283b78e7-66c2-4aae-8ffb-307dcd1797e4",
  "definition_key": "b59be93a-91eb-41a0-b869-0eedd4d89fe1",
  "status": "CLOSED",
  "template": {
    "key": "283b78e7-66c2-4aae-8ffb-307dcd1797e4",
    "type": "passwordless",
    "title": "Financial Profile 2",
    "description": "Default Financial Profile form",
    "status": "published",
    "modified": true,
    "default": true,
    "tags": [
      "Default",
      "PreciseFP",
      "Checklist"
    ]
  },
  "recipients": [
    [
      "client",
      "John Doe"
    ]
  ],
  "created_at": "2017-02-02 12:00:00",
  "updated_at": "2017-03-03 12:00:00",
  "opened_at": "2017-04-04 12:00:00",
  "reminded_at": "2017-04-05 12:00:00",
  "closed_at": "2017-05-06 12:00:00",
  "urls": "https://four.precisefp.com/api/forms/preview/sBqX2r8fVIgqG1EHhTtOe0"
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Preview Form

GET /accounts/{accountId}/forms/{formKey}/preview
accountId

The unique identifier of the account

type
integer
in
path
formKey

The unique identifier of the form

type
integer
in
path
200 OK

Form preview URL

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "url": "https://four.precisefp.com/api/forms/preview/sBqX2r8fVIgqG1EHhTtOe0"
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Reports

Get Reports

GET /user/reports
200 OK

List of reports

Response Example (200 OK)
[
  {
    "key": "17270724-5880-4fbf-af3d-60aecd3c22af",
    "type": "FORMDEFINITION",
    "source": "34f7a42f-7923-4cd8-bd01-e82d344b5016",
    "title": "Client Survey Results",
    "description": "List of all answers from the Client Survey",
    "created_at": "2017-01-01 12:00:00",
    "updated_at": "2017-02-02 12:00:00",
    "tags": [
      "Survey",
      "PreciseFP"
    ],
    "id": "17270724-5880-4fbf-af3d-60aecd3c22af"
  }
]
Oauth accounts

Generate Report

GET /user/reports/{reportKey}/{reportSource}/{start}/{end}/{format}
reportKey

The unique identifier of the report

type
integer
in
path
reportSource

Report data source

type
string , x ∈ { ALL , CLIENT , PROSPECT }
in
path
start

Report data range start

type
string
in
path
end

Report data range end

type
string
in
path
format

Format of the report

type
string , x ∈ { PDF , XLS , CSV }
in
path
200 OK

Report Generated

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
"File of a specified format"
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Generate Account Report

GET /accounts/{accountId}/reports/{reportKey}/{format}
accountId

The unique identifier of the account

type
integer
in
path
reportKey

The unique identifier of the report

type
integer
in
path
format

Format of the report

type
string , x ∈ { PDF , XLS , CSV }
in
path
200 OK

Report Generated

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
"File of a specified format"
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Accounts

Get Accounts

GET /accounts
type

Filter result by account type.

type
string , x ∈ { clients , prospects }
in
query
sort

Sort results by comma delimited list of properties. (use dash (-) to sort descendently)

type
string
in
query
limit

Limit returned results. (defaults to 100)

type
integer
in
query
offset

Offset returned results. (defaults to 0)

type
integer
in
query
200 OK

List of Accounts

Response Example (200 OK)
{
  "items": [
    {
      "client": {
        "first_name": "John",
        "last_name": "Doe",
        "email": "john.doe@precisefp.com",
        "phone": "+1 5556667777",
        "status": "ACTIVE",
        "type": "CLIENT"
      },
      "coclient": {
        "first_name": "Jane",
        "last_name": "Doe",
        "email": "jane.doe@precisefp.com",
        "phone": "+1 555444333",
        "status": "NEW",
        "type": "COCLIENT"
      },
      "type": "clients",
      "created_at": "2017-01-01 12:00:00",
      "updated_at": "2017-01-01 13:00:00",
      "id": 100
    }
  ],
  "limit": 100,
  "offset": "integer",
  "total": 2
}
Oauth accounts

Create Account

POST /accounts
type: string , x ∈ { clients , prospects }

Type of account.

client: Account Member

Client information.

coclient: Account Member

Co-client information.

Request Example
{
  "type": "clients",
  "client": {
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@precisefp.com",
    "phone": "+1 555-666-7777"
  },
  "coclient": {
    "first_name": "Jane",
    "last_name": "Doe",
    "email": "jane.doe@precisefp.com",
    "phone": "+1 555-444-3333"
  }
}
201 Created

Created successfully

422 Unprocessable Entity

Validation error

500 Internal Server Error

Internal error

Response Example (201 Created)
{
  "client": {
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@precisefp.com",
    "phone": "+1 5556667777",
    "status": "ACTIVE",
    "type": "CLIENT"
  },
  "coclient": {
    "first_name": "Jane",
    "last_name": "Doe",
    "email": "jane.doe@precisefp.com",
    "phone": "+1 555444333",
    "status": "NEW",
    "type": "COCLIENT"
  },
  "type": "clients",
  "created_at": "2017-01-01 12:00:00",
  "updated_at": "2017-01-01 13:00:00",
  "id": 100
}
Response Example (422 Unprocessable Entity)
{
  "status": "error",
  "code": 422,
  "messages": [
    "first_name is required.",
    "email is required."
  ]
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Get Account

GET /accounts/{accountId}
accountId

The unique identifier of the account

type
integer
in
path
200 OK

Account Item

404 Not Found

Not found

Response Example (200 OK)
{
  "client": {
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@precisefp.com",
    "phone": "+1 5556667777",
    "status": "ACTIVE",
    "type": "CLIENT"
  },
  "coclient": {
    "first_name": "Jane",
    "last_name": "Doe",
    "email": "jane.doe@precisefp.com",
    "phone": "+1 555444333",
    "status": "NEW",
    "type": "COCLIENT"
  },
  "type": "clients",
  "created_at": "2017-01-01 12:00:00",
  "updated_at": "2017-01-01 13:00:00",
  "id": 100
}
Oauth accounts

Update Account

PUT /accounts/{accountId}
type: string , x ∈ { clients , prospects }

Type of account.

client: Account Member

Client information.

coclient: Account Member

Co-client information.

accountId

The unique identifier of the account

type
integer
in
path
Request Example
{
  "type": "clients",
  "client": {
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@precisefp.com",
    "phone": "+1 555-666-7777"
  },
  "coclient": {
    "first_name": "Jane",
    "last_name": "Doe",
    "email": "jane.doe@precisefp.com",
    "phone": "+1 555-444-3333"
  }
}
200 OK

Updated successfully

404 Not Found

Not found

422 Unprocessable Entity

Validation error

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "client": {
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@precisefp.com",
    "phone": "+1 5556667777",
    "status": "ACTIVE",
    "type": "CLIENT"
  },
  "coclient": {
    "first_name": "Jane",
    "last_name": "Doe",
    "email": "jane.doe@precisefp.com",
    "phone": "+1 555444333",
    "status": "NEW",
    "type": "COCLIENT"
  },
  "type": "clients",
  "created_at": "2017-01-01 12:00:00",
  "updated_at": "2017-01-01 13:00:00",
  "id": 100
}
Response Example (422 Unprocessable Entity)
{
  "status": "error",
  "code": 422,
  "messages": [
    "first_name is required.",
    "email is required."
  ]
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Delete Account

DELETE /accounts/{accountId}
accountId

The unique identifier of the account

type
integer
in
path
204 No Content

Removed successfully

Oauth accounts

Get Account Member

GET /accounts/{accountId}/{client}/details
accountId

The unique identifier of the account

type
integer
in
path
client

Client primary information.

type
string , x ∈ { client , coclient }
in
path

Account item

Response Example (200 OK)
{
  "first_name": "John",
  "middle_initial": "M",
  "last_name": "Doe",
  "gender": "male",
  "birth_date": "1980-01-01 00:00:00",
  "marital_status": "married",
  "previous_marriages": "integer",
  "citizenship": {
    "country": "US"
  },
  "email": "john.doe@precisefp.com",
  "phone": "+1 5556667777",
  "home_phone": "+1 5557778888",
  "work_phone": "+1 5558888999",
  "address": {
    "line1": "Greenway street 56",
    "line2": " ",
    "city": "Beverly Hills",
    "state": "CA",
    "zip": "90210",
    "country": "US"
  },
  "photo": {
    "type": "image",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "image/jpg",
    "filesize": 46080,
    "filename": "photo.jpg"
  },
  "risk_score": 50.32,
  "comments": "Lorem ipsum dolor sit amet.",
  "drivers_license": {
    "number": "123456789",
    "issue_date": "2010-01-01 00:00:00",
    "expire_date": "2060-01-01 00:00:00",
    "jurisdiction": {
      "state": "CA",
      "country": "US"
    },
    "document": {
      "type": "document",
      "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
      "filetype": "application/pdf",
      "filesize": 46008,
      "filename": "scan.pdf"
    }
  }
}
Oauth accounts

Update Account Member

PUT /accounts/{accountId}/{client}/details

Client/Co-client full information

accountId

The unique identifier of the account

type
integer
in
path
client

Client primary information.

type
string , x ∈ { client , coclient }
in
path
Request Example
{
  "first_name": "John",
  "middle_initial": "M",
  "last_name": "Doe",
  "gender": "male",
  "birth_date": "1980-01-01 00:00:00",
  "marital_status": "married",
  "previous_marriages": "integer",
  "citizenship": {
    "country": "US"
  },
  "email": "john.doe@precisefp.com",
  "phone": "+1 5556667777",
  "home_phone": "+1 5557778888",
  "work_phone": "+1 5558888999",
  "address": {
    "line1": "Greenway street 56",
    "line2": " ",
    "city": "Beverly Hills",
    "state": "CA",
    "zip": "90210",
    "country": "US"
  },
  "photo": {
    "type": "image",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "image/jpg",
    "filesize": 46080,
    "filename": "photo.jpg"
  },
  "risk_score": 50.32,
  "comments": "Lorem ipsum dolor sit amet.",
  "drivers_license": {
    "number": "123456789",
    "issue_date": "2010-01-01 00:00:00",
    "expire_date": "2060-01-01 00:00:00",
    "jurisdiction": {
      "state": "CA",
      "country": "US"
    },
    "document": {
      "type": "document",
      "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
      "filetype": "application/pdf",
      "filesize": 46008,
      "filename": "scan.pdf"
    }
  }
}

Updated successfully

422 Unprocessable Entity

Validation error

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "first_name": "John",
  "middle_initial": "M",
  "last_name": "Doe",
  "gender": "male",
  "birth_date": "1980-01-01 00:00:00",
  "marital_status": "married",
  "previous_marriages": "integer",
  "citizenship": {
    "country": "US"
  },
  "email": "john.doe@precisefp.com",
  "phone": "+1 5556667777",
  "home_phone": "+1 5557778888",
  "work_phone": "+1 5558888999",
  "address": {
    "line1": "Greenway street 56",
    "line2": " ",
    "city": "Beverly Hills",
    "state": "CA",
    "zip": "90210",
    "country": "US"
  },
  "photo": {
    "type": "image",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "image/jpg",
    "filesize": 46080,
    "filename": "photo.jpg"
  },
  "risk_score": 50.32,
  "comments": "Lorem ipsum dolor sit amet.",
  "drivers_license": {
    "number": "123456789",
    "issue_date": "2010-01-01 00:00:00",
    "expire_date": "2060-01-01 00:00:00",
    "jurisdiction": {
      "state": "CA",
      "country": "US"
    },
    "document": {
      "type": "document",
      "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
      "filetype": "application/pdf",
      "filesize": 46008,
      "filename": "scan.pdf"
    }
  }
}
Response Example (422 Unprocessable Entity)
{
  "status": "error",
  "code": 422,
  "messages": [
    "first_name is required.",
    "email is required."
  ]
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Update Account Member Photo

PUT /accounts/{accountId}/{client}/details/photo
file

File to upload

type
file
in
formData
accountId

The unique identifier of the account

type
integer
in
path
client

Client primary information.

type
string , x ∈ { client , coclient }
in
path
200 OK

Updated successfully

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "type": "image",
  "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
  "filetype": "image/jpg",
  "filesize": 46080,
  "filename": "photo.jpg"
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Delete Account Member Photo

DELETE /accounts/{accountId}/{client}/details/photo
accountId

The unique identifier of the account

type
integer
in
path
client

Client primary information.

type
string , x ∈ { client , coclient }
in
path
204 No Content

Removed successfully

Oauth accounts

Update Driver's License Document

PUT /accounts/{accountId}/{client}/details/drivers_license/document
file

File to upload

type
file
in
formData
accountId

The unique identifier of the account

type
integer
in
path
client

Client primary information.

type
string , x ∈ { client , coclient }
in
path
200 OK

Updated successfully

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "type": "document",
  "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
  "filetype": "application/pdf",
  "filesize": 46080,
  "filename": "scan.pdf"
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Delete Driver's License Document

DELETE /accounts/{accountId}/{client}/details/drivers_license/document
accountId

The unique identifier of the account

type
integer
in
path
client

Client primary information.

type
string , x ∈ { client , coclient }
in
path
204 No Content

Removed successfully

Oauth accounts

Get Annuities

GET /accounts/{accountId}/annuities
accountId

The unique identifier of the account

type
integer
in
path
200 OK

List of Annuities

Response Example (200 OK)
[
  {
    "name": "Life Annuity",
    "owner": {
      "id": null,
      "type": "client",
      "label": "John M Doe"
    },
    "provider": "AnnuityUS",
    "primary_beneficiary": {
      "id": null,
      "type": "coclient",
      "label": "Jane C Doe"
    },
    "secondary_beneficiary": {
      "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
      "type": "FamilyMember",
      "label": "David C Doe"
    },
    "type": "fixed",
    "contribution_value": 1300,
    "current_value": 15000,
    "distribution_type": "lump-sum",
    "distribution_value": 500,
    "id": "8aec83f8-7c54-41a8-a564-df253e2c07e5|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
  }
]
Oauth accounts

Create Annuity

POST /accounts/{accountId}/annuities

Annuity

accountId

The unique identifier of the account

type
integer
in
path
Request Example
{
  "name": "Life Annuity",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "provider": "AnnuityUS",
  "primary_beneficiary": {
    "id": null,
    "type": "coclient",
    "label": "Jane C Doe"
  },
  "secondary_beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "type": "fixed",
  "contribution_value": 1300,
  "current_value": 15000,
  "distribution_type": "lump-sum",
  "distribution_value": 500
}
201 Created

Created successfully

422 Unprocessable Entity

Validation error

500 Internal Server Error

Internal error

Response Example (201 Created)
{
  "name": "Life Annuity",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "provider": "AnnuityUS",
  "primary_beneficiary": {
    "id": null,
    "type": "coclient",
    "label": "Jane C Doe"
  },
  "secondary_beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "type": "fixed",
  "contribution_value": 1300,
  "current_value": 15000,
  "distribution_type": "lump-sum",
  "distribution_value": 500,
  "id": "8aec83f8-7c54-41a8-a564-df253e2c07e5|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Response Example (422 Unprocessable Entity)
{
  "status": "error",
  "code": 422,
  "messages": [
    "type is required.",
    "name is required.",
    "owner is required.",
    "current-value is required."
  ]
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Get Annuity

GET /accounts/{accountId}/annuities/{pensionId}
accountId

The unique identifier of the account

type
integer
in
path
pensionId

The unique identifier of the annuity

type
string
in
path
200 OK

Annuity

404 Not Found

Not found

Response Example (200 OK)
{
  "name": "Life Annuity",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "provider": "AnnuityUS",
  "primary_beneficiary": {
    "id": null,
    "type": "coclient",
    "label": "Jane C Doe"
  },
  "secondary_beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "type": "fixed",
  "contribution_value": 1300,
  "current_value": 15000,
  "distribution_type": "lump-sum",
  "distribution_value": 500,
  "id": "8aec83f8-7c54-41a8-a564-df253e2c07e5|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Oauth accounts

Update Annuity

PUT /accounts/{accountId}/annuities/{pensionId}

Annuity

accountId

The unique identifier of the account

type
integer
in
path
pensionId

The unique identifier of the annuity

type
string
in
path
Request Example
{
  "name": "Life Annuity",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "provider": "AnnuityUS",
  "primary_beneficiary": {
    "id": null,
    "type": "coclient",
    "label": "Jane C Doe"
  },
  "secondary_beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "type": "fixed",
  "contribution_value": 1300,
  "current_value": 15000,
  "distribution_type": "lump-sum",
  "distribution_value": 500
}
200 OK

Updated successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "name": "Life Annuity",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "provider": "AnnuityUS",
  "primary_beneficiary": {
    "id": null,
    "type": "coclient",
    "label": "Jane C Doe"
  },
  "secondary_beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "type": "fixed",
  "contribution_value": 1300,
  "current_value": 15000,
  "distribution_type": "lump-sum",
  "distribution_value": 500
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Delete Annuity

DELETE /accounts/{accountId}/annuities/{pensionId}
accountId

The unique identifier of the account

type
integer
in
path
pensionId

The unique identifier of the annuity

type
string
in
path
204 No Content

Removed successfully

Oauth accounts

Get Assets

GET /accounts/{accountId}/assets
accountId

The unique identifier of the account

type
integer
in
path
200 OK

List of Assets

Response Example (200 OK)
[
  {
    "name": "John's yacht",
    "type": "other",
    "owner": {
      "id": null,
      "type": "client",
      "label": "John M Doe"
    },
    "current_value": 87000,
    "original_value": 82000,
    "id": "365f7627-10f2-4183-a724-eade147ac9fe|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
  }
]
Oauth accounts

Create Asset

POST /accounts/{accountId}/assets

Asset

accountId

The unique identifier of the account

type
integer
in
path
Request Example
{
  "name": "John's yacht",
  "type": "other",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "current_value": 87000,
  "original_value": 82000
}
201 Created

Created successfully

422 Unprocessable Entity

Validation error

500 Internal Server Error

Internal error

Response Example (201 Created)
{
  "name": "John's yacht",
  "type": "other",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "current_value": 87000,
  "original_value": 82000,
  "id": "365f7627-10f2-4183-a724-eade147ac9fe|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Response Example (422 Unprocessable Entity)
{
  "status": "error",
  "code": 422,
  "messages": [
    "type is required.",
    "name is required.",
    "owner is required.",
    "current-value is required."
  ]
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Get Asset

GET /accounts/{accountId}/assets/{assetId}
accountId

The unique identifier of the account

type
integer
in
path
assetId

The unique identifier of the asset

type
string
in
path
200 OK

Asset

404 Not Found

Not found

Response Example (200 OK)
{
  "name": "John's yacht",
  "type": "other",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "current_value": 87000,
  "original_value": 82000,
  "id": "365f7627-10f2-4183-a724-eade147ac9fe|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Oauth accounts

Update Asset

PUT /accounts/{accountId}/assets/{assetId}

Asset

accountId

The unique identifier of the account

type
integer
in
path
assetId

The unique identifier of the asset

type
string
in
path
Request Example
{
  "name": "John's yacht",
  "type": "other",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "current_value": 87000,
  "original_value": 82000
}
200 OK

Updated successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "name": "John's yacht",
  "type": "other",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "current_value": 87000,
  "original_value": 82000
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Delete Asset

DELETE /accounts/{accountId}/assets/{assetId}
accountId

The unique identifier of the account

type
integer
in
path
assetId

The unique identifier of the asset

type
string
in
path
204 No Content

Removed successfully

Oauth accounts

Get Cashables

GET /accounts/{accountId}/cash
accountId

The unique identifier of the account

type
integer
in
path
200 OK

List of Cashables

Response Example (200 OK)
[
  {
    "name": "Bank of America account",
    "type": "savings",
    "provider": "Bank of America",
    "owner": {
      "id": null,
      "type": "client",
      "label": "John M Doe"
    },
    "current_value": 40000,
    "interest": 7,
    "end_date": "2018-04-05",
    "id": "5076bdae-1af1-4a9a-8827-64106f44c80b|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
  }
]
Oauth accounts

Create Cashable

POST /accounts/{accountId}/cash

Cashable

accountId

The unique identifier of the account

type
integer
in
path
Request Example
{
  "name": "Bank of America account",
  "type": "savings",
  "provider": "Bank of America",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "current_value": 40000,
  "interest": 7,
  "end_date": "2018-04-05"
}
201 Created

Created successfully

422 Unprocessable Entity

Validation error

500 Internal Server Error

Internal error

Response Example (201 Created)
{
  "name": "Bank of America account",
  "type": "savings",
  "provider": "Bank of America",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "current_value": 40000,
  "interest": 7,
  "end_date": "2018-04-05",
  "id": "5076bdae-1af1-4a9a-8827-64106f44c80b|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Response Example (422 Unprocessable Entity)
{
  "status": "error",
  "code": 422,
  "messages": [
    "type is required.",
    "name is required.",
    "owner is required.",
    "current-value is required."
  ]
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Get Cashable

GET /accounts/{accountId}/cash/{cashId}
accountId

The unique identifier of the account

type
integer
in
path
cashId

The unique identifier of the cashable

type
string
in
path
200 OK

Cashable

404 Not Found

Not found

Response Example (200 OK)
{
  "name": "Bank of America account",
  "type": "savings",
  "provider": "Bank of America",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "current_value": 40000,
  "interest": 7,
  "end_date": "2018-04-05",
  "id": "5076bdae-1af1-4a9a-8827-64106f44c80b|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Oauth accounts

Update Cashable

PUT /accounts/{accountId}/cash/{cashId}

Cashable

accountId

The unique identifier of the account

type
integer
in
path
cashId

The unique identifier of the cashable

type
string
in
path
Request Example
{
  "name": "Bank of America account",
  "type": "savings",
  "provider": "Bank of America",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "current_value": 40000,
  "interest": 7,
  "end_date": "2018-04-05"
}
200 OK

Created successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "name": "Bank of America account",
  "type": "savings",
  "provider": "Bank of America",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "current_value": 40000,
  "interest": 7,
  "end_date": "2018-04-05"
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Delete Cashable

DELETE /accounts/{accountId}/cash/{cashId}
accountId

The unique identifier of the account

type
integer
in
path
cashId

The unique identifier of the cashable

type
string
in
path
204 No Content

Removed successfully

Oauth accounts

Get Contacts

GET /accounts/{accountId}/contacts
accountId

The unique identifier of the account

type
integer
in
path
200 OK

List of Contacts

Response Example (200 OK)
[
  {
    "type": "attorney",
    "first_name": "William",
    "last_name": "Black",
    "email": "williamblack@precisefp.com",
    "phone": "+1 434623992",
    "company": "AttorneysUS",
    "id": "010eb904-f196-4b0e-b936-dd5038fa1397|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
  }
]
Oauth accounts

Create Contact

POST /accounts/{accountId}/contacts
accountId

The unique identifier of the account

type
integer
in
path
Request Example
{
  "type": "attorney",
  "first_name": "William",
  "last_name": "Black",
  "email": "williamblack@precisefp.com",
  "phone": "+1 434623992",
  "company": "AttorneysUS"
}
201 Created

Created successfully

422 Unprocessable Entity

Validation error

500 Internal Server Error

Internal error

Response Example (201 Created)
{
  "type": "attorney",
  "first_name": "William",
  "last_name": "Black",
  "email": "williamblack@precisefp.com",
  "phone": "+1 434623992",
  "company": "AttorneysUS",
  "id": "010eb904-f196-4b0e-b936-dd5038fa1397|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Response Example (422 Unprocessable Entity)
{
  "status": "error",
  "code": 422,
  "messages": [
    "first_name is required.",
    "last_name is required.",
    "type is required."
  ]
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Get Contact

GET /accounts/{accountId}/contacts/{contactId}
accountId

The unique identifier of the account

type
integer
in
path
contractId

The unique identifier of the contact

type
string
in
path
200 OK

Contact

404 Not Found

Not found

Response Example (200 OK)
{
  "type": "attorney",
  "first_name": "William",
  "last_name": "Black",
  "email": "williamblack@precisefp.com",
  "phone": "+1 434623992",
  "company": "AttorneysUS",
  "id": "010eb904-f196-4b0e-b936-dd5038fa1397|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Oauth accounts

Update Contact

PUT /accounts/{accountId}/contacts/{contactId}

Contact

accountId

The unique identifier of the account

type
integer
in
path
contractId

The unique identifier of the contact

type
string
in
path
Request Example
{
  "type": "attorney",
  "first_name": "William",
  "last_name": "Black",
  "email": "williamblack@precisefp.com",
  "phone": "+1 434623992",
  "company": "AttorneysUS"
}
200 OK

Updated successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "type": "attorney",
  "first_name": "William",
  "last_name": "Black",
  "email": "williamblack@precisefp.com",
  "phone": "+1 434623992",
  "company": "AttorneysUS"
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Delete Contact

DELETE /accounts/{accountId}/contacts/{contactId}
accountId

The unique identifier of the account

type
integer
in
path
contractId

The unique identifier of the contact

type
string
in
path
204 No Content

Removed successfully

Oauth accounts

Get Documents

GET /accounts/{accountId}/documents
accountId

The unique identifier of the account

type
integer
in
path
200 OK

List of Documents

Response Example (200 OK)
[
  {
    "file": {
      "type": "image",
      "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
      "filetype": "image/jpg",
      "filesize": 46080,
      "filename": "photo.jpg"
    },
    "relation": {
      "type": "client",
      "id": "string, null",
      "label": "John M Doe"
    },
    "id": "f39360b1-dc88-4ed8-9ba5-a3d9a1fdda0d|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
  }
]
Oauth accounts

Create Document

POST /accounts/{accountId}/documents

Document

accountId

The unique identifier of the account

type
integer
in
path
Request Example
{
  "file": {
    "type": "image",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "image/jpg",
    "filesize": 46080,
    "filename": "photo.jpg"
  },
  "relation": {
    "type": "client",
    "id": "string, null",
    "label": "John M Doe"
  }
}
201 Created

Created successfully

422 Unprocessable Entity

Validation error

500 Internal Server Error

Internal error

Response Example (201 Created)
{
  "file": {
    "type": "image",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "image/jpg",
    "filesize": 46080,
    "filename": "photo.jpg"
  },
  "relation": {
    "type": "client",
    "id": "string, null",
    "label": "John M Doe"
  },
  "id": "f39360b1-dc88-4ed8-9ba5-a3d9a1fdda0d|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Response Example (422 Unprocessable Entity)
{
  "status": "error",
  "code": 422,
  "messages": [
    "file is required."
  ]
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Get Document

GET /accounts/{accountId}/documents/{documentId}
accountId

The unique identifier of the account

type
integer
in
path
documentId

The unique identifier of the document

type
string
in
path
200 OK

Document

404 Not Found

Not found

Response Example (200 OK)
{
  "file": {
    "type": "image",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "image/jpg",
    "filesize": 46080,
    "filename": "photo.jpg"
  },
  "relation": {
    "type": "client",
    "id": "string, null",
    "label": "John M Doe"
  },
  "id": "f39360b1-dc88-4ed8-9ba5-a3d9a1fdda0d|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Oauth accounts

Update Document

PUT /accounts/{accountId}/documents/{documentId}

Document

accountId

The unique identifier of the account

type
integer
in
path
documentId

The unique identifier of the document

type
string
in
path
Request Example
{
  "file": {
    "type": "image",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "image/jpg",
    "filesize": 46080,
    "filename": "photo.jpg"
  },
  "relation": {
    "type": "client",
    "id": "string, null",
    "label": "John M Doe"
  }
}
200 OK

Created successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "file": {
    "type": "image",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "image/jpg",
    "filesize": 46080,
    "filename": "photo.jpg"
  },
  "relation": {
    "type": "client",
    "id": "string, null",
    "label": "John M Doe"
  }
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Delete Document

DELETE /accounts/{accountId}/documents/{documentId}
accountId

The unique identifier of the account

type
integer
in
path
documentId

The unique identifier of the document

type
string
in
path
204 No Content

Removed successfully

Oauth accounts

Get Employments

GET /accounts/{accountId}/{client}/employment
accountId

The unique identifier of the account

type
integer
in
path
client

Client or Co-client

type
string , x ∈ { client , coclient }
in
path
200 OK

List of Employments

Response Example (200 OK)
[
  {
    "employer": "Pete Smith Industries",
    "position": "Sales Manager",
    "duration": 8,
    "address": {
      "line1": "Greenway street 56",
      "line2": " ",
      "city": "Beverly Hills",
      "state": "CA",
      "zip": "90210",
      "country": "US"
    },
    "salary": 140000,
    "comissions": 11000,
    "document": {
      "type": "document",
      "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
      "filetype": "application/pdf",
      "filesize": 46008,
      "filename": "scan.pdf"
    },
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
  }
]
Oauth accounts

Create Employment

POST /accounts/{accountId}/{client}/employment

Employment

accountId

The unique identifier of the account

type
integer
in
path
client

Client or Co-client

type
string , x ∈ { client , coclient }
in
path
Request Example
{
  "employer": "Pete Smith Industries",
  "position": "Sales Manager",
  "duration": 8,
  "address": {
    "line1": "Greenway street 56",
    "line2": " ",
    "city": "Beverly Hills",
    "state": "CA",
    "zip": "90210",
    "country": "US"
  },
  "salary": 140000,
  "comissions": 11000,
  "document": {
    "type": "document",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "application/pdf",
    "filesize": 46008,
    "filename": "scan.pdf"
  }
}
201 Created

Created successfully

422 Unprocessable Entity

Validation error

500 Internal Server Error

Internal error

Response Example (201 Created)
{
  "employer": "Pete Smith Industries",
  "position": "Sales Manager",
  "duration": 8,
  "address": {
    "line1": "Greenway street 56",
    "line2": " ",
    "city": "Beverly Hills",
    "state": "CA",
    "zip": "90210",
    "country": "US"
  },
  "salary": 140000,
  "comissions": 11000,
  "document": {
    "type": "document",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "application/pdf",
    "filesize": 46008,
    "filename": "scan.pdf"
  },
  "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Response Example (422 Unprocessable Entity)
{
  "status": "error",
  "code": 422,
  "messages": [
    "employer is required."
  ]
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Get Employment

GET /accounts/{accountId}/{client}/employment/{employmentId}
accountId

The unique identifier of the account

type
integer
in
path
client

Client or Co-client

type
string , x ∈ { client , coclient }
in
path
employmentId

The unique identifier of the employment

type
string
in
path
200 OK

Employment

404 Not Found

Not found

Response Example (200 OK)
{
  "employer": "Pete Smith Industries",
  "position": "Sales Manager",
  "duration": 8,
  "address": {
    "line1": "Greenway street 56",
    "line2": " ",
    "city": "Beverly Hills",
    "state": "CA",
    "zip": "90210",
    "country": "US"
  },
  "salary": 140000,
  "comissions": 11000,
  "document": {
    "type": "document",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "application/pdf",
    "filesize": 46008,
    "filename": "scan.pdf"
  },
  "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Oauth accounts

Update Employment

PUT /accounts/{accountId}/{client}/employment/{employmentId}

Employment

accountId

The unique identifier of the account

type
integer
in
path
client

Client or Co-client

type
string , x ∈ { client , coclient }
in
path
employmentId

The unique identifier of the employment

type
string
in
path
Request Example
{
  "employer": "Pete Smith Industries",
  "position": "Sales Manager",
  "duration": 8,
  "address": {
    "line1": "Greenway street 56",
    "line2": " ",
    "city": "Beverly Hills",
    "state": "CA",
    "zip": "90210",
    "country": "US"
  },
  "salary": 140000,
  "comissions": 11000,
  "document": {
    "type": "document",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "application/pdf",
    "filesize": 46008,
    "filename": "scan.pdf"
  }
}
200 OK

Item created successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "employer": "Pete Smith Industries",
  "position": "Sales Manager",
  "duration": 8,
  "address": {
    "line1": "Greenway street 56",
    "line2": " ",
    "city": "Beverly Hills",
    "state": "CA",
    "zip": "90210",
    "country": "US"
  },
  "salary": 140000,
  "comissions": 11000,
  "document": {
    "type": "document",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "application/pdf",
    "filesize": 46008,
    "filename": "scan.pdf"
  }
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Delete Employment

DELETE /accounts/{accountId}/{client}/employment/{employmentId}
accountId

The unique identifier of the account

type
integer
in
path
client

Client or Co-client

type
string , x ∈ { client , coclient }
in
path
employmentId

The unique identifier of the employment

type
string
in
path
204 No Content

Removed successfully

Oauth accounts

Update Employment Document

PUT /accounts/{accountId}/{client}/employment/{employmentId}/document
file

File to upload

type
file
in
formData
accountId

The unique identifier of the account

type
integer
in
path
client

Client or Co-client

type
string , x ∈ { client , coclient }
in
path
employmentId

The unique identifier of the employment

type
string
in
path
200 OK

Updated successfully

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "type": "document",
  "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
  "filetype": "application/pdf",
  "filesize": 46080,
  "filename": "scan.pdf"
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Delete Employment Document

DELETE /accounts/{accountId}/{client}/employment/{employmentId}/document
accountId

The unique identifier of the account

type
integer
in
path
client

Client or Co-client

type
string , x ∈ { client , coclient }
in
path
employmentId

The unique identifier of the employment

type
string
in
path
204 No Content

Removed successfully

Oauth accounts

Get Fixed Expenses

GET /accounts/{accountId}/expenses-fixed
accountId

The unique identifier of the account

type
integer
in
path

Expenses-fixed

Response Example (200 OK)
{
  "rent": 100,
  "alimony": 240,
  "child_support": 150,
  "college": 210,
  "other_insurance": 75,
  "life_insurance": 170,
  "health_insurance": 140,
  "disability_insurance": 99,
  "long_term_care_insurance": 105,
  "homeowner_insurance": 95,
  "auto_insurance": 80,
  "umbrella_insurance": 55,
  "eo_malpractice_insurance": 45,
  "college_plan": 115,
  "annuity": 65,
  "retirement_plan": 50,
  "credit_card": 11,
  "mortgage": 320,
  "loan": 199,
  "other": 35
}
Oauth accounts

Update Fixed Expenses

POST /accounts/{accountId}/expenses-fixed

Expense-fixed

accountId

The unique identifier of the account

type
integer
in
path
Request Example
{
  "rent": 100,
  "alimony": 240,
  "child_support": 150,
  "college": 210,
  "other_insurance": 75,
  "life_insurance": 170,
  "health_insurance": 140,
  "disability_insurance": 99,
  "long_term_care_insurance": 105,
  "homeowner_insurance": 95,
  "auto_insurance": 80,
  "umbrella_insurance": 55,
  "eo_malpractice_insurance": 45,
  "college_plan": 115,
  "annuity": 65,
  "retirement_plan": 50,
  "credit_card": 11,
  "mortgage": 320,
  "loan": 199,
  "other": 35
}
201 Created

Updated successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (201 Created)
{
  "rent": 100,
  "alimony": 240,
  "child_support": 150,
  "college": 210,
  "other_insurance": 75,
  "life_insurance": 170,
  "health_insurance": 140,
  "disability_insurance": 99,
  "long_term_care_insurance": 105,
  "homeowner_insurance": 95,
  "auto_insurance": 80,
  "umbrella_insurance": 55,
  "eo_malpractice_insurance": 45,
  "college_plan": 115,
  "annuity": 65,
  "retirement_plan": 50,
  "credit_card": 11,
  "mortgage": 320,
  "loan": 199,
  "other": 35
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Get Tax Expenses

GET /accounts/{accountId}/expenses-tax
accountId

The unique identifier of the account

type
integer
in
path
200 OK

Expenses-Tax

Response Example (200 OK)
{
  "federal_income": 1250,
  "state_income": 999,
  "fica": 700,
  "real_estate": 888,
  "other": 525
}
Oauth accounts

Update Tax Expenses

POST /accounts/{accountId}/expenses-tax

Expense-Tax

accountId

The unique identifier of the account

type
integer
in
path
Request Example
{
  "federal_income": 1250,
  "state_income": 999,
  "fica": 700,
  "real_estate": 888,
  "other": 525
}
201 Created

Updated successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (201 Created)
{
  "federal_income": 1250,
  "state_income": 999,
  "fica": 700,
  "real_estate": 888,
  "other": 525
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Get Variable Expenses

GET /accounts/{accountId}/expenses-variable
accountId

The unique identifier of the account

type
integer
in
path

List of Variable Expenses

Response Example (200 OK)
{
  "value": 110,
  "type": "supplies"
}
Oauth accounts

Create Variable Expense

POST /accounts/{accountId}/expenses-variable

Expense-Variable

accountId

The unique identifier of the account

type
integer
in
path
Request Example
{
  "value": 110,
  "type": "supplies"
}
201 Created

Created successfully

422 Unprocessable Entity

Validation error

500 Internal Server Error

Internal error

Response Example (201 Created)
{
  "value": 110,
  "type": "supplies"
}
Response Example (422 Unprocessable Entity)
{
  "status": "error",
  "code": 422,
  "messages": [
    "type is required.",
    "value is required."
  ]
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Get Variable Expense

GET /accounts/{accountId}/expenses-variable/{expenseId}
accountId

The unique identifier of the account

type
integer
in
path
expenseId

The unique identifier of the expense - variable

type
string
in
path
200 OK

Expense-variable

404 Not Found

Not found

Response Example (200 OK)
{
  "value": 110,
  "type": "supplies",
  "id": "3e0a2045-6c9e-453f-b463-3e0158ec5370|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Oauth accounts

Update Variable Expense

PUT /accounts/{accountId}/expenses-variable/{expenseId}

Expense-Variable

accountId

The unique identifier of the account

type
integer
in
path
expenseId

The unique identifier of the expense - variable

type
string
in
path
Request Example
{
  "value": 110,
  "type": "supplies"
}

Updated successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "value": 110,
  "type": "supplies"
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Delete Variable Expense

DELETE /accounts/{accountId}/expenses-variable/{expenseId}
accountId

The unique identifier of the account

type
integer
in
path
expenseId

The unique identifier of the expense - variable

type
string
in
path
204 No Content

Removed successfully

Oauth accounts

Get Family Members

GET /accounts/{accountId}/family
accountId

The unique identifier of the account

type
integer
in
path
200 OK

List of Account Family Members

Response Example (200 OK)
{
  "items": {
    "relationship": "child",
    "first_name": "David",
    "middle_initial": "C",
    "last_name": "Doe",
    "gender": "male",
    "birth_date": "1998-01-01 00:00:00",
    "dependent": true,
    "email": "david.doe@precisefp.com",
    "phone": "+1 555666777",
    "college_type": "public",
    "college_start": 2016,
    "college_end": 2020,
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
  }
}
Oauth accounts

Create Family Member

POST /accounts/{accountId}/family

Account family member

accountId

The unique identifier of the account

type
integer
in
path
Request Example
{
  "relationship": "child",
  "first_name": "David",
  "middle_initial": "C",
  "last_name": "Doe",
  "gender": "male",
  "birth_date": "1998-01-01 00:00:00",
  "dependent": true,
  "email": "david.doe@precisefp.com",
  "phone": "+1 555666777",
  "college_type": "public",
  "college_start": 2016,
  "college_end": 2020
}
201 Created

Created successfully

422 Unprocessable Entity

Validation error

500 Internal Server Error

Internal error

Response Example (201 Created)
{
  "relationship": "child",
  "first_name": "David",
  "middle_initial": "C",
  "last_name": "Doe",
  "gender": "male",
  "birth_date": "1998-01-01 00:00:00",
  "dependent": true,
  "email": "david.doe@precisefp.com",
  "phone": "+1 555666777",
  "college_type": "public",
  "college_start": 2016,
  "college_end": 2020,
  "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Response Example (422 Unprocessable Entity)
{
  "status": "error",
  "code": 422,
  "messages": [
    "first_name is required.",
    "last_name is required.",
    "relationship is required."
  ]
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Get Family Member

GET /accounts/{accountId}/family/{familyMemberId}
accountId

The unique identifier of the account

type
integer
in
path
familyMemberId

The unique identifier of the family member

type
string
in
path
200 OK

Account Family Member Item

404 Not Found

Not found

Response Example (200 OK)
{
  "relationship": "child",
  "first_name": "David",
  "middle_initial": "C",
  "last_name": "Doe",
  "gender": "male",
  "birth_date": "1998-01-01 00:00:00",
  "dependent": true,
  "email": "david.doe@precisefp.com",
  "phone": "+1 555666777",
  "college_type": "public",
  "college_start": 2016,
  "college_end": 2020,
  "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Oauth accounts

Update Family Member

PUT /accounts/{accountId}/family/{familyMemberId}

Account family member

accountId

The unique identifier of the account

type
integer
in
path
familyMemberId

The unique identifier of the family member

type
string
in
path
Request Example
{
  "relationship": "child",
  "first_name": "David",
  "middle_initial": "C",
  "last_name": "Doe",
  "gender": "male",
  "birth_date": "1998-01-01 00:00:00",
  "dependent": true,
  "email": "david.doe@precisefp.com",
  "phone": "+1 555666777",
  "college_type": "public",
  "college_start": 2016,
  "college_end": 2020
}
200 OK

Updated successfully

404 Not Found

Not found

422 Unprocessable Entity

Validation error

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "relationship": "child",
  "first_name": "David",
  "middle_initial": "C",
  "last_name": "Doe",
  "gender": "male",
  "birth_date": "1998-01-01 00:00:00",
  "dependent": true,
  "email": "david.doe@precisefp.com",
  "phone": "+1 555666777",
  "college_type": "public",
  "college_start": 2016,
  "college_end": 2020
}
Response Example (422 Unprocessable Entity)
{
  "status": "error",
  "code": 422,
  "messages": [
    "first_name is required.",
    "last_name is required."
  ]
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Delete Family Member

DELETE /accounts/{accountId}/family/{familyMemberId}
accountId

The unique identifier of the account

type
integer
in
path
familyMemberId

The unique identifier of the family member

type
string
in
path
204 No Content

Removed successfully

Oauth accounts

Get Goals

GET /accounts/{accountId}/goals
accountId

The unique identifier of the account

type
integer
in
path
200 OK

List of Goals

Response Example (200 OK)
[
  {
    "type": "business",
    "name": "New headquaters",
    "owner": {
      "id": null,
      "type": "client",
      "label": "John M Doe"
    },
    "beneficiary": {
      "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
      "type": "FamilyMember",
      "label": "David C Doe"
    },
    "priority": "medium",
    "frequency": "monthly",
    "id": "bd7511b8-0bd1-4280-8cd9-d1a53f7ee51c|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
  }
]
Oauth accounts

Create Goal

POST /accounts/{accountId}/goals

Goal

accountId

The unique identifier of the account

type
integer
in
path
Request Example
{
  "type": "business",
  "name": "New headquaters",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "priority": "medium",
  "frequency": "monthly"
}
201 Created

Created successfully

422 Unprocessable Entity

Validation error

500 Internal Server Error

Internal error

Response Example (201 Created)
{
  "type": "business",
  "name": "New headquaters",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "priority": "medium",
  "frequency": "monthly",
  "id": "bd7511b8-0bd1-4280-8cd9-d1a53f7ee51c|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Response Example (422 Unprocessable Entity)
{
  "status": "error",
  "code": 422,
  "messages": [
    "name is required.",
    "owner is required.",
    "type is required.",
    "target is required."
  ]
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Get Goal

GET /accounts/{accountId}/goals/{goalId}
accountId

The unique identifier of the account

type
integer
in
path
goalId

The unique identifier of the goal

type
string
in
path
200 OK

Goal

404 Not Found

Not found

Response Example (200 OK)
{
  "type": "business",
  "name": "New headquaters",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "priority": "medium",
  "frequency": "monthly",
  "id": "bd7511b8-0bd1-4280-8cd9-d1a53f7ee51c|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Oauth accounts

Update Goal

PUT /accounts/{accountId}/goals/{goalId}

Goal data

accountId

The unique identifier of the account

type
integer
in
path
goalId

The unique identifier of the goal

type
string
in
path
Request Example
{
  "type": "business",
  "name": "New headquaters",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "priority": "medium",
  "frequency": "monthly"
}
200 OK

Item created successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "type": "business",
  "name": "New headquaters",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "priority": "medium",
  "frequency": "monthly"
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Delete Goal

DELETE /accounts/{accountId}/goals/{goalId}
accountId

The unique identifier of the account

type
integer
in
path
goalId

The unique identifier of the goal

type
string
in
path
204 No Content

Removed successfully

Oauth accounts

Get Income

GET /accounts/{accountId}/{client}/income
accountId

The unique identifier of the account

type
integer
in
path
client

Client or Co-client

type
string , x ∈ { client , coclient }
in
path
200 OK

Income

Response Example (200 OK)
{
  "employment": 135000,
  "self_employment": 29500,
  "annuities": 3700,
  "social_security": 3500,
  "dividends": 2600,
  "interest": 1860,
  "other": 2300,
  "comments": "Lorem ipsum dolor sit amet."
}
Oauth accounts

Update Income

POST /accounts/{accountId}/{client}/income

Income

accountId

The unique identifier of the account

type
integer
in
path
client

Client or Co-client

type
string , x ∈ { client , coclient }
in
path
Request Example
{
  "employment": 135000,
  "self_employment": 29500,
  "annuities": 3700,
  "social_security": 3500,
  "dividends": 2600,
  "interest": 1860,
  "other": 2300,
  "comments": "Lorem ipsum dolor sit amet."
}
201 Created

Updated successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (201 Created)
{
  "employment": 135000,
  "self_employment": 29500,
  "annuities": 3700,
  "social_security": 3500,
  "dividends": 2600,
  "interest": 1860,
  "other": 2300,
  "comments": "Lorem ipsum dolor sit amet."
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Get Insurance Policies

GET /accounts/{accountId}/insurance
accountId

The unique identifier of the account

type
integer
in
path
200 OK

List of insurance policies

Response Example (200 OK)
[
  {
    "type": "universal",
    "name": "Joe's universal insurance",
    "provider": "InsurersUS",
    "owner": {
      "id": null,
      "type": "client",
      "label": "John M Doe"
    },
    "insured": {
      "id": null,
      "type": "client",
      "label": "John M Doe"
    },
    "primary_beneficiary": {
      "id": null,
      "type": "client",
      "label": "John M Doe"
    },
    "secondary_beneficiary": {
      "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
      "type": "FamilyMember",
      "label": "David C Doe"
    },
    "premium_value": 1100,
    "coverage_value": 500000,
    "cash_value": 48000,
    "id": "f5086bc5-80ee-414e-add8-e7df1e1a63de|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
  }
]
Oauth accounts

Create Insurance Policy

POST /accounts/{accountId}/insurance

Insurance Policy

accountId

The unique identifier of the account

type
integer
in
path
Request Example
{
  "type": "universal",
  "name": "Joe's universal insurance",
  "provider": "InsurersUS",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "insured": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "primary_beneficiary": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "secondary_beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "premium_value": 1100,
  "coverage_value": 500000,
  "cash_value": 48000
}
201 Created

Created successfully

422 Unprocessable Entity

Validation error

500 Internal Server Error

Internal error

Response Example (201 Created)
{
  "type": "universal",
  "name": "Joe's universal insurance",
  "provider": "InsurersUS",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "insured": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "primary_beneficiary": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "secondary_beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "premium_value": 1100,
  "coverage_value": 500000,
  "cash_value": 48000,
  "id": "f5086bc5-80ee-414e-add8-e7df1e1a63de|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Response Example (422 Unprocessable Entity)
{
  "status": "error",
  "code": 422,
  "messages": [
    "type is required.",
    "name is required.",
    "owner is required."
  ]
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Get Insurance Policy

GET /accounts/{accountId}/insurance/{insuranceId}
accountId

The unique identifier of the account

type
integer
in
path
insuranceId

The unique identifier of the insurance

type
string
in
path
200 OK

Insurance Policy

404 Not Found

Not found

Response Example (200 OK)
{
  "type": "universal",
  "name": "Joe's universal insurance",
  "provider": "InsurersUS",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "insured": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "primary_beneficiary": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "secondary_beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "premium_value": 1100,
  "coverage_value": 500000,
  "cash_value": 48000,
  "id": "438464cd-07da-480e-9385-c6f2e9389caa|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Oauth accounts

Update Insurance Policy

PUT /accounts/{accountId}/insurance/{insuranceId}

Insurance policy

accountId

The unique identifier of the account

type
integer
in
path
insuranceId

The unique identifier of the insurance

type
string
in
path
Request Example
{
  "type": "universal",
  "name": "Joe's universal insurance",
  "provider": "InsurersUS",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "insured": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "primary_beneficiary": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "secondary_beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "premium_value": 1100,
  "coverage_value": 500000,
  "cash_value": 48000
}
200 OK

Updated successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "type": "universal",
  "name": "Joe's universal insurance",
  "provider": "InsurersUS",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "insured": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "primary_beneficiary": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "secondary_beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "premium_value": 1100,
  "coverage_value": 500000,
  "cash_value": 48000
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Delete Insurance Policy

DELETE /accounts/{accountId}/insurance/{insuranceId}
accountId

The unique identifier of the account

type
integer
in
path
insuranceId

The unique identifier of the insurance

type
string
in
path
204 No Content

Removed successfully

Oauth accounts

Get Liabilities

GET /accounts/{accountId}/liabilities
accountId

The unique identifier of the account

type
integer
in
path
200 OK

List of liabilities

Response Example (200 OK)
[
  {
    "name": "Golden Credit",
    "owner": {
      "id": null,
      "type": "client",
      "label": "John M Doe"
    },
    "provider": "Bank of America",
    "type": "credit-card",
    "start_date": "2016-03-02",
    "end_date": "2021-06-09",
    "interest": 6,
    "original_value": 84000,
    "current_value": 56000,
    "cost_value": 11,
    "id": "6c775488-6285-4fa5-80cf-3fc19e517a05|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
  }
]
Oauth accounts

Create Liability

POST /accounts/{accountId}/liabilities

Liability

accountId

The unique identifier of the account

type
integer
in
path
Request Example
{
  "name": "Golden Credit",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "provider": "Bank of America",
  "type": "credit-card",
  "start_date": "2016-03-02",
  "end_date": "2021-06-09",
  "interest": 6,
  "original_value": 84000,
  "current_value": 56000,
  "cost_value": 11
}
201 Created

Created successfully

422 Unprocessable Entity

Validation error

500 Internal Server Error

Internal error

Response Example (201 Created)
{
  "name": "Golden Credit",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "provider": "Bank of America",
  "type": "credit-card",
  "start_date": "2016-03-02",
  "end_date": "2021-06-09",
  "interest": 6,
  "original_value": 84000,
  "current_value": 56000,
  "cost_value": 11,
  "id": "6c775488-6285-4fa5-80cf-3fc19e517a05|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Response Example (422 Unprocessable Entity)
{
  "status": "error",
  "code": 422,
  "messages": [
    "type is required.",
    "name is required.",
    "owner is required.",
    "current-value is required."
  ]
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Get Liability

GET /accounts/{accountId}/liabilities/{liabilityId}
accountId

The unique identifier of the account

type
integer
in
path
liabilityId

The unique identifier of the liability

type
string
in
path
200 OK

Liability

404 Not Found

Not found

Response Example (200 OK)
{
  "name": "Golden Credit",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "provider": "Bank of America",
  "type": "credit-card",
  "start_date": "2016-03-02",
  "end_date": "2021-06-09",
  "interest": 6,
  "original_value": 84000,
  "current_value": 56000,
  "cost_value": 11,
  "id": "6c775488-6285-4fa5-80cf-3fc19e517a05|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Oauth accounts

Update Liability

PUT /accounts/{accountId}/liabilities/{liabilityId}

Liability

accountId

The unique identifier of the account

type
integer
in
path
liabilityId

The unique identifier of the liability

type
string
in
path
Request Example
{
  "name": "Golden Credit",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "provider": "Bank of America",
  "type": "credit-card",
  "start_date": "2016-03-02",
  "end_date": "2021-06-09",
  "interest": 6,
  "original_value": 84000,
  "current_value": 56000,
  "cost_value": 11
}
200 OK

Created successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "name": "Golden Credit",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "provider": "Bank of America",
  "type": "credit-card",
  "start_date": "2016-03-02",
  "end_date": "2021-06-09",
  "interest": 6,
  "original_value": 84000,
  "current_value": 56000,
  "cost_value": 11
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Delete Liability

DELETE /accounts/{accountId}/liabilities/{liabilityId}
accountId

The unique identifier of the account

type
integer
in
path
liabilityId

The unique identifier of the liability

type
string
in
path
204 No Content

Removed successfully

Oauth accounts

Get Plans

GET /accounts/{accountId}/plans
accountId

The unique identifier of the account

type
integer
in
path
200 OK

List of Plans

Response Example (200 OK)
[
  {
    "name": "John's 401(k)",
    "type": "403b",
    "owner": "John Doe",
    "provider": "InsurancesUnited",
    "contribution_value": 412,
    "employer_contribution_value": 380,
    "current_value": 11200,
    "primary_beneficiary": {
      "id": null,
      "type": "client",
      "label": "John M Doe"
    },
    "secondary_beneficiary": {
      "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
      "type": "FamilyMember",
      "label": "David C Doe"
    },
    "id": "ddbbf2c5-0d98-4988-9924-91fe98e1537a|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
  }
]
Oauth accounts

Create Plan

POST /accounts/{accountId}/plans

Plan

accountId

The unique identifier of the account

type
integer
in
path
Request Example
{
  "name": "John's 401(k)",
  "type": "403b",
  "owner": "John Doe",
  "provider": "InsurancesUnited",
  "contribution_value": 412,
  "employer_contribution_value": 380,
  "current_value": 11200,
  "primary_beneficiary": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "secondary_beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  }
}
201 Created

Created successfully

422 Unprocessable Entity

Validation error

500 Internal Server Error

Internal error

Response Example (201 Created)
{
  "name": "John's 401(k)",
  "type": "403b",
  "owner": "John Doe",
  "provider": "InsurancesUnited",
  "contribution_value": 412,
  "employer_contribution_value": 380,
  "current_value": 11200,
  "primary_beneficiary": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "secondary_beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "id": "f5086bc5-80ee-414e-add8-e7df1e1a63de|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Response Example (422 Unprocessable Entity)
{
  "status": "error",
  "code": 422,
  "messages": [
    "type is required.",
    "name is required.",
    "owner is required.",
    "current-value is required."
  ]
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Get Plan

GET /accounts/{accountId}/plans/{planId}
accountId

The unique identifier of the account

type
integer
in
path
planId

The unique identifier of the plan

type
string
in
path
200 OK

Plan

404 Not Found

Not found

Response Example (200 OK)
{
  "name": "John's 401(k)",
  "type": "403b",
  "owner": "John Doe",
  "provider": "InsurancesUnited",
  "contribution_value": 412,
  "employer_contribution_value": 380,
  "current_value": 11200,
  "primary_beneficiary": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "secondary_beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "id": "ddbbf2c5-0d98-4988-9924-91fe98e1537a|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Oauth accounts

Update Plan

PUT /accounts/{accountId}/plans/{planId}

Plan

accountId

The unique identifier of the account

type
integer
in
path
planId

The unique identifier of the plan

type
string
in
path
Request Example
{
  "name": "John's 401(k)",
  "type": "403b",
  "owner": "John Doe",
  "provider": "InsurancesUnited",
  "contribution_value": 412,
  "employer_contribution_value": 380,
  "current_value": 11200,
  "primary_beneficiary": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "secondary_beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  }
}
200 OK

Updated successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "name": "John's 401(k)",
  "type": "403b",
  "owner": "John Doe",
  "provider": "InsurancesUnited",
  "contribution_value": 412,
  "employer_contribution_value": 380,
  "current_value": 11200,
  "primary_beneficiary": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "secondary_beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  }
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Delete Plan

DELETE /accounts/{accountId}/plans/{planId}
accountId

The unique identifier of the account

type
integer
in
path
planId

The unique identifier of the plan

type
string
in
path
204 No Content

Removed successfully

Oauth accounts

Get Taxables

GET /accounts/{accountId}/taxable
accountId

The unique identifier of the account

type
integer
in
path
200 OK

List of taxables

Response Example (200 OK)
[
  {
    "name": "John Doe's TIA",
    "provider": "ING",
    "owner": "John Doe",
    "cost_value": 10000,
    "current_value": 12000,
    "id": "d9ed7030-d766-41e2-bcd2-de0f507a128b|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
  }
]
Oauth accounts

Create Taxable

POST /accounts/{accountId}/taxable

Taxable

accountId

The unique identifier of the account

type
integer
in
path
Request Example
{
  "name": "John Doe's TIA",
  "provider": "ING",
  "owner": "John Doe",
  "cost_value": 10000,
  "current_value": 12000
}
201 Created

Created successfully

422 Unprocessable Entity

Validation error

500 Internal Server Error

Internal error

Response Example (201 Created)
{
  "name": "John Doe's TIA",
  "provider": "ING",
  "owner": "John Doe",
  "cost_value": 10000,
  "current_value": 12000,
  "id": "d9ed7030-d766-41e2-bcd2-de0f507a128b|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Response Example (422 Unprocessable Entity)
{
  "status": "error",
  "code": 422,
  "messages": [
    "name is required.",
    "owner is required.",
    "current-value is required."
  ]
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Get Taxable

GET /accounts/{accountId}/taxable/{taxableId}
accountId

The unique identifier of the account

type
integer
in
path
taxableId

The unique identifier of the taxable

type
string
in
path
200 OK

Taxable

404 Not Found

Not found

Response Example (200 OK)
{
  "name": "John Doe's TIA",
  "provider": "ING",
  "owner": "John Doe",
  "cost_value": 10000,
  "current_value": 12000,
  "id": "d9ed7030-d766-41e2-bcd2-de0f507a128b|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba"
}
Oauth accounts

Update Taxable

PUT /accounts/{accountId}/taxable/{taxableId}

Taxable

accountId

The unique identifier of the account

type
integer
in
path
taxableId

The unique identifier of the taxable

type
string
in
path
Request Example
{
  "name": "John Doe's TIA",
  "provider": "ING",
  "owner": "John Doe",
  "cost_value": 10000,
  "current_value": 12000
}
200 OK

Created successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "name": "John Doe's TIA",
  "provider": "ING",
  "owner": "John Doe",
  "cost_value": 10000,
  "current_value": 12000
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Delete Taxable

DELETE /accounts/{accountId}/taxable/{taxableId}
accountId

The unique identifier of the account

type
integer
in
path
taxableId

The unique identifier of the taxable

type
string
in
path
204 No Content

Removed successfully

Oauth accounts

Get Security

GET /accounts/{accountId}/{client}/security
accountId

The unique identifier of the account

type
integer
in
path
200 OK

Account security data

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "account_id": 100,
  "type": "client",
  "status": "ACTIVE",
  "pin": 642745
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Reset Security

POST /accounts/{accountId}/{client}/security/reset
AccountId

Unique identifier of the account

type
object
in
path
type

Type of account

type
object
in
path
200 OK

Reset successfully

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "account_id": 100,
  "type": "client",
  "status": "ACTIVE",
  "pin": 642745
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Definitions

Define Entity

GET /define/{entity}/{entityId}
entity

The object type.

type
string
in
query
entityId

The entity unique identifier.

type
string
in
query
200 OK

List of entity properties with schema definition

404 Not Found

Not found

500 Internal Server Error

Internal error

Response Example (200 OK)
{
  "name": {
    "type": "string",
    "read": true,
    "write": true,
    "required": true,
    "values": "null"
  },
  "provider": {
    "type": "string",
    "read": true,
    "write": true,
    "required": "boolean",
    "values": "null"
  },
  "owner": {
    "id": {
      "type": "string",
      "read": true,
      "write": true,
      "required": "boolean",
      "values": "null"
    },
    "type": {
      "type": "string",
      "read": true,
      "write": true,
      "required": "boolean",
      "values": "client,coclient,joint,children,grandchildren,Employment,FamilyMember,Insurance,Plan,Cash,Taxable,Annuity,Asset,Liability,ExpenseVariable,Goal,Contact,Document,Note"
    },
    "label": {
      "type": "string",
      "read": true,
      "write": "boolean",
      "required": "boolean",
      "values": "null"
    }
  },
  "current_value": {
    "value": {
      "type": "float",
      "read": true,
      "write": true,
      "required": "boolean",
      "values": "null"
    },
    "frequency": {
      "type": "string",
      "read": true,
      "write": true,
      "required": "boolean",
      "values": "one-time,monthly,yearly"
    }
  },
  "cost_value": {
    "value": {
      "type": "float",
      "read": true,
      "write": true,
      "required": "boolean",
      "values": "null"
    },
    "frequency": {
      "type": "string",
      "read": true,
      "write": true,
      "required": "boolean",
      "values": "one-time,monthly,yearly"
    }
  }
}
Response Example (500 Internal Server Error)
{
  "status": "error",
  "code": 500,
  "messages": "An unknown error as occurred."
}
Oauth accounts

Schema Definitions

Account: object

client: Account Member

Client primary information.

coclient: Account Member

Co-client primary information.

type: string , x ∈ { clients , prospects }

Type of account.

created_at: string

Timestamp when record was created. (read-only)

updated_at: string

Timestamp when record was last updated. (read-only)

Example
{
  "client": {
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@precisefp.com",
    "phone": "+1 5556667777",
    "status": "ACTIVE",
    "type": "CLIENT"
  },
  "coclient": {
    "first_name": "Jane",
    "last_name": "Doe",
    "email": "jane.doe@precisefp.com",
    "phone": "+1 555444333",
    "status": "NEW",
    "type": "COCLIENT"
  },
  "type": "clients",
  "created_at": "2017-01-01 12:00:00",
  "updated_at": "2017-01-01 13:00:00"
}

Account Member: object

Client/Co-client primary information.

first_name: string

First name of the client/co-client.

last_name: string

Last name of the client/co-client.

email: string

Valid email address for the client/co-client. (unique per account)

phone: string

Mobile phone including country code for the client/co-client.

status: string

Form access status of the client/co-client. (read-only)

type: string

Member type under the account. (read-only)

Example
{
  "first_name": "John",
  "last_name": "Doe",
  "email": "john.doe@precisefp.com",
  "phone": "+1 5556667777",
  "status": "ACTIVE",
  "type": "CLIENT"
}

Account Full Member: object

Client/Co-client full information.

first_name: string

First name of the client/co-client.

middle_initial: string

Middle initial of the client/co-client.

last_name: string

Last name of the client/co-client.

gender: string , x ∈ { male , female }

Gender of the client/co-client.

birth_date: string

Birthdate of the client/co-client.

marital_status: string , x ∈ { single , married , divorced , widowed , other , partner }

Marital situation of the client/co-client.

previous_marriages: integer

Number of previous marriages for the client/co-client.

citizenship: Address

Country from where the client/co-client is citizen in ISO Alpha-2 format.

email: string

Valid email address for the client/co-client. (unique per account)

phone: string

Mobile phone including country code for the client/co-client.

home_phone: string

Home phone including country code for the client/co-client.

work_phone: string

Work phone including country code for the client/co-client.

address: Address

Address for the client/co-client.

photo: File

Photo of the client/co-client.

risk_score: integer

Risk score for the client/co-client.

comments: string

Comments or notes for the client/co-client.

drivers_license: Driver's License

Driver's License information for the client/co-client.

Example
{
  "first_name": "John",
  "middle_initial": "M",
  "last_name": "Doe",
  "gender": "male",
  "birth_date": "1980-01-01 00:00:00",
  "marital_status": "married",
  "previous_marriages": "integer",
  "citizenship": {
    "country": "US"
  },
  "email": "john.doe@precisefp.com",
  "phone": "+1 5556667777",
  "home_phone": "+1 5557778888",
  "work_phone": "+1 5558888999",
  "address": {
    "line1": "Greenway street 56",
    "line2": " ",
    "city": "Beverly Hills",
    "state": "CA",
    "zip": "90210",
    "country": "US"
  },
  "photo": {
    "type": "image",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "image/jpg",
    "filesize": 46080,
    "filename": "photo.jpg"
  },
  "risk_score": 50.32,
  "comments": "Lorem ipsum dolor sit amet.",
  "drivers_license": {
    "number": "123456789",
    "issue_date": "2010-01-01 00:00:00",
    "expire_date": "2060-01-01 00:00:00",
    "jurisdiction": {
      "state": "CA",
      "country": "US"
    },
    "document": {
      "type": "document",
      "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
      "filetype": "application/pdf",
      "filesize": 46008,
      "filename": "scan.pdf"
    }
  }
}

Annuity: object

Annuity data

name: string

Name for the annuity account.

owner: Relation

Owner of the annuity.

provider: string

Provider of the annuity.

primary_beneficiary: Relation

Primary Beneficiary of the annuity.

secondary_beneficiary: Relation

Secondary Beneficiary of the annuity.

type: string , x ∈ { fixed , variable , indexed , pension }

Type of annuity.

contribution_value: Currency

Monthly contribution amount.

current_value: Currency

Current annuity value.

distribution_type: string , x ∈ { series-of-distributions , lump-sum }

How will this annuity be distributed.

distribution_value: Currency

Annuity distribution amount.

Example
{
  "name": "Life Annuity",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "provider": "AnnuityUS",
  "primary_beneficiary": {
    "id": null,
    "type": "coclient",
    "label": "Jane C Doe"
  },
  "secondary_beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "type": "fixed",
  "contribution_value": 1300,
  "current_value": 15000,
  "distribution_type": "lump-sum",
  "distribution_value": 500
}

Asset: object

Asset data

name: string

Title of the Asset.

type: string , x ∈ { primary-residence , secondary-residence , vehicle , collectible , other }

Type of the asset.

owner: Relation

Owner of the asset.

current_value: Currency

Total, current value of the asset.

original_value: Currency

Original value of the asset.

Example
{
  "name": "John's yacht",
  "type": "other",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "current_value": 87000,
  "original_value": 82000
}

Cash: object

Cash or cash equivalent data

name: string

Title of the object.

type: string , x ∈ { cash , checking , savings , money-market , cd , other }

Type of cash or cash equivalent.

provider: string

Name of the Provider.

owner: Relation

Owner of the cash or cash equivalent object

current_value: Currency

Total value of the object.

interest: float

Interest rate of the cash or cash equivalent.

end_date: string

Maturity date of the cash or cash equivalent.

Example
{
  "name": "Bank of America account",
  "type": "savings",
  "provider": "Bank of America",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "current_value": 40000,
  "interest": 7,
  "end_date": "2018-04-05"
}

Contact: object

Professionals contact data

type: string , x ∈ { accountant , attorney , broker , insurance-agent , tax-preparer , other }

Professional area of expertise

first_name: string

Name of the professional

last_name: string

Last name of the professional

email: string

Professional's email address

phone: string

Professional's phone number

company: string

Company name

Example
{
  "type": "attorney",
  "first_name": "William",
  "last_name": "Black",
  "email": "williamblack@precisefp.com",
  "phone": "+1 434623992",
  "company": "AttorneysUS"
}

Document: object

Uploaded documents

file: File
relation: Relation
Example
{
  "file": {
    "type": "image",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "image/jpg",
    "filesize": 46080,
    "filename": "photo.jpg"
  },
  "relation": {
    "type": "client",
    "id": "string, null",
    "label": "John M Doe"
  }
}

Employment: object

Employment data

employer: string

Name of the employer.

position: string

Position title.

duration: integer

Amount of years working on the position.

address: Address

Work place address.

salary: Currency

Annual salary.

comissions: integer

Annual value of bonuses and comissions.

document: Document
Example
{
  "employer": "Pete Smith Industries",
  "position": "Sales Manager",
  "duration": 8,
  "address": {
    "line1": "Greenway street 56",
    "line2": " ",
    "city": "Beverly Hills",
    "state": "CA",
    "zip": "90210",
    "country": "US"
  },
  "salary": 140000,
  "comissions": 11000,
  "document": {
    "type": "document",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "application/pdf",
    "filesize": 46008,
    "filename": "scan.pdf"
  }
}

Expense - Fixed: object

Fixed Expense values

rent: Currency

Monthly Rent Expense.

alimony: Currency

Monthly Alimony Expense.

child_support: Currency

Monthly Child Support Expense.

college: Currency

Monthly College Expense.

other_insurance: Currency

Monthly Expense on Other Insurance object.

life_insurance: Currency

Monthly Life Insurance Expense.

health_insurance: Currency

Monthly Health Insurance Expense.

disability_insurance: Currency

Monthly Disability Insurance Expense.

long_term_care_insurance: Currency

Monthly Long Term Care Insurance Expense.

homeowner_insurance: Currency

Monthly Homeowner Insurance Expense.

auto_insurance: Currency

Monthly Auto Insurance Expense.

umbrella_insurance: Currency

Monthly Umbrella Insurance Expense.

eo_malpractice_insurance: Currency

Monthly EO & Malpractice Insurance Expense.

college_plan: Currency

Monthly College Plan Expense.

annuity: Currency

Monthly Annuity Expense.

retirement_plan: Currency

Monthly Retirement Plan Expense.

credit_card: Currency

Monthly Credit Card Expense.

mortgage: Currency

Monthly Mortgage Expense.

loan: Currency

Monthly Loan Expense.

other: Currency

Monthly Other expenses.

Example
{
  "rent": 100,
  "alimony": 240,
  "child_support": 150,
  "college": 210,
  "other_insurance": 75,
  "life_insurance": 170,
  "health_insurance": 140,
  "disability_insurance": 99,
  "long_term_care_insurance": 105,
  "homeowner_insurance": 95,
  "auto_insurance": 80,
  "umbrella_insurance": 55,
  "eo_malpractice_insurance": 45,
  "college_plan": 115,
  "annuity": 65,
  "retirement_plan": 50,
  "credit_card": 11,
  "mortgage": 320,
  "loan": 199,
  "other": 35
}

Expense - Tax: object

Tax expense values

federal_income: Currency

Federal Income Tax Expense.

state_income: Currency

State Income Tax Expense.

fica: Currency

FICA Tax Expense.

real_estate: Currency

Real Estate tax expense.

other: Currency

Other tax expense.

Example
{
  "federal_income": 1250,
  "state_income": 999,
  "fica": 700,
  "real_estate": 888,
  "other": 525
}

Expense - Variable: object

Variable Expense Data

value: Currency

Variable Expense Value.

type: string , x ∈ { groceries , supplies , gas-electric , water-trash , cable-internet , phone-mobile , domestic-help , clothing , laundry-dry-cleaning , property-improvements , home-furnishings , pet-expenses , school-expenses , lunch-money , special-events , babysitting-day-care , gas-oil , repair-maintenance , parking-tolls , public-transport , personal-care , medica-dental , gym-membership , eating-out , entertainment , books-subscriptions , hobbies , vacations , gifts , charity , other }

Variable Expense type.

Example
{
  "value": 110,
  "type": "supplies"
}

Family Member: object

Family Member full information.

relationship: string , x ∈ { child , grandchild , other }

Relationship of the family member.

first_name: string

First name of the family member.

middle_initial: string

Middle initial of the family member.

last_name: string

Last name of the family member.

gender: string , x ∈ { male , female }

Gender of the family member.

birth_date: string

Birthdate of the family member.

dependent: boolean

Is the family member dependent.

email: string

Valid email address for the family member.

phone: string

Mobile phone including country code for the family member.

college_type: string , x ∈ { public , private }

College type for the family member.

college_start: integer

College start year for the family member.

college_end: integer

College end year for the family member.

Example
{
  "relationship": "child",
  "first_name": "David",
  "middle_initial": "C",
  "last_name": "Doe",
  "gender": "male",
  "birth_date": "1998-01-01 00:00:00",
  "dependent": true,
  "email": "david.doe@precisefp.com",
  "phone": "+1 555666777",
  "college_type": "public",
  "college_start": 2016,
  "college_end": 2020
}

Goal: object

Goals Data

type: string , x ∈ { travel , wedding , celebration , college , private-school , business , home , home-improvement , purchase , care , donation , bequest , other }

Type of a Goal.

name: string

Goal title.

owner: Relation

Owner of the goal.

beneficiary: #/definitons/Relation

Beneficiary of the goal.

priority: string , x ∈ { low , medium , high }

Goal Priority.

frequency: string , x ∈ { one-time , monthly , quarterly , annually }

Payment Frequency.

target: Target
Example
{
  "type": "business",
  "name": "New headquaters",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "priority": "medium",
  "frequency": "monthly"
}

Income: object

Income data

employment: Currency

Employment income.

self_employment: Currency

Self-employment income.

annuities: Currency

Income from annuities.

social_security: Currency

Income from social security.

dividends: Currency

Income from dividends.

interest: Currency

Interest income.

other: Currency

Other income.

comments: string

Comments for the Income section.

Example
{
  "employment": 135000,
  "self_employment": 29500,
  "annuities": 3700,
  "social_security": 3500,
  "dividends": 2600,
  "interest": 1860,
  "other": 2300,
  "comments": "Lorem ipsum dolor sit amet."
}

Insurance: object

Insurance data

type: string , x ∈ { term , whole , universal , variable , variable-universal , employer-term , health , disability , employer-disability , long-term-care , homeowner , auto , umbrella , eo-malpractice , other }

Insurance type.

name: string

Name of the Insurance.

provider: string

Insurance Provider name.

owner: Relation

Owner of the Insurance.

insured: Relation

Insured family member.

primary_beneficiary: Relation

Owner of the goal.

secondary_beneficiary: #/definitons/Relation

Beneficiary of the goal.

premium_value: Currency

Premium amount.

coverage_value: Currency

Coverage amount.

cash_value: Currency

Total cash value.

Example
{
  "type": "universal",
  "name": "Joe's universal insurance",
  "provider": "InsurersUS",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "insured": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "primary_beneficiary": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "secondary_beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  },
  "premium_value": 1100,
  "coverage_value": 500000,
  "cash_value": 48000
}

Liability: object

Liability Data

name: string

Liability title.

owner: Relation

Owner of the liability.

provider: string

Name of the Provider.

type: string , x ∈ { arm , fixed , int-only , auto , business , credit-line , personal , school , credit-card , other }

Liability Type.

start_date: string

Liability creation date.

end_date: string

End of Liablity date.

interest: float

Interest Rate value.

original_value: Currency

Original value of the Liability.

current_value: Currency

Current value of the Liability.

cost_value: Currency

Monthly Payment.

Example
{
  "name": "Golden Credit",
  "owner": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "provider": "Bank of America",
  "type": "credit-card",
  "start_date": "2016-03-02",
  "end_date": "2021-06-09",
  "interest": 6,
  "original_value": 84000,
  "current_value": 56000,
  "cost_value": 11
}

Note: object

Object instance that contains notes or comments for the Client/Co-client

note: string

Comments or notes for the client/co-client.

relation: #/definitons/Relation

parent object

Example
{
  "note": "Lorem ipsum dolor sit amet.",
  "relation": "Joe Doe"
}

Plan: object

Retirement Plans Data

name: string

Retirement Plan name.

type: string , x ∈ { 401k , roth401k , 403b , 457b , ira , roth-ira , simple-ira , sep-ira , college, other }

Retirement Plan type.

owner: Relation

Parent Object.

provider: string

Name of the Provider.

contribution_value: Currency

Contribution amount.

employer_contribution_value: Currency

Employer contribution amount.

current_value: Currency.

Current total value

primary_beneficiary: #/definitons/Relation

Primary Beneficiary of the retirement plan.

secondary_beneficiary: #/definitons/Relation

Secondary beneficiary of the retirement plan.

Example
{
  "name": "John's 401(k)",
  "type": "403b",
  "owner": "John Doe",
  "provider": "InsurancesUnited",
  "contribution_value": 412,
  "employer_contribution_value": 380,
  "current_value": 11200,
  "primary_beneficiary": {
    "id": null,
    "type": "client",
    "label": "John M Doe"
  },
  "secondary_beneficiary": {
    "id": "cc428cbc-400b-4022-9e1b-eec86ec11479|14fa1202-7cfc-461e-bf69-7a5a5b3b9bba",
    "type": "FamilyMember",
    "label": "David C Doe"
  }
}

Taxable: object

Taxable investment account data

name: string

Name of the Account.

provider: string

Provider name.

owner: #/definitons/Relation

Owner of a taxable investment account.

cost_value: Currency

Original value.

current_value: Currency

Current value.

Example
{
  "name": "John Doe's TIA",
  "provider": "ING",
  "owner": "John Doe",
  "cost_value": 10000,
  "current_value": 12000
}

Address: object

Address object composed by address line1, address line2, city, state, zip/postal code, and country.
All properties are optional and can be omitted from the Address.

line1: string

Address line 1. (optional)

line2: string

Address line 2. (optional)

city: string

City. (optional)

state: string

State. For US states, the state code is used. (optional)

zip: string

Zip code / Postal code. (optional)

country: string

Country in ISO Alpha-2 format. (optional)

Example
{
  "line1": "Greenway street 56",
  "line2": " ",
  "city": "Beverly Hills",
  "state": "CA",
  "zip": "90210",
  "country": "US"
}

Currency: object

Object representing a currency value.

value: float

Currency amount. (defaults to 0)

frequency: string , x ∈ { one-time , monthly , yearly }

Used to identify periodic (yearly, monthly) amounts. (optional, defaults to one-time)

Example
{
  "value": 1000.51,
  "frequency": "yearly"
}

Driver's License: object

Client/Co-client driver's license information object.

number: string

Driver's license number.

issue_date: string

Driver's license issue date.

expire_date: string

Driver's license expiration date.

jurisdiction: Address

Driver's license jurisdication state and country.

document: File

File containing a copy of the driver's license.

Example
{
  "number": "123456789",
  "issue_date": "2010-01-01 00:00:00",
  "expire_date": "2060-01-01 00:00:00",
  "jurisdiction": {
    "state": "CA",
    "country": "US"
  },
  "document": {
    "type": "document",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "application/pdf",
    "filesize": 46008,
    "filename": "scan.pdf"
  }
}

File: object

File object representing a document or image.

type: string , x ∈ { image , document }

Type of file.

url: string

Full url for the file.

filetype: string

Mime type of the file.

filesize: integer

Size of the file in KB.

filename: string

Original file name.

Example
{
  "type": "image",
  "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
  "filetype": "image/jpg",
  "filesize": 46080,
  "filename": "photo.jpg"
}

Relation: object

Relation object representing a relationship with a parent object.

type: string , x ∈ { client , coclient , joint , FamilyMember , Employment , Insurance , Plan , Cash , Taxable , Annuity , Asset , Liability , ExenseVariable , Goal , Contact , Document , Note }

Parent object for this relation.

id: string, null

Parent object unique identifier for this relation. (optional)

label: string

Parent object human readable name. (optional and read-only)

Example
{
  "type": "client",
  "id": "string, null",
  "label": "John M Doe"
}

User: object

User information

first_name: string

First name of the user.

last_name: string

Last name of the user.

email: string

Email address of the user.

phone: string

Phone number of the user including coutry code.

photo: File

Photo of the user.

company: string

Name of the user's company.

company_email: string

Email address of the user's company.

company_phone: string

Phone number of the user's company including country code.

company_logo: File

Logo of the user's company.

Example
{
  "first_name": "William",
  "last_name": "Black",
  "email": "williamblack@precisefp.com",
  "phone": "+1 996345132",
  "photo": {
    "type": "image",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "image/jpg",
    "filesize": 46080,
    "filename": "photo.jpg"
  },
  "company": "PreciseFP",
  "company_email": "company@precisefp.com",
  "company_phone": "+1 235762365",
  "company_logo": {
    "type": "image",
    "url": "https://four.precisefp.com/api/files/eyJwYXRoIjoiY29tcGFueS0xXC9hY2NvdW50c1wvZGF0YVwvYWNj",
    "filetype": "image/jpg",
    "filesize": 46080,
    "filename": "photo.jpg"
  }
}

Statistics: object

Statistical information

prospects: integer[]

Array with the number of prospects created per day.

clients: integer[]

Array with the number of clients created per day.

sent_forms: integer[]

Array with the number of sent forms per day.

closed_forms: integer[]

Array with the number of closed forms per day.

Example
{
  "prospects": [
    0,
    3,
    4,
    1,
    0,
    0,
    0
  ],
  "clients": [
    0,
    3,
    4,
    1,
    0,
    0,
    0
  ],
  "sent_forms": [
    0,
    3,
    4,
    1,
    0,
    0,
    0
  ],
  "closed_forms": [
    0,
    3,
    4,
    1,
    0,
    0,
    0
  ]
}

Activity: object

Activity information

id: integer

Unique identifier of the activity.

type: string , x ∈ { account.client.created , account.coclient.created , account.client.deleted , account.coclient.deleted , account.converted , account.member.blocked , account.members.switched , account.security.reset , account.currentdata.updated , form.sent , form.deleted , form.link , form.link.accessed , form.accessed , form.resent , form.closed , form.reminders.activated , form.reminders.deactivated , account.exported , account.imported }

Type of the activity.

icon: string

Icon name for the activity. ( Material Design Icons )

icon_color: string

Color class for the activity icon.

title: string

Title of the activity.

description: string

Description of the activity.

created_at: string

Timestamp when activity was created.

Example
{
  "id": 4567,
  "type": "account.currentdata.updated",
  "icon": "person",
  "icon_color": "orange",
  "title": "Client data updated.",
  "description": "By William Black 6 hours ago.",
  "created_at": "2017-01-01 12:00:00"
}

Template: object

Form template object

key: string

Unique key of the form.

type: string

Type of the template

title: string

Title of the template

description: string

Description of the template

status: string

Status of the template

modified: boolean

Information whether the object was modified

default: boolean

Information whether the object is a default form

tags: string[]

Array with report tags.

Example
{
  "key": "283b78e7-66c2-4aae-8ffb-307dcd1797e4",
  "type": "passwordless",
  "title": "Financial Profile 2",
  "description": "Default Financial Profile form",
  "status": "published",
  "modified": true,
  "default": true,
  "tags": [
    "Default",
    "PreciseFP",
    "Checklist"
  ]
}

Form: object

Live Form object

account_id: integer

Unique identifier of the account.

key: string

Unique identifier of the form.

definition_key: string
status: string , x ∈ { CLOSED , IN_PROGRESS , NEW }

Status of the form.

template: Template
recipients: [object Object][]

Array with a recipient data.

created_at: string

Timestamp when the form was created.

updated_at: string

Timestamp when the form was updated.

opened_at: string

Timestamp when the form was opened.

reminded_at: string

Timestamp when the reminder was sent.

closed_at: string

Timestamp when the form was closed.

urls: string

Form URLs

Example
{
  "account_id": 185,
  "key": "283b78e7-66c2-4aae-8ffb-307dcd1797e4",
  "definition_key": "b59be93a-91eb-41a0-b869-0eedd4d89fe1",
  "status": "CLOSED",
  "template": {
    "key": "283b78e7-66c2-4aae-8ffb-307dcd1797e4",
    "type": "passwordless",
    "title": "Financial Profile 2",
    "description": "Default Financial Profile form",
    "status": "published",
    "modified": true,
    "default": true,
    "tags": [
      "Default",
      "PreciseFP",
      "Checklist"
    ]
  },
  "recipients": [
    [
      "client",
      "John Doe"
    ]
  ],
  "created_at": "2017-02-02 12:00:00",
  "updated_at": "2017-03-03 12:00:00",
  "opened_at": "2017-04-04 12:00:00",
  "reminded_at": "2017-04-05 12:00:00",
  "closed_at": "2017-05-06 12:00:00",
  "urls": "https://four.precisefp.com/api/forms/preview/sBqX2r8fVIgqG1EHhTtOe0"
}

Report: object

Report object

key: string

Unique identifier of the report.

type: string , x ∈ { FORMDEFINITION , DATADEFINITION }

Type of the report.

source: string

Unique identifier of the source form.

title: string

Title of the report.

description: string

Description of the report.

created_at: string

Timestamp when the form was created.

updated_at: string

Timestamp when the form was updated.

tags: string[]

Array with report tags.

Example
{
  "key": "17270724-5880-4fbf-af3d-60aecd3c22af",
  "type": "FORMDEFINITION",
  "source": "34f7a42f-7923-4cd8-bd01-e82d344b5016",
  "title": "Client Survey Results",
  "description": "List of all answers from the Client Survey",
  "created_at": "2017-01-01 12:00:00",
  "updated_at": "2017-02-02 12:00:00",
  "tags": [
    "Survey",
    "PreciseFP"
  ]
}

Security: object

User Security information

account_id: integer

Unique identifier of an account

type: string , x ∈ { client , co-client }

Type of account.

status: string , x ∈ { BLOCKED , ACTIVE , NEW }

Account security status

pin: integer

Account security pin

Example
{
  "account_id": 100,
  "type": "client",
  "status": "ACTIVE",
  "pin": 642745
}