Skip to main content
GET
https://api.dcycle.io
/
api
/
v1
/
custom_emission_groups
/
organization_emission_data
/
{organization_id}
Get Organization Emission Data
const options = {
  method: 'GET',
  headers: {
    'x-api-key': '<x-api-key>',
    'x-organization-id': '<x-organization-id>',
    'x-user-id': '<x-user-id>'
  }
};

fetch('https://api.dcycle.io/api/v1/custom_emission_groups/organization_emission_data/{organization_id}', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
{
  "page": 123,
  "size": 123,
  "total": 123,
  "items": [
    {}
  ]
}

Get Organization Emission Data

Retrieve all custom emission groups for an organization with all their emission factors included. This endpoint provides complete emission data in a single request.
This is the most comprehensive endpoint for custom emission data, returning groups with all their factors. Use this for data exports or complete inventory views.

Request

Headers

x-api-key
string
required
Your API key for authenticationExample: sk_live_1234567890abcdef
x-organization-id
string
required
Your organization UUIDExample: ff4adcc7-8172-45fe-9cf1-e90a6de53aa9
x-user-id
string
required
Your user UUIDExample: a1b2c3d4-e5f6-7890-abcd-ef1234567890

Path Parameters

organization_id
string
required
UUID of the organizationExample: "org-uuid-here"

Response

Returns paginated groups with all their emission factors included.
{
  "page": 1,
  "size": 50,
  "total": 2,
  "items": [
    {
      "group_name": "Supplier ABC Materials 2024",
      "group_id": "group-uuid-1",
      "category": "purchases",
      "description": "EPD-verified emission factors",
      "group_start_date": "2024-01-01",
      "group_end_date": "2024-12-31",
      "ghg_type": 1,
      "group_uploaded_by": "[email protected]",
      "emission_factors": [
        {
          "ef_name": "Recycled Aluminum - Supplier ABC",
          "factor_id": "factor-uuid-1",
          "tag": "advanced",
          "factor_start_date": "2024-01-01",
          "factor_end_date": "2024-12-31",
          "factor_uploaded_by": "[email protected]",
          "unit_id": "kg-unit-uuid",
          "unit": {
            "id": "kg-unit-uuid",
            "name": "kilogram",
            "abbreviation": "kg",
            "type": "mass"
          },
          "additional_docs": "EPD No. ABC-2024-001",
          "emission_factor_values": [
            {
              "gas_type": "CO2",
              "value": 2.15
            },
            {
              "gas_type": "CH4",
              "value": 0.008
            },
            {
              "gas_type": "N2O",
              "value": 0.002
            }
          ]
        }
      ]
    }
  ]
}

Example

curl "https://api.dcycle.io/api/v1/custom_emission_groups/organization_emission_data/${DCYCLE_ORG_ID}" \
  -H "Authorization: Bearer ${DCYCLE_API_KEY}" \
  -H "x-user-id: ${DCYCLE_USER_ID}"

Use Cases

Complete Data Export

Export all custom emission data for reporting:
all_data = []
page = 1

while True:
    response = requests.get(
        f"https://api.dcycle.io/api/v1/custom_emission_groups/organization_emission_data/{org_id}",
        headers=headers,
        params={"page": page, "size": 50}
    ).json()

    all_data.extend(response['items'])

    if len(all_data) >= response['total']:
        break

    page += 1

print(f"Exported {len(all_data)} groups")

# Convert to CSV or JSON for external use
import json
with open('custom_emission_data.json', 'w') as f:
    json.dump(all_data, f, indent=2)

Inventory Analysis

Analyze all custom emission factors:
data = requests.get(
    f"https://api.dcycle.io/api/v1/custom_emission_groups/organization_emission_data/{org_id}",
    headers=headers,
    params={"page": 1, "size": 100}
).json()

total_factors = 0
by_category = {"purchases": 0, "wastes": 0, "energy": 0}
by_tag = {"simple": 0, "advanced": 0}

for group in data['items']:
    category = group['category']
    by_category[category] += len(group['emission_factors'])
    total_factors += len(group['emission_factors'])

    for factor in group['emission_factors']:
        by_tag[factor['tag']] += 1

print(f"Custom Emission Factor Inventory:")
print(f"  Total factors: {total_factors}")
print(f"  By category:")
for cat, count in by_category.items():
    print(f"    {cat}: {count}")
print(f"  By complexity:")
for tag, count in by_tag.items():
    print(f"    {tag}: {count}")

Build Factor Selector

Create a comprehensive factor selection UI:
async function buildFactorSelector() {
  const data = await axios.get(
    `https://api.dcycle.io/api/v1/custom_emission_groups/organization_emission_data/${orgId}`,
    { headers }
  ).then(res => res.data);

  const factorsByCategory = {};

  data.items.forEach(group => {
    if (!factorsByCategory[group.category]) {
      factorsByCategory[group.category] = [];
    }

    group.emission_factors.forEach(factor => {
      factorsByCategory[group.category].push({
        value: factor.factor_id,
        label: `${factor.ef_name} (${factor.unit.abbreviation})`,
        group: group.group_name,
        uncertainty: factor.uncertainty_grade
      });
    });
  });

  return factorsByCategory;
}

// Usage
const factors = await buildFactorSelector();
// { purchases: [...], wastes: [...], energy: [...] }

Data Quality Report

Generate quality metrics for custom factors:
data = requests.get(
    f"https://api.dcycle.io/api/v1/custom_emission_groups/organization_emission_data/{org_id}",
    headers=headers,
    params={"page": 1, "size": 100}
).json()

high_uncertainty = []
missing_docs = []
expired = []

from datetime import date
today = date.today()

for group in data['items']:
    for factor in group['emission_factors']:
        # Check uncertainty
        if factor.get('uncertainty_grade', 0) > 50:
            high_uncertainty.append(factor['ef_name'])

        # Check documentation
        if not factor.get('additional_docs'):
            missing_docs.append(factor['ef_name'])

        # Check expiration
        if factor.get('factor_end_date'):
            end_date = date.fromisoformat(factor['factor_end_date'])
            if end_date < today:
                expired.append(factor['ef_name'])

print(f"Data Quality Report:")
print(f"  High uncertainty (>50%): {len(high_uncertainty)}")
print(f"  Missing documentation: {len(missing_docs)}")
print(f"  Expired factors: {len(expired)}")

Response Fields

page
integer
Current page number
size
integer
Items per page
total
integer
Total number of groups
items
array
Array of custom emission group objects with their factorsEach group contains:
  • group_name: Name of the group
  • group_id: UUID of the group
  • category: Category type
  • description: Group description
  • group_start_date: Optional validity start
  • group_end_date: Optional validity end
  • ghg_type: GHG origin type (1=fossil, 2=biogenic, 3=mixed)
  • group_uploaded_by: Optional uploader reference
  • emission_factors: Array of emission factor objects (with full details including unit info and gas values)