Sequence Diagrams

Carbon Footprinting

sequenceDiagram
  participant A as Your Server
  participant B as Cogo API

  A->>B: GET Stateless footprint and savings calculations
  Note over B: Calculate footprint, transactional and non-transactional savings based on the given transactions & responses and period
  B->>A: 200 response

  A->>B: GET List transaction categories
  Note over B: Retrieve latest categories from datapack
  B->>A: 200 response

  A->>B: POST Submit new transactions
  Note over B: Parse and validate transactions
  Note over B: Read user file
  Note over B: Perform top-up enrichment
  Note over B: Calculate carbon footprint & transactional savings
  Note over B: Insert new transactions, footprint, and savings
  Note over B: Save user file
  B->>A: 200 response

  A->>B: GET Query transactions
  Note over B: Read user file
  Note over B: Apply query parameters
  B->>A: 200 response

  A->>B: GET Query monthly totals
  Note over B: Read user file
  Note over B: Perform aggregation based on given params
  Note over B: Calculate recommended carbon budget based on users' recent transactions
  Note over B: Retrieve the user's budget histories
  B->>A: 200 response

  A->>B: GET Query totals
  Note over B: Read user file
  Note over B: Perform aggregation based on given params
  Note over B: Calculate recommended carbon budget based on users' recent transactions
  Note over B: Retrieve the user's budget histories
  B->>A: 200 response

Quantified Climate Actions

sequenceDiagram
  participant A as Your Server
  participant B as Cogo API

  A->>B: GET List questions
  Note over B: retrieve latest questions from datapack
  B->>A: 200 response

  A->>B: GET List actions
  Note over B: retrieve latest actions, including required & optional questions, from datapack
  B->>A: 200 response

  A->>B: PUT Create/Update responses
  Note over B: Parse and validate responses
  Note over B: Read user file
  Note over B: Merge new and existing responses
  Note over B: Find transactions impacted by the updated responses
  Note over B: Recalculate carbon footprint & transactional savings
  Note over B: Insert impacted transactions, footprint, and savings
  Note over B: Save user file
  B->>A: 200 response

  A->>B: GET Query responses
  Note over B: Read user file
  Note over B: Extract responses
  B->>A: 200 response

  A->>B: GET Query user actions
  Note over B: Read user file
  Note over B: Perform aggregation based on given params
  Note over B: Extract responses
  Note over B: Repeat aggregation for projected savings, based on the last 90 days
  Note over B: Load all actions and enrich with aggregation results
  B->>A: 200 response

  A->>B: GET Query non-transactional savings
  Note over B: Read user file
  Note over B: Retrieve user's responses
  Note over B: Calculate savings based on given period & responses
  B->>A: 200 response

Carbon Budgets

sequenceDiagram
  participant A as Your Server
  participant B as Cogo API

  A->>B: Set budget
  Note over B: Parse and validate budget
  Note over B: Read user file
  Note over B: Append new budget
  Note over B: Save user file
  B->>A: 200 response

  A->>B: GET Query budget
  Note over B: Read user file
  Note over B: Retrieve current budget
  Note over B: Calculate recommended carbon budget based on users' recent transactions
  B->>A: 200 response

  A->>B: GET Query streak length
  Note over B: Read user file
  Note over B: Load all user's transactions & budgets
  Note over B: Count consecutive months where user spends under that month's carbon budget
  B->>A: 200 response

Submitting and editing transactions

sequenceDiagram
  participant A as Your Server
  participant B as Cogo API

  A->>B: POST submit new transactions and ignore existing transactions
  Note over B: Parse and validate transactions
  Note over B: Read user file
  Note over B: Perform top-up enrichment
  Note over B: Calculate carbon footprint & transactional savings
  Note over B: Insert new transactions, footprint, and savings
  Note over B: Save user file
  B->>A: 200 response

  A->>B: PUT Submit new transactions and update existing transactions
  Note over B: Parse and validate transactions
  Note over B: Read user file
  Note over B: Perform top-up enrichment
  Note over B: Calculate carbon footprint & transactional savings
  Note over B: Upsert new transactions, footprint, and savings
  Note over B: Save user file
  B->>A: 200 response

  A->>B: PATCH Update existing transactions
  Note over B: Parse and validate transactions
  Note over B: Read user file
  Note over B: Extract all existing transactions
  Note over B: Merge new and existing transactions
  Note over B: Perform top-up enrichment
  Note over B: Recalculate carbon footprint & transactional savings
  Note over B: Insert updated transactions, footprint, and savings
  Note over B: Save user file
  B->>A: 200 response

  A->>B: PATCH Update transactions by query with a delta
  Note over B: Parse and validate query
  Note over B: Read user file
  Note over B: Retrieve transactions matching query
  Note over B: Apply delta to filtered transactions
  Note over B: Perform top-up enrichment
  Note over B: Recalculate carbon footprint & transactional savings
  Note over B: Insert updated transactions, footprint, and savings
  Note over B: Save user file
  B->>A: 200 response

User management

User creation is automatic. On every request, the API fetches the user file from storage. If no file exists, a new one is created.

sequenceDiagram
  participant A as Your Server
  participant B as Cogo API
  participant C as Storage

  A-->>B: Every request
  alt existing user
    B->>C: Read user file
    C->>B: User file
  else new user
    B->>C: Read user file
    C->>B: No user file found
    B->>C: Save blank user file
    C->>B: User file
  end
  Note over B: Process request...

All user data can be deleted with a single call.

sequenceDiagram
  participant A as Your Server
  participant B as Cogo API
  participant C as Storage

  A->>B: DELETE user
  B->>C: Delete user
  Note over C: Delete user file
  C->>B: File deleted
  B->>A: 200 response

User account management

sequenceDiagram
  participant A as Your Server
  participant B as Cogo API

  A->>B: GET Query user account
  Note over B: Read user file
  Note over B: Extract configuration for the requested account
  B->>A: 200 response

  A->>B: GET Query user accounts
  Note over B: Read user file
  Note over B: Extract configuration for all accounts
  B->>A: 200 response

  A->>B: PUT Update account configuration
  Note over B: Validate new configuration
  Note over B: Read user file
  Note over B: Update existing configuration
  Note over B: Save user file
  B->>A: 200 response