The Float API allows you to import projects and save you a whole lot of double entry.

In this tutorial we’ll cover:

Importing a project and assigning them a client

Note: If you use an existing service, such as Basecamp or Asana, you may also want to consider using Zapier to keep your projects in sync with Float.

To add a project, you’ll just need to give it a name. It’s the only mandatory field we require. For example:

POST /v3/projects HTTP/1.1
Host: https://api.float.com 

{"name": "Project One"}

If the submission is successful, then you will receive a 201 Created response with a representation of the project you just created:

HTTP/1.1 201 Created
Date: Thu, 01 Dec 2016 17:08:17 GMT
Location: https://api.float.com/v3/people/6
Content-Length: 303
Content-Type: application/json; charset=UTF-8

{

    "project_id": 1027707,
    "name": "Project One",
    "client_id": null,
    "color": null,
    "notes": null,
    "tags": [],
    "non_billable": null,
    "tentative": null,
    "active": null,
    "project_manager": null,
    "all_pms_schedule": null
    "created": "2017-11-11 06:19:23"
}

The Projects section in the API reference has full details of the available fields you can set for a project.

Selecting a project color & client

Each project has an associated color to make it easy to identify them on the schedule. By default, this is is blue. You can specify a custom color using hex codes (not sure which hex code to use? This site makes it easy: http://htmlcolorcodes.com). Here’s an example of a red color:

"color": "FF2D00",

You can group the project with a client assuming you know the client ID (if you’re not sure how to find this, check out our Clients section). Identify the client ID and assign it to the project, e.g.

"client_id": "212",

Putting these together, you can update your project using a PATCH request:

PATCH /v3/projects/1234 HTTP/1.1
Host: https://api.float.com 

{
    "color": "FF2D00",
    "client_id": "212"
}

The API will respond with a 200 OK along with the representation.

Like people, projects can also have tags, useful for things like job codes that you may want to search for later. Project tags are lowercase and may have spaces in them. They can be added like so:

PATCH /v3/projects/1234 HTTP/1.1
Host: https://api.float.com 

{
    "tags": ["iphone app", "jobcode3456"]
}

Assigning a project manager

Each project is assigned a project manager. When a project is added via the API, by default the project manager is the account owner. You can modify this by specifying the account ID.

You can retreive the account ID from the /accounts end point like this:

GET /v3/accounts HTTP/1.1
Host: https://api.float.com 

The response is a list of accounts:

HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "account_id": 63686,
        "name": "John Smith",
        "email": "john@float.com",
        "account_type": 1,
        "department_filter_id": 11924,
        "active": 1,
        "created": "2017-09-09 01:21:44",
        "modified": "2017-12-15 21:24:44"
    },
    {
        "account_id": 63691,
        "name": "Donna Noble",
        "email": "donna@float.com",
        "account_type": 1,
        "department_filter_id": 0,
        "active": 1,
        "created": "2017-09-10 04:21:02",
        "modified": "2017-11-14 08:01:25"
    }
]

We want to assign Donna as the project manager, so we update the project like this:

PATCH /v3/projects/1234 HTTP/1.1
Host: https://api.float.com 

{
    "project_manager_id": 63691
}

If you’d like any project manager to have access to schedule the project mark it as all_pms_schedule:

PATCH /v3/projects/1234 HTTP/1.1
Host: https://api.float.com 

{
    "all_pms_schedule": "1"
}

Adding milestones

To add a milestone for the project, such as an important launch date, you’ll need to have added the project first (so you have the project ID). You can then create a milestone by POSTing to the /milestones endpoint. Let’s say you wanted to add a deadline for a website launch on December 1. You would specify:

POST /v3/milestones HTTP/1.1
Host: https://api.float.com 

{
    "project_id": 1,
    "name": "Launch website",
    "date": "2017-12-01",
    "end_date": "2017-12-02"
}