Overview
Improvers are workers who complete workflow steps and earn bounties. All improver endpoints require authentication and the improver role (or admin override).Authentication
All endpoints use thewithImprover middleware which:
- Requires a valid JWT token with
userDidin context - Checks if user has improver role via
IsImprover() - Admin users automatically bypass role checks
Request Improver Status
POST /improvers/request
Request improver status for authenticated user. Request Body400: Missing fields, invalid email, or email not verified409: User already has approved improver status
Workflow Discovery
GET /improvers/workflows
Get all workflows available to the improver based on their credentials. Filtering Logic:- Shows workflows where improver:
- Has claimed at least one step
- Is the manager
- Qualifies as manager (has required credentials)
- Has credentials matching available unclaimed steps
GET /improvers/unpaid-workflows
Get workflows where improver has completed steps but hasn’t received payout yet. Response: 200 OK Returns array of workflows with improver’s completed but unpaid steps.Step Claiming and Execution
POST /improvers/workflows//steps//claim
Claim an available workflow step. Requirements:- Step status must be
available - Improver must have all required credentials for the step’s role
- Improver must not be in an absence period for this series/step
- For recurring workflows: checks for existing claims
400: Step not available, missing role, or no credential requirements defined403: Missing required credentials409: Step already claimed/assigned, or improver has active absence period404: Workflow or step not found
POST /improvers/workflows//steps//start
Start working on a claimed step (changes status fromavailable to in_progress).
Requirements:
- Step must be assigned to authenticated improver
- Workflow must be active
- Step must not already be completed
403: Step not assigned to user409: Step not available yet, workflow not active, or already completed
POST /improvers/workflows//steps//complete
Submit completion for a workflow step. Request Body- All non-optional work items must have responses
- Photo requirements must be met
- Dropdown selections must be valid
- Written responses required if specified
completed.
Side Effects:
- Next step in sequence becomes
available - Sends availability notifications to eligible improvers
- Sends email notifications if dropdown options have
notify_emails - Triggers payout processing if all steps complete
400: Missing required responses, invalid item IDs, duplicate items403: Step not assigned to user404: Workflow or step not found
POST /improvers/workflows//steps//payout-request
Request retry of a failed payout for a completed step. Response: 200 OK Returns updated workflow after retry attempt. Error Codes409: No failed payout found for this step
Recurring Workflow Management
GET /improvers/workflows/absence-periods
Get improver’s absence periods for recurring workflow series. Response: 200 OKPOST /improvers/workflows/absence-periods
Create an absence period to temporarily release a recurring claim. Request Body- Must have a claimed recurring workpiece for this series/step
- Date range must be valid (from < until, both in future)
- Cannot overlap with existing absence periods
400: Invalid dates, required fields missing, or overlapping periods409: No claimed recurring workpiece found
PUT /improvers/workflows/absence-periods/
Update an existing absence period. Request Body404: Absence period not found or not owned by improver400: Invalid date range or overlapping periods409: Another improver already claimed the workpiece
DELETE /improvers/workflows/absence-periods/
Delete an absence period. Response: 200 OK Error Codes404: Not found409: Another improver already claimed the released workpiece
POST /improvers/workflow-series/unclaim
Release a recurring workflow claim for a specific series and step. Request Body400: Invalid series_id or step_order409: No claimed recurring workpiece or no claimable assignments found
Rewards Account Management
PUT /improvers/primary-rewards-account
Update the Ethereum address for receiving bounty payouts. Request Body- Must be a valid Ethereum address
- Improver must be approved
400: Invalid Ethereum address or improver not approved404: Improver record not found
Credential Requests
GET /improvers/credential-requests
Get improver’s credential requests. Response: 200 OKPOST /improvers/credential-requests
Request a new credential. Request Body400: Invalid credential type404: Credential type not found409: Already have active credential or pending request
Step Status Flow
- locked: Previous step not yet completed
- available: Ready to be claimed
- in_progress: Claimed and started by an improver
- completed: Submission received, awaiting payout
- paid_out: Bounty sent to improver’s rewards account
Notes
- Workflows are filtered by credentials - improvers only see workflows with steps they qualify for
- Recurring workflows require claim management via absence periods or explicit unclaiming
- Submission data is only visible to assigned improver, supervisor, and admin
- Payout processing is triggered automatically after step completion
- Failed payouts can be retried via the payout-request endpoint