Agrology Public API v2

The Agrology Public API v2 exposes site and node configuration, GeoJSON geometry, historical ground-truth sensor telemetry, historical and forecast weather service data, ML-derived synthetic microclimate metrics, microclimate predictions, customer alerts, report definitions and runs, library charts, dashboards, customer inputs and field experiments. All requests are authenticated with a Cognito-issued bearer JWT or an Agrology-issued x-api-key.

Operations 90

POST /feedback Submit Feedback to Agrology
GET /access
GET /metrics
GET /sites
GET /nodes
GET /geojson/sites
GET /geojson/site/{siteID}
GET /geojson/customer/{customerID}
GET /historical/ground-truth/metrics
GET /historical/ground-truth/device-types
GET /historical/ground-truth/{siteID}/{timeRange}
GET /historical/ground-truth/{siteID}/node/{nodeID}/{timeRange}
GET /historical/ground-truth/{siteID}/device/{deviceID}/{timeRange}
GET /historical/ground-truth/{siteID}/devices
GET /historical/weather/metrics
GET /historical/weather/{siteID}/{timeRange}
GET /historical/weather/{siteID}/node/{nodeID}/{timeRange}
GET /predictions/weather/metrics
GET /predictions/weather/{siteID}
GET /predictions/weather/{siteID}/node/{nodeID}
GET /predictions/weather/{siteID}/{timeRange}
GET /predictions/weather/{siteID}/node/{nodeID}/{timeRange}
GET /predictions/microclimate/metrics
GET /predictions/microclimate/{siteID}
GET /predictions/microclimate/{siteID}/node/{nodeID}
GET /predictions/microclimate/{siteID}/{timeRange}
GET /predictions/microclimate/{siteID}/node/{nodeID}/{timeRange}
GET /summaries/microclimate/customer/{customerID}
GET /synthetics/microclimate/metrics
GET /synthetics/microclimate/{siteID}/{timeRange}
GET /synthetics/microclimate/{siteID}/node/{nodeID}/{timeRange}
GET /alerts/customer/{customerID} Lists alerts for a given customer
GET /fileserver/site/{siteID}
GET /fileserver/customer/{customerID}
GET /fileserver/customer/{customerID}/shared
PUT /report-definitions/{customerID}/{id} Update a specific ReportDefinition
DELETE /report-definitions/{customerID}/{id} Delete a specific ReportDefinition
GET /report-definitions/customer/{customerID} Lists ReportDefinitions whose CustomerID matches the provided value
POST /report-definitions/customer/{customerID} Create a new ReportDefinition
GET /report-runs/{customerID}/{id} Get info about a specific ReportRun
GET /report-runs/customer/{customerID} Lists ReportRuns whose CustomerID matches the provided value
POST /report-runs/customer/{customerID} Create a new ReportRun
GET /report-runs/report-definition-id/{customerID}/{reportDefinitionID} Lists ReportRuns whose ReportDefinitionID matches the provided value
GET /library-charts/{customerID}/{id} Get info about a specific LibraryChart #
PUT /library-charts/{customerID}/{id} Update a specific LibraryChart #
DELETE /library-charts/{customerID}/{id} Delete a specific LibraryChart #
GET /library-charts/customer/{customerID} Lists LibraryCharts whose CustomerID matches the provided value #
POST /library-charts/customer/{customerID} Create a new LibraryChart #
GET /experiments/{customerID}/{id} Get info about a specific Experiment
PUT /experiments/{customerID}/{id} Update a specific Experiment
DELETE /experiments/{customerID}/{id} Delete a specific Experiment
GET /experiments/customer/{customerID} Lists Experiments whose CustomerID matches the provided value
POST /experiments/customer/{customerID} Create a new Experiment
GET /experiments/groups/{customerID}/{experimentID}/{id} Get info about a specific ExperimentGroup
PUT /experiments/groups/{customerID}/{experimentID}/{id} Update a specific ExperimentGroup
DELETE /experiments/groups/{customerID}/{experimentID}/{id} Delete a specific ExperimentGroup
GET /experiments/groups/{customerID}/{experimentID} Lists ExperimentGroups whose ExperimentID matches the provided value
POST /experiments/groups/{customerID}/{experimentID} Create a new ExperimentGroup
GET /experiments/members/{customerID}/{experimentID}/{groupID}/{nodeID} Get info about a specific ExperimentMember
POST /experiments/members/{customerID}/{experimentID}/{groupID}/{nodeID} Create a new ExperimentMember
PUT /experiments/members/{customerID}/{experimentID}/{groupID}/{nodeID} Update a specific ExperimentMember
DELETE /experiments/members/{customerID}/{experimentID}/{groupID}/{nodeID} Delete a specific ExperimentMember
GET /experiments/members/{customerID}/group-id/{groupID} Lists ExperimentMembers whose GroupID matches the provided value
GET /experiments/members/{customerID}/node-id/{nodeID} Lists ExperimentMembers whose NodeID matches the provided value
GET /experiments/members/{customerID}/experiment-id/{experimentID} Lists ExperimentMembers whose ExperimentID matches the provided value
GET /experiments/metrics/{customerID}/{experimentID}/{id} Get info about a specific ExperimentMetric
PUT /experiments/metrics/{customerID}/{experimentID}/{id} Update a specific ExperimentMetric
DELETE /experiments/metrics/{customerID}/{experimentID}/{id} Delete a specific ExperimentMetric
GET /experiments/metrics/{customerID}/experiment-id/{experimentID} Lists ExperimentMetrics whose ExperimentID matches the provided value
POST /experiments/metrics/{customerID}/experiment-id/{experimentID} Create a new ExperimentMetric
GET /experiments/data/{customerID}/e/{experimentID}/{resolution}/{timeRange} Queries and returns Experiment time series data about this ExperimentID
GET /experiments/data/{customerID}/e/{experimentID}/g/{groupID}/{resolution}/{timeRange} Queries and returns Experiment time series data about this ExperimentID and GroupID
POST /experiments/data/{customerID}/e/{experimentID}/run requests the experiment data be re-run
POST /experiments/data/{customerID}/e/{experimentID}/regenerate requests the experiment data be fully regenerated
GET /dashboards/{owner}/{id} Get info about a specific Dashboard
PUT /dashboards/{owner}/{id} Update a specific Dashboard
DELETE /dashboards/{owner}/{id} Delete a specific Dashboard
POST /dashboards/{owner}/{id} Undelete a specific Dashboard
GET /dashboards/owner/{owner} Lists Dashboards whose Owner matches the provided value
POST /dashboards/owner/{owner} Create a new Dashboard
GET /dashboards/owner/{owner}/feature-id/{featureID} Lists Dashboards whose owner and FeatureID matches the provided value
GET /access/manage/{customerID} Lists users with access to this customer
POST /access/manage/{customerID}/{accessUser}/{accessLevel} grants access to accessUser for customerID
DELETE /access/manage/{customerID}/{accessUser} removes user access from this customerID
PUT /customer-inputs/{customerID}/{id} Update a specific CustomerInput
DELETE /customer-inputs/{customerID}/{id} Delete a specific CustomerInput
GET /customer-inputs/customer/{customerID} Lists CustomerInputs whose CustomerID matches the provided value
POST /customer-inputs/customer/{customerID} Create a new CustomerInput
GET /customer-inputs/customer/{customerID}/category/{category} Lists CustomerInputs whose CustomerID and Category match the provided values
GET /customer-inputs/categories Lists available categories for customer inputs

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/agrology-public-api-v2"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

agrology-public-api-openapi.yml Raw ↑
openapi: "3.0.1"
info:
  version: 1.0.0
  title: Agrology Public API v2
servers:
- url: https://api.agrology.ag/v2
paths:
  /feedback:
    post:
      summary: Submit Feedback to Agrology
      security:
      - publicApiAuthorizer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FeedbackSubmission'
      responses:
        "201":
          description: "201 Created response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Feedback
  /access:
    get:
      security:
      - publicApiAuthorizer: []
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - User
  /metrics:
    get:
      security:
      - publicApiAuthorizer: []
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Metrics
  /sites:
    get:
      security:
      - publicApiAuthorizer: []
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Topology
  /nodes:
    get:
      security:
      - publicApiAuthorizer: []
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Topology
  /geojson/sites:
    get:
      security:
      - publicApiAuthorizer: []
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Topology
  /geojson/site/{siteID}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "siteID"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Topology
  /geojson/customer/{customerID}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "customerID"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
      - Topology
  /historical/ground-truth/metrics:
    get:
      security:
      - publicApiAuthorizer: []
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Metrics
        - Ground Truth
        - Historical
        - Ground Truth / Historical
  /historical/ground-truth/device-types:
    get:
      security:
      - publicApiAuthorizer: []
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Ground Truth
        - Historical
        - Ground Truth / Historical
  /historical/ground-truth/{siteID}/{timeRange}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "siteID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "timeRange"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Ground Truth
        - Historical
        - Ground Truth / Historical
  /historical/ground-truth/{siteID}/node/{nodeID}/{timeRange}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "siteID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "nodeID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "timeRange"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Ground Truth
        - Historical
        - Ground Truth / Historical
  /historical/ground-truth/{siteID}/device/{deviceID}/{timeRange}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "siteID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "deviceID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "timeRange"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Ground Truth
        - Historical
        - Ground Truth / Historical
  /historical/ground-truth/{siteID}/devices:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "siteID"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Ground Truth
        - Historical
        - Ground Truth / Historical
  /historical/weather/metrics:
    get:
      security:
      - publicApiAuthorizer: []
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Metrics
        - Weather
        - Historical
        - Weather / Historical
  /historical/weather/{siteID}/{timeRange}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "siteID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "timeRange"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Weather
        - Historical
        - Weather / Historical
  /historical/weather/{siteID}/node/{nodeID}/{timeRange}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "siteID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "nodeID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "timeRange"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Weather
        - Historical
        - Weather / Historical
  /predictions/weather/metrics:
    get:
      security:
      - publicApiAuthorizer: []
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Metrics
        - Weather
        - Predictions
        - Weather / Predictions
  /predictions/weather/{siteID}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "siteID"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Weather
        - Predictions
        - Weather / Predictions
  /predictions/weather/{siteID}/node/{nodeID}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "siteID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "nodeID"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Weather
        - Predictions
        - Weather / Predictions
  /predictions/weather/{siteID}/{timeRange}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "siteID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "timeRange"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Weather
        - Predictions
        - Weather / Predictions
  /predictions/weather/{siteID}/node/{nodeID}/{timeRange}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "siteID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "nodeID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "timeRange"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Weather
        - Predictions
        - Weather / Predictions
  /predictions/microclimate/metrics:
    get:
      security:
      - publicApiAuthorizer: []
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Metrics
        - Microclimate
        - Predictions
        - Microclimate / Predictions
  /predictions/microclimate/{siteID}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "siteID"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Microclimate
        - Predictions
        - Microclimate / Predictions
  /predictions/microclimate/{siteID}/node/{nodeID}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "siteID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "nodeID"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Microclimate
        - Predictions
        - Microclimate / Predictions
  /predictions/microclimate/{siteID}/{timeRange}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "siteID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "timeRange"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Microclimate
        - Predictions
        - Microclimate / Predictions
  /predictions/microclimate/{siteID}/node/{nodeID}/{timeRange}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "siteID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "nodeID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "timeRange"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Microclimate
        - Predictions
        - Microclimate / Predictions
  /summaries/microclimate/customer/{customerID}:
    get:
      parameters:
      - name: customerID
        in: path
        required: true
        description: The CustomerID value of the ReportDefinition
        schema:
          type: string
      security:
      - publicApiAuthorizer: []
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Summary Data
        - Microclimate
        - Microclimate / Summary Data
  /synthetics/microclimate/metrics:
    get:
      security:
      - publicApiAuthorizer: []
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Metrics
        - Synthetics
        - Microclimate
        - Microclimate / Synthetics
  /synthetics/microclimate/{siteID}/{timeRange}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "siteID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "timeRange"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Synthetics
        - Microclimate
        - Microclimate / Synthetics
  /synthetics/microclimate/{siteID}/node/{nodeID}/{timeRange}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "siteID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "nodeID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "timeRange"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                type: string
      tags:
        - Synthetics
        - Microclimate
        - Microclimate / Synthetics
  /alerts/customer/{customerID}:
    get:
      summary: Lists alerts for a given customer
      tags:
        - Alerts
      parameters:
        - name: customerID
          in: path
          required: true
          description: The id of the Customer for which to retrieve alerts
          schema:
            type: string
      responses:
        "200":
          description: Expected response to a valid request
          content:
            application/json:
              schema:
                type: string
      security:
      - publicApiAuthorizer: []
  /fileserver/site/{siteID}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "siteID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "file"
        in: "query"
        required: true
        schema:
          type: "string"
      - name: "redirect"
        in: "query"
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PreSignedURLResponse"
      tags:
        - Files
  /fileserver/customer/{customerID}:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "customerID"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "file"
        in: "query"
        required: true
        schema:
          type: "string"
      - name: "redirect"
        in: "query"
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PreSignedURLResponse"
      tags:
        - Files
  /fileserver/customer/{customerID}/shared:
    get:
      security:
      - publicApiAuthorizer: []
      parameters:
      - name: "customerID"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: List of Customer Files Response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CustomerFiles"
      tags:
        - Files
  /report-definitions/{customerID}/{id}:
    put:
      summary: Update a specific ReportDefinition
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value of the ReportDefinition to update
          schema:
            type: string
        - name: id
          in: path
          required: true
          description: The ID value of the ReportDefinition to update
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: string
      security:
      - publicApiAuthorizer: []
      responses:
        "200":
          description: result of the updateReportDefinition operation
          content:
            application/json:
              schema:
                type: string
      tags:
        - Reports
    delete:
      summary: Delete a specific ReportDefinition
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value of the ReportDefinition to delete
          schema:
            type: string
        - name: id
          in: path
          required: true
          description: The ID value of the ReportDefinition to delete
          schema:
            type: string
      responses:
        "200":
          description: result of the deleteReportDefinition operation
          content:
            application/json:
              schema:
                type: string
      security:
        - publicApiAuthorizer: []
      tags:
        - Reports
  /report-definitions/customer/{customerID}:
    get:
      summary: Lists ReportDefinitions whose CustomerID matches the provided value
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value used to filter the list
          schema:
            type: string
      responses:
        "200":
          description: An array of ReportDefinitions
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ReportDefinitions"
      security:
        - publicApiAuthorizer: []
      tags:
        - Reports
    post:
      summary: Create a new ReportDefinition
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value used to filter the list
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: string
      responses:
        "201":
          description: result of the createReportDefinition operation
          content:
            application/json:
              schema:
                type: string
      security:
        - publicApiAuthorizer: []
      tags:
        - Reports
  /report-runs/{customerID}/{id}:
    get:
      summary: Get info about a specific ReportRun
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value of the ReportRun to retrieve
          schema:
            type: string
        - name: id
          in: path
          required: true
          description: The ID value of the ReportRun to retrieve
          schema:
            type: string
      responses:
        "200":
          description: ReportRun Object
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ReportRun"
      security:
        - publicApiAuthorizer: []
      tags:
        - Reports
  /report-runs/customer/{customerID}:
    get:
      summary: Lists ReportRuns whose CustomerID matches the provided value
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value used to filter the list
          schema:
            type: string
      responses:
        "200":
          description: An array of ReportRuns
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ReportRuns"
      security:
        - publicApiAuthorizer: []
      tags:
        - Reports
    post:
      summary: Create a new ReportRun
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value used to filter the list
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: string
      responses:
        "201":
          description: result of the createReportRun operation
          content:
            application/json:
              schema:
                type: string
      security:
        - publicApiAuthorizer: []
      tags:
        - Reports
  /report-runs/report-definition-id/{customerID}/{reportDefinitionID}:
    get:
      summary: Lists ReportRuns whose ReportDefinitionID matches the provided value
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value used to filter the list
          schema:
            type: string
        - name: reportDefinitionID
          in: path
          required: true
          description: The ReportDefinitionID value used to filter the list
          schema:
            type: string
      responses:
        "200":
          description: An array of ReportRuns
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ReportRuns"
      security:
        - publicApiAuthorizer: []
      tags:
        - Reports
  /library-charts/{customerID}/{id}:
    get:
      summary: Get info about a specific LibraryChart
      operationId: showLibraryChart
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value of the LibraryChart to retrieve
          schema:
            type: string
        - name: id
          in: path
          required: true
          description: The ID value of the LibraryChart to retrieve
          schema:
            type: string
      responses:
        "200":
          description: LibraryChart Object
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LibraryChart"
      security:
        - publicApiAuthorizer: []
      tags:
        - Charts
    put:
      summary: Update a specific LibraryChart
      operationId: updateLibraryChart
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value of the LibraryChart to update
          schema:
            type: string
        - name: id
          in: path
          required: true
          description: The ID value of the LibraryChart to update
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: string
      responses:
        "200":
          description: result of the updateLibraryChart operation
          content:
            application/json:
              schema:
                type: string
      security:
        - publicApiAuthorizer: []
      tags:
        - Charts
    delete:
      summary: Delete a specific LibraryChart
      operationId: deleteLibraryChart
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value of the LibraryChart to delete
          schema:
            type: string
        - name: id
          in: path
          required: true
          description: The ID value of the LibraryChart to delete
          schema:
            type: string
      responses:
        "200":
          description: result of the deleteLibraryChart operation
          content:
            application/json:
              schema:
                type: string
      security:
        - publicApiAuthorizer: []
      tags:
        - Charts
  /library-charts/customer/{customerID}:
    get:
      summary: Lists LibraryCharts whose CustomerID matches the provided value
      operationId: listLibraryChartsByCustomerID
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value used to filter the list
          schema:
            type: string
      responses:
        "200":
          description: An array of LibraryCharts
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LibraryCharts"
      security:
        - publicApiAuthorizer: []
      tags:
        - Charts
    post:
      summary: Create a new LibraryChart
      operationId: createLibraryChart
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value used to filter the list
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: string
      responses:
        "201":
          description: result of the createLibraryChart operation
          content:
            application/json:
              schema:
                type: string
      security:
        - publicApiAuthorizer: []
      tags:
        - Charts
  /experiments/{customerID}/{id}:
    get:
      summary: Get info about a specific Experiment
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value of the Experiment to retrieve
          schema:
            type: string
        - name: id
          in: path
          required: true
          description: The ID value of the Experiment to retrieve
          schema:
            type: string
      responses:
        "200":
          description: Experiment Object
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Experiment"
      security:
        - publicApiAuthorizer: []
      tags:
        - Experiments
    put:
      summary: Update a specific Experiment
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value of the Experiment to update
          schema:
            type: string
        - name: id
          in: path
          required: true
          description: The ID value of the Experiment to update
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: string
      responses:
        "200":
          description: result of the updateExperiment operation
          content:
            application/json:
              schema:
                type: string
      security:
        - publicApiAuthorizer: []
      tags:
        - Experiments
    delete:
      summary: Delete a specific Experiment
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value of the Experiment to delete
          schema:
            type: string
        - name: id
          in: path
          required: true
          description: The ID value of the Experiment to delete
          schema:
            type: string
      responses:
        "200":
          description: result of the deleteExperiment operation
          content:
            application/json:
              schema:
                type: string
      security:
        - publicApiAuthorizer: []
      tags:
        - Experiments
  /experiments/customer/{customerID}:
    get:
      summary: Lists Experiments whose CustomerID matches the provided value
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value used to filter the list
          schema:
            type: string
      responses:
        "200":
          description: An array of Experiments
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Experiments"
      security:
        - publicApiAuthorizer: []
      tags:
        - Experiments
    post:
      summary: Create a new Experiment
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value of the new Experiment
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: string
      responses:
        "201":
          description: result of the createExperiment operation
          content:
            application/json:
              schema:
                type: string
      security:
        - publicApiAuthorizer: []
      tags:
        - Experiments
  /experiments/groups/{customerID}/{experimentID}/{id}:
    get:
      summary: Get info about a specific ExperimentGroup
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value of the ExperimentGroup to retrieve
          schema:
            type: string
        - name: experimentID
          in: path
          required: true
          description: The ExperimentID value of the ExperimentGroup to retrieve
          schema:
            type: string
        - name: id
          in: path
          required: true
          description: The ID value of the ExperimentGroup to retrieve
          schema:
            type: string
      responses:
        "200":
          description: ExperimentGroup Object
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ExperimentGroup"
      security:
        - publicApiAuthorizer: []
      tags:
        - Experiments
    put:
      summary: Update a specific ExperimentGroup
      parameters:
        - name: customerID
          in: path
          required: true
          description: The CustomerID value of the ExperimentGroup to update
          schema:
            type: string
        - name: experimentID
          in: path
          required: true
          description: The ExperimentID value of the ExperimentGroup to update
          schema:
            type: string
        - name: id
          in: path
          required: true
          description: The ID value of the ExperimentGroup to update
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: string
      responses:
     

# --- truncated at 32 KB (69 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/agrology/refs/heads/main/openapi/agrology-public-api-openapi.yml