MARLO tracks research innovations in the “Table 4 - CRP Innovations” reporting section. An innovation record captures the stage of scaling reached, the organisations involved, geographic coverage, contributing milestones, and CGIAR Sub-IDO linkages. The innovations API exposes four endpoints for full CRUD access scoped to a CGIAR entity and reporting phase. All endpoints require a valid QA token. See Authentication for details.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/CCAFS/MARLO/llms.txt
Use this file to discover all available pages before exploring further.
List all innovations
Retrieve all innovations for a CGIAR entity within a reporting year and phase.Path parameters
Acronym of the CGIAR program, platform, or center (e.g.,
CCAFS).Query parameters
Reporting year (e.g.,
2023).Reporting phase:
AR (Annual Report) or POWB (Plan of Work and Budget).Response
Returns a JSON array ofProjectInnovationARDTO objects — a flattened summary representation used for Annual Report exports.
Internal MARLO innovation ID.
Name of the innovation.
ID of the associated MARLO project.
Reporting year.
Description of the innovation.
Description of the stage reached.
Count of individual improved lines/varieties (where applicable).
Free-text description when innovation type is “Other”.
List of organisation types that are the next users of this innovation.
List of geographic scope objects (global, regional, national, etc.).
List of region objects applicable when scope includes regional coverage.
List of country objects applicable when scope includes national coverage.
Whether this is an equitable effort across partners.
The lead organisation driving this stage of the innovation.
Up to five contributing organisations.
URL to supporting evidence.
Contributing CRPs or platforms.
Associated contributing milestones.
Linked CGIAR Sub-IDOs from the SRF framework.
Linked Outcome/Impact Case Reports (OICRs).
Get an innovation by ID
Retrieve a single innovation with full detail.Path parameters
CGIAR entity acronym.
MARLO innovation ID.
Query parameters
Reporting year.
Reporting phase (
AR or POWB).InnovationDTO object (same fields as the list response plus a nested project object with an id field). Returns 404 if not found.
Create an innovation
Create a new innovation record.FULL_CREATE_REST_API_PERMISSION.
Path parameters
CGIAR entity acronym.
Request body (NewInnovationDTO)
Name of the innovation.
Description of the innovation.
Project reference object. Provide
{ "id": <project-id> }.Stage of innovation reference. Provide
{ "id": <stage-id> }.Description of the stage reached.
Innovation type reference. Provide
{ "id": <type-id> }.Count of improved lines/varieties (where applicable).
Free-text description when innovation type is “Other”.
List of organisation type references.
List of geographic scope references.
List of region code references.
List of country code references.
Whether effort is equitable across partners.
Lead institution reference. Provide
{ "code": <institution-code> }.List of up to five contributing institution references.
URL to supporting evidence.
List of contributing CRP/platform references.
List of
NewMilestonesDTO references linking contributing milestones.List of
NewSrfSubIdoDTO references linking CGIAR Sub-IDOs.List of OICR identifier strings to link.
Long) of the newly created innovation.
Update an innovation
Update an existing innovation record.FULL_CREATE_REST_API_PERMISSION.
Path parameters
CGIAR entity acronym.
MARLO innovation ID to update.
Request body
Same fields asPOST /innovations (NewInnovationDTO). Supply all fields you want to retain.
Example:
Delete an innovation
Delete an innovation record by ID.FULL_READ_REST_API_PERMISSION.
Path parameters
CGIAR entity acronym.
MARLO innovation ID.
Query parameters
Reporting year.
Reporting phase (
AR or POWB).InnovationDTO object on success. Returns 404 if not found.
Common error codes
| HTTP status | Meaning |
|---|---|
200 | Success |
404 | Innovation not found for the given ID, entity, year, and phase |
401 | Missing or expired token |
403 | Token valid but insufficient permissions or wrong program scope |
400 | Request body validation failed |