Propeller Aero Sites API

Survey projects (job sites) within an organization.

OpenAPI Specification

propeller-aero-sites-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Propeller Public Organizations Sites API
  description: 'The Propeller Public API provides programmatic, read-oriented access to Propeller Aero drone-survey and earthworks-analytics data for construction, mining, aggregates, and waste sites. It exposes organizations, sites (survey projects), workspaces, surveys, downloadable processed survey files (orthophotos, digital terrain models, and point clouds), user-defined shapes and the widgets calculated against them (volumes, cut/fill, distances, areas), and DirtMate position-monitoring configurations and epochs. The API is a paid, premium feature available on higher Propeller plans (such as Scale).

    Requests are made over HTTPS to https://api.propelleraero.com/v1 and are authenticated with a Bearer access token (generated under Settings > Public API in the Propeller portal) or via an OpenID Connect authorization_code flow (discovery at https://api.propelleraero.com/auth/oidc/.well-known/openid-configuration).

    Endpoint paths and HTTP methods in this document are taken from Propeller''s public API reference and llms.txt index. Request and response SCHEMAS are modeled from the public documentation for cataloging purposes and are not an exhaustive or byte-exact contract - see x-endpointsModeled - so validate payloads against the live Propeller reference before integrating.'
  version: '1.0'
  contact:
    name: Propeller Aero
    url: https://www.propelleraero.com/
  x-endpointsModeled: true
  x-endpointsModeledNote: Paths and methods are confirmed from Propeller's public API reference / llms.txt. Response schemas are illustrative models of the documented resources, not verified field-by-field against live payloads.
servers:
- url: https://api.propelleraero.com/v1
  description: Propeller Public API
security:
- bearerAuth: []
- oidc: []
tags:
- name: Sites
  description: Survey projects (job sites) within an organization.
paths:
  /organizations/{organization_id}/sites:
    get:
      operationId: listSites
      tags:
      - Sites
      summary: List sites
      description: Lists the sites (survey projects) within an organization.
      parameters:
      - $ref: '#/components/parameters/OrganizationId'
      responses:
        '200':
          description: A list of sites.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Site'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /organizations/{organization_id}/sites/{site_id}:
    get:
      operationId: getSite
      tags:
      - Sites
      summary: Get a site
      parameters:
      - $ref: '#/components/parameters/OrganizationId'
      - $ref: '#/components/parameters/SiteId'
      responses:
        '200':
          description: A site.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Site'
        '404':
          $ref: '#/components/responses/NotFound'
  /organizations/{organization_id}/sites/{site_id}/sample_elevation:
    get:
      operationId: sampleSiteElevation
      tags:
      - Sites
      summary: Sample site elevation
      description: Returns the ground elevation at a coordinate on the site's current surface model.
      parameters:
      - $ref: '#/components/parameters/OrganizationId'
      - $ref: '#/components/parameters/SiteId'
      - name: lat
        in: query
        required: true
        schema:
          type: number
          format: double
      - name: lng
        in: query
        required: true
        schema:
          type: number
          format: double
      responses:
        '200':
          description: An elevation sample.
          content:
            application/json:
              schema:
                type: object
                properties:
                  lat:
                    type: number
                    format: double
                  lng:
                    type: number
                    format: double
                  elevation:
                    type: number
                    format: double
                  unit:
                    type: string
                    example: meters
        '404':
          $ref: '#/components/responses/NotFound'
components:
  parameters:
    SiteId:
      name: site_id
      in: path
      required: true
      schema:
        type: string
    OrganizationId:
      name: organization_id
      in: path
      required: true
      schema:
        type: string
  responses:
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Missing or invalid access token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
    Site:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        timezone:
          type: string
        latitude:
          type: number
          format: double
        longitude:
          type: number
          format: double
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Access token generated under Settings > Public API in the Propeller portal, sent as Authorization: Bearer <access_token>.'
    oidc:
      type: openIdConnect
      openIdConnectUrl: https://api.propelleraero.com/auth/oidc/.well-known/openid-configuration