Greenly Carbon Analytics API (1.5)

Download OpenAPI specification:Download

Introduction

The Greenly Carbon Analytics API is a set of RESTful services which enable the enrichment of bank transactions with carbon footprint analytics.

All request and response payloads, including errors, use the JSON naming convention.

2 API environments are available: a sandbox environment used to test the API capacities and your integration with these services and the production environment.

To have access to these environments, you will need to obtain API keys by contacting us at contact@greenly.earth.

The 2 environments are available at the following URL:

Getting Started

You can download our sample Postman requests at the following URL: http://offspend.github.io/PostmanRequests.zip

You then need to add your API key in the Greenly Sandbox API environment. After that, you should be able to create a user. Executing this Postman request will automatically set the latest created userId as a global env in your Postman environment. So after creating this user, you can directly try all the other requests including the Calculate Carbon Footprints one which will show you the carbon footprint analysis for a lot of different transactions.

Input Transaction Labels

The algorithm classifies transactions to providers and purchase categories so as to measure their carbon footprint based on their labels. In the best case, this label would consist only of the name of the recipient of the payment. Yet, in general, raw label contain overhead information, related in particular to the type of payment and the date of the transaction.

In the case where a cleaning of the overhead is done on the bank side, only the cleaned label should be transmitted to the API. If no cleaning is done or the cleaning is deemed to be too noisy or unreliable, raw labels can be also transmitted to the API.

Indeed, when a label is received, the classification algorithm looks for all common overhead patterns, such as “CB XXXXX”, “paiement par carte”, or “01/06/2020”, among many other overhead patterns.The classification algorithm removes all such patterns used by all banks that it was possible to enumerate during the R&D process. Yet, it is always possible that some patterns could not be found, or that the format evolves at some time. In that case, the cleaning of the pattern should either be done at the user side, or the user should contact the Greenly support team to ensure proper cleaning of the raw label and hence proper classification and estimation of the carbon footprint.

As a toy example, let us consider the following raw label to illustrate the allowed format: “paiement par carte super u 35 st jacques de 05/07”. Providing the “cleaned label” would be “super u 35 st jacques de“ or variations thereof, and as it can be observed the cleaned label does not need to be perfectly informative nor cleaned. As mentioned above, it is also possible to simply provide the raw label and the API will take care of removing the date and the overhead linked to card payment. Yet, it is not desired to provide both cleaned and raw labels using a separator (e.g. a new line ‘ ’ separator or other variations) as this would lead to degraded performances.

Authentication

api_key

Security Scheme Type API Key
Header parameter name: api-key

alternatives

Get all alternatives

Retrieve the details of all low-carbon alternatives, either advices or low-carbon provider.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get alternative

Retrieve the details of one low-carbon alternative, either advice or low-carbon provider.

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
Example
{
  • "recommendedProviders": [
    ],
  • "ratioEstimatedReduction": 0,
  • "sources": [
    ],
  • "description": {
    },
  • "geographicalRestriction": "GB",
  • "isProviderAlternative": true,
  • "id": "string"
}

offsetProjects

Get all offset projects

Retrieve the details of all offset projects

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get offset project

Retrieve the details of one offset project.

path Parameters
offsetProjectId
required
string

Responses

Response samples

Content type
application/json
Example
{
  • "remainingOffsetInTCO2eq": 0,
  • "totalOffsetInTCO2eq": 0,
  • "priceInEuroPerTCO2eq": 0,
  • "certificationsLogoURL": [
    ],
  • "certifications": [
    ],
  • "partnerLogoURL": "string",
  • "partner": "string",
  • "longDescription": {
    },
  • "shortHandDescription": {
    },
  • "location": "string",
  • "name": "string",
  • "id": "string"
}

Book offset project

Booking a quantity of CO2 equivalent to offset from an offset project

Request Body schema: application/json
email
string

(Optional) Email of the user carrying out the booking

bookedOffsetInTCO2eq
required
number <double>

Quantity of offsetting being booked (in TCO2eq)

offsetProjectId
required
string

Unique identifier of the chosen project

Responses

Request samples

Content type
application/json
{
  • "email": "string",
  • "bookedOffsetInTCO2eq": 0,
  • "offsetProjectId": "string"
}

Response samples

Content type
application/json
Example
{
  • "totalPrice": 0,
  • "bookingSuccessful": true
}

live

Service live state

Retrieves the live state of the service. Can be used for healthchecks. The endpoint will return a 200 OK (or 401) response when online.

Responses

ready

Service ready state

Retrieves the readiness state of the service. The service becomes ready when the startup has completed.

Responses

purchaseCategories

Get all purchase categories

Retrieve the details of all purchase categories.

query Parameters
countryId
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get purchase category

Retrieve the details of one purchase category.

path Parameters
purchaseCategoryId
required
string
query Parameters
countryId
string

Responses

Response samples

Content type
application/json
Example
{
  • "possibleTags": [
    ],
  • "translations": {
    },
  • "parentPurchaseCategory": "Transport",
  • "methodology": {
    },
  • "id": "string"
}

survey

Calculate survey result

Alpha Calculate the emissions in kg for each category based on a completed survey.

Request Body schema: application/json
yearlyIncome
required
integer <int32> >= 0

Annual income in Euros

diet
required
string (AcceptedDietAnswer)
Enum: "vegan" "vegetarian" "average" "whiteMeat" "redMeat" "normal" "meatLover" "noBeef"
numberOfShortFlightsLastYear
required
integer <int32> >= 0

Number of flights in the last year that were shorter than three hours

numberOfLongFlightsLastYear
required
integer <int32> >= 0

Number of flights taken in the last year that were longer than three hours

transportationMode
required
string (AcceptedVehicleAnswer)
Enum: "thermalCar" "hybridCar" "electricCar" "motorcycle" "bike" "electricMotorcycle" "bus" "train" "onFoot" "car" "none"
transportationDuration
required
integer <int32> >= 0

Average daily travel time (Round trip in min)

hasGasHeating
required
boolean

Uses gas heating

hasGreenElectricitySupplier
required
boolean

Has a green electricity provider

surfaceAreaOfHousing
required
integer <int32> >= 0

Surface area of the home (in m2)

numberOfPeopleLivingInHousing
required
integer <int32> >= 0

Count of people living in the home

countryCode
required
string (SurveyCountryCode)
Enum: "FR" "GB" "SE"

Responses

Request samples

Content type
application/json
{
  • "yearlyIncome": 40000,
  • "diet": "vegan",
  • "numberOfShortFlightsLastYear": 3,
  • "numberOfLongFlightsLastYear": 1,
  • "transportationMode": "thermalCar",
  • "transportationDuration": 60,
  • "hasGasHeating": true,
  • "hasGreenElectricitySupplier": true,
  • "surfaceAreaOfHousing": 60,
  • "numberOfPeopleLivingInHousing": 2,
  • "countryCode": "FR"
}

Response samples

Content type
application/json
{
  • "totalEmissionsInKg": 0,
  • "uncategorizedEmissionsInKg": 0,
  • "housingEmissionsInKg": 0,
  • "servicesEmissionsInKg": 0,
  • "shoppingEmissionsInKg": 0,
  • "foodEmissionsInKg": 0,
  • "transportEmissionsInKg": 0
}

Update user survey

Updates a user profile based on the survey responses and returns its yearly emissions.

path Parameters
userId
required
string
Request Body schema: application/json
yearlyIncome
required
integer <int32> >= 0

Annual income in Euros

diet
required
string (AcceptedDietAnswer)
Enum: "vegan" "vegetarian" "average" "whiteMeat" "redMeat" "normal" "meatLover" "noBeef"
numberOfShortFlightsLastYear
required
integer <int32> >= 0

Number of flights in the last year that were shorter than three hours

numberOfLongFlightsLastYear
required
integer <int32> >= 0

Number of flights taken in the last year that were longer than three hours

transportationMode
required
string (AcceptedVehicleAnswer)
Enum: "thermalCar" "hybridCar" "electricCar" "motorcycle" "bike" "electricMotorcycle" "bus" "train" "onFoot" "car" "none"
transportationDuration
required
integer <int32> >= 0

Average daily travel time (Round trip in min)

hasGasHeating
required
boolean

Uses gas heating

hasGreenElectricitySupplier
required
boolean

Has a green electricity provider

surfaceAreaOfHousing
required
integer <int32> >= 0

Surface area of the home (in m2)

numberOfPeopleLivingInHousing
required
integer <int32> >= 0

Count of people living in the home

countryCode
required
string (SurveyCountryCode)
Enum: "FR" "GB" "SE"

Responses

Request samples

Content type
application/json
{
  • "yearlyIncome": 40000,
  • "diet": "vegan",
  • "numberOfShortFlightsLastYear": 3,
  • "numberOfLongFlightsLastYear": 1,
  • "transportationMode": "thermalCar",
  • "transportationDuration": 60,
  • "hasGasHeating": true,
  • "hasGreenElectricitySupplier": true,
  • "surfaceAreaOfHousing": 60,
  • "numberOfPeopleLivingInHousing": 2,
  • "countryCode": "FR"
}

transactions

Calculate carbon footprints

Calculate the carbon footprints of the input transactions

Request Body schema: application/json
languages
Array of strings (Language)

languages requested for the methodologies. If no language is provided we use a default language based on the countryId of the transaction.

Items Enum: "en" "fr" "es" "it" "de" "da" "fi" "nl" "pl" "pt" "sv"
required
Array of objects (InputTransaction)

List of the user transactions.

userId
string

(Required) Id of the user owning the transactions. This field is mandatory in most cases.

Responses

Request samples

Content type
application/json
{
  • "languages": [
    ],
  • "transactions": [
    ],
  • "userId": "string"
}

Response samples

Content type
application/json
Example
[ ]

users

Create user

Create a user.

Responses

Response samples

Content type
application/json
{
  • "defaultTagValues": [
    ],
  • "userId": "string"
}

Update user

Update a user with new default tag values. All previous tag values are replaced (the two objects are not merged) so you must provide all tag values that apply to the user during each call.

path Parameters
userId
required
string
Request Body schema: application/json
required
Array of objects (TagValue)

Responses

Request samples

Content type
application/json
{
  • "defaultTagValues": [
    ]
}

Response samples

Content type
application/json
Example
{
  • "defaultTagValues": [
    ],
  • "userId": "string"
}

Get user

Retrieve user default tag values applied to all user transactions.

path Parameters
userId
required
string

Responses

Response samples

Content type
application/json
Example
{
  • "defaultTagValues": [
    ],
  • "userId": "string"
}

Delete user

Delete a user and all associated data. Warning: this operation is irreversible.

path Parameters
userId
required
string

Responses