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 .' oidc: type: openIdConnect openIdConnectUrl: https://api.propelleraero.com/auth/oidc/.well-known/openid-configuration