JSON Import/Export Format - Moved to JSON Data Format | Everdo Help
Backup you database before trying to import manually edited JSON. You could break the app by importing incomplete data, and you might not even know something is wrong until sync stops working or some weird bugs appear.
Getting Started
Make an export of your existing Everdo data to use it as an example while reading this document. This should help you understand the structure of the import objects and provide concrete examples.
Use UUID v4 for the id
field
When creating new items via import, you have to generate a random universally unique id
for each new item and tag. When there’s a collision, the import code silently overwrites the existing item. To avoid a collision, always use a random UUID (v4) generator when creating the import objects (unless you do want to update existing items).
List of fields using UUID data type
id
-
parent_id
(reference to the project’s/notebook’sid
) -
contact_id
(reference to the contact tag’sid
)
UUID Formating
id
, parent_id
and other UUID
fields need to be specified as an uppercase string without dashes, for example:
id: "709632E58EF74A55A18E9347F24ED948"
This is important. Other formats may cause issues.
Timestamps
All timestamps are integers, representing Unix time in seconds (Unix format). Millisecond timestamps will not work.
Root Object
The .json
file you’ll import must contain a single object with two array properties - tags
and items
. Each array may contain zero or more elements.
{
"items": [],
"tags": []
}
Partial import works - you only need to specify the items you wish to add or update. Import does not delete missing items or tags.
Item Object Structure
These fields are required for all items:
id
type
list
title
created_on
is_focused
-
start_date
orschedule
for scheduled items.
Please note:
- Some combinations of
list
andtype
are invalid. For example you can’t import an inbox project - Some
list
values require specifying additional fields. For example in a scheduled item you also need to specify a start date.
type
-
"a"
: action -
"p"
: project -
"n"
: note -
"l"
: notebook
list
- item state
-
"i"
: inbox (actions only) -
"a"
: active/next (based on item type) -
"m"
: someday -
"s"
: scheduled (must also specifystart_date
orschedule
field) -
"w"
: waiting -
"d"
: deleted -
"r"
: archived (must also specifycompleted_on
)
completed_on
Completion timestamp (see Timestamps for format description). Null/undefined for incomplete items. Not null for completed items.
created_on
Creation timestamp. Required.
is_focused
Values: 0
or 1
.
Warning: True
and False
will not work.
energy
Energy estimate.
Values: null
, 1
, 2
, 3
time
Time estimate.
Value: number of minutes
due_date
Optional due date.
The timestamp’s time must be set to 0 Hours, 0 Minutes, 0 Seconds.
start_date
For one-time scheduled items only.
The timestamp’s time must be set to 0 Hours, 0 Minutes, 0 Seconds.
schedule
For repeating items only. This is a complex object. Try exporting some pre-scheduled items to get an idea how it works.
recurrent_task_id
The “template” action that was used to create an instance of this specific repeating action.
contact_id
Optional contact tag to wait for. The value is tag id.
tags
An array of tag ids. Don’t pass whole objects here, only string IDs.
position_child
, position_parent
, position_focus
, position_global
Item’s position in a specific list:
- child: position in a list of all sub-items (project actions / notes)
- parent: position in a list of all parent items (projects/notebooks)
- focus: position in a global focus list
- global: position in a the list of all items
Examples
Examples shown here only specify all the required properties (apart from “note”, which is not required)
Inbox Action:
{
"id": "709632E58EF74A55A18E9347F24ED948" ,
"type": "a"
"title": "Example Inbox Action",
"list": "i",
"note": "optional description",
"created_on": 1549619289,
"is_focused" : 0
}
Active Project (empty)
{
"id": "B4F96775965F4F73A611365056301220" ,
"type": "p"
"title": "Example Project",
"list": "a",
"note": "optional description",
"created_on": 1549619289,
"is_focused" : 0
}
Active Project (empty)
{
"id": "709632E58EF74A55A18E9347F24ED948" ,
"type": "p"
"title": "Example Project",
"list": "a",
"note": "optional description",
"created_on": 1549619289,
"is_focused" : 0
}
Project action (active, focused)
{
"id": "B4F96775965F4F73A611365056301220" ,
"type": "a"
"list": "a",
"title": "Example Project Action",
"created_on": 1549619289,
"is_focused" : 1,
"parent_id": "709632E58EF74A55A18E9347F24ED948"
}
Tag (label) without color
{
"id": "709632E58EF74A55A18E9347F24ED948",
"title": "Example Tag",
"type": "l"
}
Ask Questions
This document only covers the very basics of Everdo JSON format. If something you need is not covered, please PM me on this forum with specific questions.