MARLO exposes a versioned REST API built on Spring MVC, running alongside the traditional Struts 2 web interface. All REST endpoints return JSON and accept JSON request bodies. The API covers the core research-output resources — publications, innovations, projects, and partner institutions — and is used by quality-assurance tooling, external data consumers, and the CGIAR reporting pipeline.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.
Base URL
All REST v2 endpoints share the following path prefix:Spring MVC vs Struts 2 boundary — MARLO runs two web frameworks side by side. Struts 2 handles all browser-facing page requests (URLs ending in
.do or .json) and is configured in struts.xml and the module-specific struts-*.xml files. Spring MVC handles everything under /api/*; those paths are excluded from Struts via struts.action.excludePattern. When building integrations, use /api/v2/controllist/... paths exclusively. Never call .do endpoints from external systems.API versioning
MARLO uses path-based versioning. The current stable version isv2. The version segment appears immediately after /api/:
/api/v3/... while v2 remains accessible. There is no header-based or query-string version negotiation.
Authentication
All endpoints require a valid QA token. Pass the token in theAuthorization header:
Response format
All responses areapplication/json. Successful responses return the resource object or a numeric ID for create/update operations.
Error response shape:
code field is a stable string code. The message field is human-readable and may change between releases.
OpenAPI / Swagger
MARLO uses the Springdoc OpenAPI library (Springfox@Api/@ApiOperation annotations in the source). The interactive Swagger UI is available at:
Available resource groups
Authentication
Obtain and use QA tokens to authenticate REST API requests.
Deliverables (Publications)
Create, read, update, and delete peer-reviewed publications and other deliverable types.
Innovations
Query and manage CRP innovation records, including scaling readiness and Sub-IDO linkages.
Projects
Look up MARLO project records by ID within a CGIAR entity.
Institutions
Browse partner institutions, submit new institution requests, and manage country office requests.
Other available controllers
The following additional Spring MVC controllers exist in thev2/controllist package. They follow the same authentication and response conventions described on this page.
| Controller | Tag / purpose |
|---|---|
ARControlLists | Annual report reference lists |
CrossCGIARCollaborations | Cross-CGIAR collaboration records |
ExpectedStudies | Outcome/Impact Case Reports (OICRs) |
Expenditures | W1/W2 financial expenditure data |
GeneralLists | Shared reference lists (countries, regions, etc.) |
ImpactPathway | Impact pathway and outcome data |
KeyExternalPartnership | Key external partnership entries |
ParticipantsCapDev | Capacity development participant records |
Policies | Policy research output records |
ProgressTowards | SRF progress-towards-target records |
ProjectPage | Aggregated project page data |
QAToken | Token issuance endpoint |
RelevantEvaluations | Relevant evaluation actions |
SrfLists | SRF reference lists (IDOs, Sub-IDOs, SLOs) |
StatusPlannedOutcomes | Planned outcome status records |
SubmissionToolsControlLists | Submission tool reference data |
Pagination, filtering, and phase selection
Most list endpoints require two query parameters that act as mandatory filters:| Parameter | Type | Description |
|---|---|---|
year | integer | The reporting year (e.g., 2023) |
phase | string | The reporting phase name. Valid values are AR (Annual Report) and POWB (Plan of Work and Budget) |