Early Access - The Dcycle CLI is currently available for enterprise customers.
Contact us to learn more about access.
Overview
Projects group sustainability work — carbon footprints, LCAs, ISO audits, and custom initiatives — with associated tasks, files, and deadlines. Each project has a type, date range, methodology, and a responsible user.
List Projects
Output:
Showing 3 project(s) in Acme Corp
550e8400-... | 2024 Carbon Footprint | carbon_footprint | start=2024-01-01 | end=2024-12-31 | due=2025-03-31
661f9511-... | Q1 LCA Analysis | acv | start=2024-01-01 | end=2024-03-31 | due=2024-06-30
772a0622-... | Supplier Audit 2024 | suppliers | start=2024-01-01 | end=2024-12-31 | due=2025-01-31
Flag Description --orgOrganization ID override
# JSON output for scripting
dcy project list --format json | jq '.[] | {id, name, project_type, due_date}'
# Use the ls alias
dcy project ls
Show Project Details
dcy project show < project-i d >
Output:
ID: 550e8400-e29b-41d4-a716-446655440000
Name: 2024 Carbon Footprint
Type: carbon_footprint
Start Date: 2024-01-01
End Date: 2024-12-31
Due Date: 2025-03-31
Description: Annual GHG inventory per GHG Protocol
Methodology: gri
Responsible: Jane Doe (jane@company.com)
Created: 2024-01-15
Create Project
dcy project create \
--name "2024 Carbon Footprint" \
--type carbon \
--start 2024-01-01 \
--end 2024-12-31 \
--due 2025-03-31
Create Flags
Flag Short Required Description --name-nYes Project name --type-tYes Project type (see table below) --start— Yes Start date (YYYY-MM-DD) --end— Yes End date (YYYY-MM-DD) --due— Yes Due date (YYYY-MM-DD) --description-dNo Project description --methodology-mNo esrs or gri--org— No Organization ID override
Project Types
Type Aliases Description carbon_footprintcarbonCarbon footprint (GHG inventory) custom— Custom project einf— EINF (non-financial reporting) iso_14064iso14064ISO 14064 audit iso_14001iso14001ISO 14001 (environmental management) iso_9001iso9001ISO 9001 (quality management) acvlcaLife Cycle Assessment visualizationvizData visualization project suppliers— Supplier sustainability logistics— Logistics project
# Create with methodology
dcy project create \
--name "EINF 2024" \
--type einf \
--start 2024-01-01 \
--end 2024-12-31 \
--due 2025-06-30 \
--methodology esrs \
--description "Annual EINF report following ESRS standards"
The responsible user is automatically set to the currently authenticated user. Use dcy project edit to change it afterward.
Edit Project
dcy project edit < project-i d > --name "Updated Name" --due 2025-06-30
Flag Short Description --name-nNew project name --description-dNew description --start— New start date (YYYY-MM-DD) --end— New end date (YYYY-MM-DD) --due— New due date (YYYY-MM-DD) --responsible— Responsible user UUID --org— Organization ID override
# Change responsible user
dcy project edit < project-i d > --responsible < user-i d >
# Extend deadline
dcy project edit < project-i d > --due 2025-09-30
Delete Project
# Interactive confirmation
dcy project delete < project-i d >
Confirmation prompt:
Delete project 2024 Carbon Footprint (550e8400-...)? [y/N]
Output:
project deleted successfully: 2024 Carbon Footprint
# Skip confirmation
dcy project delete < project-i d > --yes
Flag Short Default Description --yes-yfalseSkip confirmation prompt --org— — Organization ID override
Project Tasks
Tasks track individual work items within a project — data collection, reviews, approvals, and deadlines.
List Tasks
dcy project task list < project-i d >
Output:
Showing 4 task(s) for project 550e8400-...
abc123-... | Collect energy invoices | stage=completed | assigned=Jane Doe | due=2024-06-30
def456-... | Review vehicle data | stage=pending | assigned=John Smith| due=2024-07-15
ghi789-... | Upload purchase records | stage=pending | assigned=Alice Brown| due=2024-08-01
jkl012-... | Final review | stage=pending | assigned=Jane Doe | due=2025-03-15
Flag Description --orgOrganization ID override
Show Task Details
dcy project task show < task-i d >
Output:
ID: abc123-def456-...
Name: Collect energy invoices
Description: Gather all electricity and gas invoices for 2024
Stage: completed
Category: data-collection
Due Date: 2024-06-30
Assigned to: Jane Doe (jane@company.com)
Projects: 2024 Carbon Footprint
Create Task
dcy project task create < project-i d > \
--title "Collect energy invoices" \
--assigned-to < user-i d > \
--due 2024-06-30
Flag Short Required Default Description --title-tYes — Task title --assigned-to-aYes — User UUID to assign the task to --description-dNo — Task description --due— No — Due date (YYYY-MM-DD) --stage— No pendingInitial task stage --category— No — Task category --org— No — Organization ID override
Edit Task
dcy project task edit < task-i d > --stage completed
Flag Short Description --title-tNew title --description-dNew description --assigned-to-aNew assigned user UUID --due— New due date (YYYY-MM-DD) --stage— New stage --category— New category --parent-task-id— Set parent task UUID --update-children— Move eligible child tasks when completing a parent --org— Organization ID override
# Complete a task and cascade to subtasks
dcy project task edit < task-i d > --stage completed --update-children
# Reassign
dcy project task edit < task-i d > --assigned-to < new-user-i d >
# Make it a subtask
dcy project task edit < task-i d > --parent-task-id < parent-i d >
Delete Task
# Interactive confirmation
dcy project task delete < task-i d >
Confirmation prompt:
Delete task Collect energy invoices (abc123-...)? [y/N]
Output:
task deleted successfully: Collect energy invoices
# Skip confirmation
dcy project task delete < task-i d > --yes
Flag Short Default Description --yes-yfalseSkip confirmation prompt --org— — Organization ID override
Typical Workflows
# 1. Create the project
PROJECT = $( dcy project create \
--name "2024 Carbon Footprint" \
--type carbon \
--start 2024-01-01 \
--end 2024-12-31 \
--due 2025-03-31 \
--methodology gri \
--format json | jq -r '.id' )
echo "Project: $PROJECT "
# 2. Create tasks for each data source
for task in "Collect energy invoices" "Upload vehicle data" "Send mobility surveys" "Review purchases" ; do
dcy project task create " $PROJECT " \
--title " $task " \
--assigned-to < user-i d > \
--due 2025-02-28
done
# 3. Upload related files
dcy file upload ./invoices.pdf --project-id " $PROJECT "
Track Task Progress
# List pending tasks
dcy project task list < project-i d > --format json \
| jq '.[] | select(.stage == "pending") | {id, title: (.name // .title), due_date}'
# Mark task as completed
dcy project task edit < task-i d > --stage completed
# Check remaining tasks
dcy project task list < project-i d >
Audit Projects Across Organizations
# List projects in a subsidiary
dcy project list --org < subsidiary-org-i d > --format json \
| jq '.[] | {name, project_type, due_date}'
Count Tasks by Stage
# Summary of task progress
dcy project task list < project-i d > --format json | \
jq 'group_by(.stage // .status) | map({stage: .[0].stage // .[0].status, count: length})'
Find Overdue Tasks
# Tasks past their due date
dcy project task list < project-i d > --format json | \
jq '.[] | select(.due_date < "2025-01-01" and (.stage == "pending" or .status == "pending")) | {title: (.name // .title), due_date}'
JSON Response Examples
Project
{
"id" : "550e8400-e29b-41d4-a716-446655440000" ,
"name" : "2024 Carbon Footprint" ,
"project_type" : "carbon_footprint" ,
"start_date" : "2024-01-01" ,
"end_date" : "2024-12-31" ,
"due_date" : "2025-03-31" ,
"description" : "Annual GHG inventory" ,
"methodology" : "gri" ,
"responsible_user" : {
"first_name" : "Jane" ,
"last_name" : "Doe" ,
"email" : "jane@company.com"
},
"created_at" : "2024-01-15T10:30:00Z"
}
Task
{
"id" : "abc123-def456-..." ,
"title" : "Collect energy invoices" ,
"name" : "Collect energy invoices" ,
"description" : "Gather all electricity and gas invoices" ,
"stage" : "completed" ,
"status" : "completed" ,
"category" : "data-collection" ,
"due_date" : "2024-06-30" ,
"assigned_to" : {
"first_name" : "Jane" ,
"last_name" : "Doe" ,
"email" : "jane@company.com"
},
"projects" : [
{ "name" : "2024 Carbon Footprint" }
]
}
Tasks have both title and name fields (they may differ), and both stage and status fields. In jq filters, use (.name // .title) and (.stage // .status) to handle both.
Aliases
The list subcommand supports ls as a short alias:
dcy project ls # same as dcy project list
Next Steps
Files Upload documents and link them to projects
Invoices Manage energy invoices for Scope 1 and Scope 2 emissions
Members Find user IDs for task assignments
Configuration Set up environments and API keys
MCP Tools Query projects from AI assistants via MCP