1. Giraffe → Internal: If a project is created/edited, the updated project will be sent to POST endpoint specified by the owning workspaces webhooks.

  2. Internal → Giraffe: Projects can be created or updated in Giraffe using the workspace access token (as mikey@giraffe.build for the token). An example script is attached.

    create_giraffe_project.py

In both cases the data is in the format, see the example script or the webhook bucket for details.

{
    "boundary": {
			// A <GeoJSON Feature>
			"type": "Feature",
			"properties": <JSON Properties eg "name", "internal-id">,
			"geometry": <Polygon>,
		}
}

Partial Patching

Often you will want to update a project property without wanting to overwrite for example the geometry which your internal system may not store. You could fetch the full project, change the property, then PUT back the full model, alternatively you can PATCH

requests.patch(f'{URL}/api/sync/project/{project_id}', headers=headers, json={
    'boundary': {
        'properties': {
            'units': 'feet'
        }
    }
})