gPro & xPress
gPro is GEOSPAN’s modeling APIs. Use these APIs to order and recall models — geoprocessed structural drawings. Use the gPro APIs to:
The gPro API now supports both the standard gPro roof_model
product and the xPress roof_model_express
product. For more information about the xPress model and API implementation, see the xPress Model overview.
The following sections provide an example of the HTTP REST method for each API group, along with explanations of request parameters and an example result that GEOSPAN returns:
- Orders—Create and view orders, which can contain multiple jobs. Export orders to popular file formats and download them.
- POST /order/create: Create a new order with one or more buildings/locations.
- GET /order: Retrieves a paginated list of orders.
- GET /order/{number}: Retrieve details of a specific order by its order number.
- POST /order/{number}/export/: Create an export data task with the desired output format.
- GET /order/{number}/export/{taskId}/: Check that the export task is finished and the data is ready for download.
- GET /order/{number}/export/{taskId}/download/: Download the exported data in the requested format.
- GET /order/{number}/structures/: Download order projections of the structures JSON data.
- GET /order/{number}/structures/summary/: Download order summary of the structures JSON edges and surfaces data.
- GET /order/{number}/transaction-details/ Get an orders transaction info if it exists.
- POST /order/preview/ Preview an order before creating it.
- Jobs—Track and manage individual jobs using the Jobs API, accessing various data products (oblique and ortho imagery, structures data) as they become available.
- GET /jobs/: List and filter jobs with various parameters such as status, date, etc.
- GET /jobs/{id}/: Retrieve detailed information about a specific job.
- GET /jobs/{id}/oblique/: Retrieve oblique imagery for the job from different orientations.
- GET /jobs/{id}/ortho/: Retrieve single ortho image for the job.
- GET /jobs/{id}/ortho/{layer}/{z}/{x}/{y}/: Access ortho imagery tiles for the job.
- GET /jobs/{id}/sketch/: Retrieve orthographic sketch drawing of the structure.
- GET /jobs/{id}/structures/: Download order projections of the structures JSON data.
- GET /jobs/{id}/structures/summary/: Download job summary of the structures JSON edges and surfaces data.
The gPro API specification is available, complete with Authorization and a “Try it out” feature for each API call.
This document covers gPro APIs. For information about webhooks, see Webhooks.
Postman Collection [Optional]
Quickly access the gPro API and make calls directly from our Postman collection. To set up the gPro and xPress Postman collection:
- Download the gPro Postman collection.
- Download the Geospan environment variables.
- Open the Postman application, and in your workspace, import the collection and environment variables.
- In the environment variables, add your API key.
- Set the collection’s environment to the Geospan environment variables.
Now you’re ready to start making API calls.
Create and get status on orders
Call the /order/*
endpoints to create orders and get the status. Orders can include multiple jobs.
POST /order/create
HTTP methodcurl -X 'POST' \
'https://api.geospan.com/remote4d/v1/api/gpro/order/create' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>' \
-H 'Content-Type: application/json' \
-d '{
"products": [
"roof_model_express"
],
"clientName": "Optional Textname",
"referenceId": "Optional Ref ID or Policy Number",
"associatedAddress": "Optional 16288 Fairgreen Ave, Rosemount, MN 55068",
"buildings": [
{
"location": "POINT ( -93.18739 44.71353 )",
"customerNotes":"Optional Building 1 Notes to production...",
"buildingInfo":"Optional Building number 1"
}
],
"customerNotes": "Optional notes to production"
}'
{
"orderNumber": 103156,
"jobIds": [
3113
]
}
curl -X 'POST' \
'https://api.geospan.com/remote4d/v1/api/gpro/order/create' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>' \
-H 'Content-Type: application/json' \
-d '{
"products": [
"roof_model"
],
"clientName": "Optional Textname",
"referenceId": "Optional Ref ID or Policy Number",
"associatedAddress": "Optional 16288 Fairgreen Ave, Rosemount, MN 55068",
"buildings": [
{
"location": "POINT ( -93.18739 44.71353 )",
"customerNotes":"Optional Building 1 Notes to production...",
"buildingInfo":"Optional Building number 1"
}
],
"customerNotes": "Optional notes to production"
}'
{
"orderNumber": 103156,
"jobIds": [
3113
]
}
Parameters
None.
Order schemas and required fields
The POST /order/create
API requires a geometry provided either in the buildings
> location
field or a parcel
field, as well as the products
field set to roof_model
or roof_model_express
.
The POST /order/create
API expects the ExpressCheckout
schema with the ExpressCheckoutBuilding
schema. The following is the schema with descriptions for each field.
{
"products": [
"roof_model"
],
"basketId": "Optional string",
"voucherCode": "Optional string",
"clientName": "Optional Textname",
"referenceId": "Optional Ref ID or Policy Number",
"associatedAddress": "Optional address",
"buildings": [
{
"location": "POINT ( <number_for_longitude> <number_for_latitude> )",
"customerNotes": "Optional notes to production for location 1",
"buildingInfo": "Optional description of building_1"
},
{
"location": "Optional second location",
"customerNotes": "Optional notes to production for location 2",
"buildingInfo": "Optional description of building_2"
}
],
"parcel": {
"wkt": "Required conditionally: if buildings location field not provided"
},
"paymentMethodId": "string"
}
GET /order/
HTTP methodCall the /order
endpoint to retrieve a paginated list of orders, with an option to sort by the order status field.
curl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/order/?limit=2&offset=1000&ordering=number' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{
"count": 4826,
"next": "http://api.geospan.com/shop/api/gpro/order/?limit=2&offset=1002&ordering=number",
"previous": "http://api.geospan.com/shop/api/gpro/order/?limit=2&offset=998&ordering=number",
"results": [
{
"number": "101073",
"status": "In Process",
"orderedBy": "contact@yourcompany.com",
"referenceId": "141MPBNYHDS",
"customerName": "141MPBNYHDS",
"jobs": [
{
"id": 1057,
"status": "Completed",
"address": "141 Mckinley Parkway, Buffalo, New York 14220",
"buildingInfo": "",
"wkt": "POINT (-78.81471170897164 42.83583933068422)"
}
]
},
{
"number": "101074",
"status": "New",
"orderedBy": "contact@yourcompany.com",
"referenceId": "145MPBNYHDS",
"customerName": "145MPBNYHDS",
"jobs": [
{
"id": 1058,
"status": "Ready",
"address": "145 Mckinley Parkway, Buffalo, New York 14220",
"buildingInfo": "",
"wkt": "POINT (-78.81472199599162 42.83598846524143)"
}
]
}
]
}
Parameters
The GET /order
API requires at least one of the following query parameter fields.
limit
[optional] [type: integer] Number of results to return per page.
offset
[optional] [type: integer] The initial index from which to return the results.
ordering
[optional] [type: string] Which field to use when ordering the results.
GET /order/{number}
HTTP methodcurl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/order/103153' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{
"number": "103153",
"orderedBy": "contact@yourcompany.com",
"referenceId": "idprovidedbytheorderer",
"customerName": "Contact AtYourCompany",
"jobs": [
{
"id": 3109,
"address": "",
"buildingInfo": "Building number 1",
"wkt": "POINT (-93.18739 44.71353)"
},
{
"id": 3110,
"address": "",
"buildingInfo": "Building number 2",
"wkt": "POINT (-93.1874566 44.7134632)"
}
]
}
Parameters
number
[required] [type: string] The unique order number used to identify and retrieve the order.
GET /order/{number}/transaction-details/
HTTP methodCall the /order/{order_number}/transaction-details/
endpoint to retrieve transaction details for a given order, if one exists.
curl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/order/105788/transaction-details/' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{
"results": [
{
"order_number": "105788",
"amount": 15.0,
"currency": "USD",
"date_created": "2025-02-19T15:59:31.253757Z",
"date_charged": null,
"voided": false,
"card_type": "visa",
"last_four": "4444",
"expiration_month": 2,
"expiration_year": 2028,
"country": "US",
"cvc_check": null
}
]
}
Parameters
The GET /order/{order_number}/transaction-details/
API requires the following query parameter field.
order_number
[required] [type: string] Which order to obtain transaction information for.
Export order and download
Call the order/{number}/export/
endpoint to export an order to a popular file format. This is a three-step process of initiating an export to a specific file format, waiting for the export to complete, and then downloading it, as in the following pseudocode routine:
-
Create Export Task
taskId = POST /order/{number}/export/?outputFormat={format}
-
Poll Status
WHILE true:
status = GET /order/{number}/export/{taskId}/
IF status == "finished" THEN break
SLEEP 5 seconds
-
Download File
file = GET /order/{number}/export/{taskId}/download/
SAVE file as "order-download.{format}"
POST /order/{number}/export/
HTTP methodThe API to export an order.
roof_model_express
product has two possible value for the outputFormat
: docx
or pdf
.
outputFormat
are: pdf
, docx
, dxf
, esx
, geojson-lines
, geojson-polygons
, symbility-xml
, verisk-xml
, or xml
.
This call responds with a taskId
and a status with the possible value of: pending
, finished
, or error
.
curl -X 'POST' \
'https://api.geospan.com/remote4d/v1/api/gpro/order/103618/export/?outputFormat=xml' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{
"taskId": "1ot3gqxj4q5a2gwz1u3jm1px5",
"status": "pending"
}
curl -X 'POST' \
'https://api.geospan.com/remote4d/v1/api/gpro/order/103618/export/?outputFormat=dfx' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{
"taskId": "1ot3gqxj4q5a2gwz1u3jm1px5",
"status": "pending"
}
Parameters
number
[required] [type: integer] A unique integer value identifying this order. It is needed to specify the exact order you want to retrieve structure information about. The number
value can be obtained from the result of other API calls, such as listing jobs with GET /order/
, or through end-user interfaces.
outputFormat
[required] [type: string]
The file format of the data to export. Possible values are:
docx
: Word document formatpdf
: Standard PDF format
The file format of the data to export. Possible values are:
docx
: Word document formatpdf
: PDF formatdxf
: AutoCAD DXF formatesx
: ESX formatgeojson-lines
: GeoJSON lines formatgeojson-polygons
: GeoJSON polygons formatsymbility-xml
: Symbility XML formatverisk-xml
: Verisk XML formatxml
: Standard XML format
Download export schemas and required fields
number
[required] [type: string] The order number to export.
GET /order/{number}/export/{taskId}/
HTTP methodThe API to get the status of an export task. Possible values are: pending
, finished
, and error
.
curl -X 'GET' \
--location 'https://api.geospan.com/remote4d/v1/api/gpro/order/103689/export/1ot3gqxj4q5a2gwz1u3jm1px5/' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{
"taskId": "1ot3gqxj4q5a2gwz1u3jm1px5",
"status": "finished"
}
Parameters
number
[required] [type: integer] A unique integer value identifying this order. It is needed to specify the exact order you want to retrieve structure information about. The number
value can be obtained from the result of other API calls, such as listing jobs with GET /order/
, or through end-user interfaces.
Download export schemas and required fields
number
[required] [type: string] Order number to export.
taskId
[required] [type: string] Export task ID provided by in the result of a call to POST /order/{number}/export/
.
GET /order/{number}/export/{taskId}/download/
HTTP methodcurl -X 'GET' \
--location 'https://api.geospan.com/remote4d/v1/api/gpro/order/103689/export/1ot3gqxj4q5a2gwz1u3jm1px5/download/' \
-H 'Authorization: Api-Key <geospanapikeystring>' \
--output order-103689-download.xml
The output is saved to a file named order-103689-download.xml in the same directory where the cURL call was made.
Parameters
None.
Download export schemas and required fields
Accept header for downloading
[optional] [type: string] Depending on the type of export you requested, the following are acceptable media types:
text/xml
application/vnd.openxmlformats-officedocument.wordprocessingml.document
application/octet-stream
Providing no accept
header type, or providing a type of --header 'accept: */*'
also succeeds.
number
[required] [type: string] Order number to export.
taskId
[required] [type: string] Export task ID provided by in the result of a call to POST /order/{number}/export/
.
Export schema and required fields
output
[required] [type: string] The path of the file the output is saved to. Depending on the call, provide a location to save the resulting file.
GET /order/{number}/structures/
HTTP methodThe API to export an order projection of the structures JSON data. Available projection
values are crs84
, ecef
, planar
. The default value is crs84
.
roof_model_express
.
curl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/order/104294/structures/' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{
"kind": "structure",
"structures": [
{
"kind": "structure",
"projection": "crs84",
"points": {
"c101": {
"kind": "corner",
"coordinates": [
-93.434133797862,
45.11069529751187,
285.73604642692953
]
},
"c102": {
"kind": "corner",
"coordinates": [
-93.43417243578027,
45.11069109178764,
285.7360464632511
]
},
"c103": {
"kind": "corner",
"coordinates": [
-93.43418318841331,
45.110740623802,
282.9929803228006
]
},
"c104": {
"kind": "corner",
"coordinates": [
-93.43404321056008,
45.11075586027862,
282.99298025202006
]
},
"c105": {
"kind": "corner",
"coordinates": [
-93.43403245804487,
45.1107063282513,
285.7360463924706
]
},
"c106": {
"kind": "corner",
"coordinates": [
-93.43408110944263,
45.11065032961957,
282.99297790788114
]
},
"c107": {
"kind": "corner",
"coordinates": [
-93.43402170543013,
45.11065679567638,
282.99298025202006
]
},
"c108": {
"kind": "corner",
"coordinates": [
-93.43408141179151,
45.11065172240257,
282.99349774979055
]
},
"c109": {
"kind": "corner",
"coordinates": [
-93.43405439050844,
45.110654663637796,
281.22548466641456
]
},
"c110": {
"kind": "corner",
"coordinates": [
-93.43405237392996,
45.11064537416124,
281.22548498772085
]
},
"c111": {
"kind": "corner",
"coordinates": [
-93.43412133092457,
45.11063786826609,
285.73604566883296
]
},
"c112": {
"kind": "corner",
"coordinates": [
-93.43416357853219,
45.11063326961813,
282.9929805714637
]
},
"c113": {
"kind": "corner",
"coordinates": [
-93.43416747705663,
45.110651228215936,
282.9929801123217
]
},
"c114": {
"kind": "corner",
"coordinates": [
-93.43416386732689,
45.110651621134615,
283.2270313790068
]
},
"c115": {
"kind": "corner",
"coordinates": [
-93.43416260052118,
45.110645785579,
283.22703145910054
]
},
"c116": {
"kind": "corner",
"coordinates": [
-93.43403100685089,
45.11074540005141,
279.7622579643503
]
},
"c117": {
"kind": "corner",
"coordinates": [
-93.43402542607127,
45.11071969187753,
279.7622579531744
]
},
"c118": {
"kind": "corner",
"coordinates": [
-93.43403728634286,
45.11071840090424,
280.0975215854123
]
},
"c119": {
"kind": "corner",
"coordinates": [
-93.43404286712773,
45.11074410907825,
280.09752158727497
]
},
"c120": {
"kind": "corner",
"coordinates": [
-93.43413429611321,
45.11075071304431,
279.94512742664665
]
},
"c121": {
"kind": "corner",
"coordinates": [
-93.43411796361298,
45.110752506422344,
279.94512882921845
]
},
"c122": {
"kind": "corner",
"coordinates": [
-93.43411950141072,
45.11074619441093,
280.28039264213294
]
},
"c123": {
"kind": "corner",
"coordinates": [
-93.43413005769752,
45.11074504536639,
280.28039264213294
]
},
"c124": {
"kind": "corner",
"coordinates": [
-93.43410816137296,
45.110747436346585,
279.9451290220022
]
},
"c125": {
"kind": "corner",
"coordinates": [
-93.434141429272,
45.110743798147595,
279.9451290220022
]
},
"ground": {
"kind": "ground",
"coordinates": [
-93.43418318841331,
45.110633269618134,
276.1353149423376
]
}
},
"edges": {
"e101": {
"kind": "ridge",
"points": [
"c102",
"c101"
],
"properties": {
"length": 3.076
}
},
"e102": {
"kind": "rake",
"points": [
"c102",
"c103"
],
"properties": {
"length": 6.208
}
},
"e119": {
"kind": "rake",
"points": [
"c102",
"c115"
],
"properties": {
"length": 5.679
}
},
"e103": {
"kind": "eave",
"points": [
"c103",
"c104"
],
"properties": {
"attachments": [
"gutter"
],
"length": 11.145
}
},
"e104": {
"kind": "rake",
"points": [
"c104",
"c105"
],
"properties": {
"length": 6.208
}
},
"e105": {
"kind": "ridge",
"points": [
"c101",
"c105"
],
"properties": {
"length": 8.069
}
},
"e106": {
"kind": "valley",
"points": [
"c101",
"c106"
],
"properties": {
"length": 7.049
}
},
"e113": {
"kind": "ridge",
"points": [
"c101",
"c111"
],
"properties": {
"length": 6.458
}
},
"e118": {
"kind": "valley",
"points": [
"c101",
"c115"
],
"properties": {
"length": 6.459
}
},
"e107": {
"kind": "rake",
"points": [
"c105",
"c107"
],
"properties": {
"length": 6.208
}
},
"e108": {
"kind": "eave",
"points": [
"c107",
"c106"
],
"properties": {
"attachments": [
"gutter"
],
"length": 4.73
}
},
"e109": {
"kind": "",
"points": [
"c106",
"c108"
],
"properties": {
"length": 0.157
}
},
"e110": {
"kind": "stepflash",
"points": [
"c108",
"c109"
],
"properties": {
"length": 2.785
}
},
"e111": {
"kind": "eave",
"points": [
"c110",
"c109"
],
"properties": {
"attachments": [
"gutter"
],
"length": 1.045
}
},
"e112": {
"kind": "rake",
"points": [
"c111",
"c110"
],
"properties": {
"length": 7.106
}
},
"e114": {
"kind": "rake",
"points": [
"c112",
"c111"
],
"properties": {
"length": 4.341
}
},
"e115": {
"kind": "eave",
"points": [
"c112",
"c113"
],
"properties": {
"attachments": [
"gutter"
],
"length": 2.019
}
},
"e116": {
"kind": "rake",
"points": [
"c113",
"c114"
],
"properties": {
"length": 0.371
}
},
"e117": {
"kind": "flash",
"points": [
"c115",
"c114"
],
"properties": {
"length": 0.656
}
},
"e120": {
"kind": "eave",
"points": [
"c116",
"c117"
],
"properties": {
"length": 2.891
}
},
"e123": {
"kind": "rake",
"points": [
"c116",
"c119"
],
"properties": {
"length": 1.002
}
},
"e121": {
"kind": "rake",
"points": [
"c118",
"c117"
],
"properties": {
"length": 1.002
}
},
"e122": {
"kind": "flash",
"points": [
"c119",
"c118"
],
"properties": {
"length": 2.891
}
},
"e124": {
"kind": "eave",
"points": [
"c120",
"c121"
],
"properties": {
"length": 1.301
}
},
"e131": {
"kind": "eave",
"points": [
"c120",
"c125"
],
"properties": {
"length": 0.952
}
},
"e125": {
"kind": "hip",
"points": [
"c121",
"c122"
],
"properties": {
"length": 0.787
}
},
"e128": {
"kind": "eave",
"points": [
"c121",
"c124"
],
"properties": {
"length": 0.955
}
},
"e126": {
"kind": "flash",
"points": [
"c122",
"c123"
],
"properties": {
"length": 0.841
}
},
"e129": {
"kind": "stepflash",
"points": [
"c122",
"c124"
],
"properties": {
"length": 0.963
}
},
"e127": {
"kind": "hip",
"points": [
"c123",
"c120"
],
"properties": {
"length": 0.788
}
},
"e130": {
"kind": "stepflash",
"points": [
"c123",
"c125"
],
"properties": {
"length": 0.966
}
}
},
"surfaces": {
"surface1": {
"kind": "roof",
"edges": [
[
"e101",
"e102",
"e103",
"e104",
"e105"
]
],
"properties": {
"material": "asphalt",
"pitch": 6,
"area": 69.196
}
},
"surface2": {
"kind": "roof",
"edges": [
[
"e106",
"e105",
"e107",
"e108"
]
],
"properties": {
"material": "asphalt",
"pitch": 6,
"area": 39.731
}
},
"surface3": {
"kind": "roof",
"edges": [
[
"e109",
"e110",
"e111",
"e112",
"e113",
"e106"
]
],
"properties": {
"material": "asphalt",
"pitch": 10,
"area": 18.78
}
},
"surface4": {
"kind": "roof",
"edges": [
[
"e113",
"e114",
"e115",
"e116",
"e117",
"e118"
]
],
"properties": {
"material": "asphalt",
"pitch": 10,
"area": 16.272
}
},
"surface5": {
"kind": "roof",
"edges": [
[
"e118",
"e119",
"e101"
]
],
"properties": {
"material": "asphalt",
"pitch": 6,
"area": 8.735
}
},
"surface6": {
"kind": "roof",
"edges": [
[
"e120",
"e121",
"e122",
"e123"
]
],
"properties": {
"material": "asphalt",
"pitch": 4,
"area": 2.897
}
},
"surface7": {
"kind": "roof",
"edges": [
[
"e124",
"e125",
"e126",
"e127"
]
],
"properties": {
"material": "asphalt",
"pitch": 6,
"area": 0.806
}
},
"surface8": {
"kind": "roof",
"edges": [
[
"e128",
"e129",
"e125"
]
],
"properties": {
"material": "asphalt",
"pitch": 6,
"area": 0.344
}
},
"surface9": {
"kind": "roof",
"edges": [
[
"e127",
"e130",
"e131"
]
],
"properties": {
"material": "asphalt",
"pitch": 6,
"area": 0.344
}
}
},
"components": {
"roof": {
"surfaces": [
"surface1",
"surface2",
"surface3",
"surface4",
"surface5",
"surface6",
"surface7",
"surface8",
"surface9"
]
}
}
}
]
}
Parameters
number
[required] [type: integer] A unique integer value identifying this order. It is needed to specify the exact order you want to retrieve structure information about. The number
value can be obtained from the result of other API calls, such as listing jobs with GET /order/
, or through end-user interfaces.
projection
[optional] [type: string] Available projection
values are crs84
, ecef
, planar
, as in order/104294/structures/?projection=planar
. crs84
is the default value.
GET /order/{number}/structures/summary/
HTTP methodThe order
API to retrieve a summary of the structures JSON edges and surfaces data. Available projection
values are crs84
, ecef
, planar
. The default value is crs84
.
Requires an order ID number.
curl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/order/104294/structures/summary/ \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{
"edges": [
{
"kind": "gutter",
"length": 0.0
},
{
"kind": "ridge",
"length": 27.521
},
{
"kind": "eave",
"length": 43.592000000000006
},
{
"kind": "valley",
"length": 15.126999999999999
},
{
"kind": "rake",
"length": 48.582
},
{
"kind": "flash",
"length": 10.447000000000001
},
{
"kind": "stepflash",
"length": 2.957
}
],
"surfaces": [
{
"kind": "asphalt",
"area": 207.807
},
{
"kind": "membrane",
"area": 64.819
}
]
}
Parameters
number
[required] [type: integer] A unique integer value identifying this order. It is needed to specify the exact order you want to retrieve structure information about. The number
value can be obtained from the result of other API calls, such as listing jobs with GET /order/
, or through end-user interfaces.
projection
[optional] [type: string] Available projection
values are crs84
, ecef
, planar
, as in order/104294/structures/?projection=planar
. crs84
is the default value.
POST /order/preview/
HTTP methodThe POST /order/preview/
endpoint takes the same fields as the POST /order/create
endpoint, but provides information about the order basketId
, including total
, discountApplied
, lines
, price
, isComplex
, and voucherCode
.
curl -X 'POST' \
--location 'https://api.geospan.com/remote4d/v1/api/gpro/order/preview' \
-H 'Authorization: Api-Key <geospanapikeystring>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
--data '{
"products": [
"roof_model"
],
"buildings": [
{
"location": "POINT ( -93.18739 44.71353 )"
}
]
}'
{
"basketId": 3658,
"total": 49.0,
"discountApplied": 0.0,
"lines": [
{
"price": 49.0,
"isComplex": false
}
],
"voucherCode": ""
}
Parameters
None.
Order schemas and required fields
The POST /order/preview
API requires the same fields as the POST /order/create
endpoint and the same ExpressCheckout
schema with the ExpressCheckoutBuilding
schema.
Get information about jobs
Call the /jobs
endpoint to get the details of modeling jobs.
Construction jobs are often based on parcels. But parcels can contain multiple buildings. So Geospan jobs
are based on individual buildings, not parcels.
GET /jobs/
HTTP methodcurl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/jobs/?limit=2' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{
"count": 13907,
"next": "http://api.geospan.com/shop/api/gpro/jobs/?limit=2&offset=2",
"previous": null,
"results": [
{
"status": "Completed",
"category": "gsquare",
"product": {
"upc": "GSQUARE"
},
"url": "http://api.geospan.com/shop/api/jobs/13927/",
"order": {
"url": "http://api.geospan.com/shop/api/orders/13450/",
"id": 13450,
"status": "Completed",
"number": "118709",
"basket": {
"customer_name": null,
"reference_id": null
},
"email": "sophie.love@geospan.com"
},
"location": {
"type": "Polygon",
"coordinates": [
[
[
-82.9038767516613,
42.382867262983666
],
[
-82.90392100811005,
42.38285141312325
],
[
-82.90387809276581,
42.38278504178932
],
[
-82.90383785963058,
42.382799901049275
],
[
-82.90379762649536,
42.3827365015156
],
[
-82.90394648909569,
42.38268300810926
],
[
-82.9039679467678,
42.382703811106026
],
[
-82.90395990014076,
42.38271074543675
],
[
-82.9039840400219,
42.38274838893304
],
[
-82.90405109524727,
42.382724614095906
],
[
-82.90409535169601,
42.38279494796301
],
[
-82.9040376842022,
42.38281476030572
],
[
-82.9040738940239,
42.38287023483205
],
[
-82.90391430258751,
42.382925709309355
],
[
-82.9038767516613,
42.382867262983666
]
]
]
},
"location_description": "",
"attachments": [],
"date_created": "2025-08-01T15:53:46.538681Z",
"date_updated": "2025-08-01T15:53:49.276403Z",
"status_reason": null,
"id": 13927,
"extra": null,
"username": "None",
"customer_notes": "",
"address": "5 Cameron Place, Grosse Pointe, Michigan 48230",
"building_info": "",
"siblings": "http://api.geospan.com/shop/api/jobs/13927/siblings/",
"history": "http://api.geospan.com/shop/api/jobs/13927/history/",
"share_key": "",
"result_type": "gsquare",
"result": "{\"estimateKey\": \"sqm-sAiV3jw3RU6NpIRLX1dsZQ\"}"
},
{
"status": "Completed",
"category": "gsquare",
"product": {
"upc": "GSQUARE"
},
"url": "http://api.geospan.com/shop/api/jobs/13926/",
"order": {
"url": "http://api.geospan.com/shop/api/orders/13449/",
"id": 13449,
"status": "Completed",
"number": "118708",
"basket": {
"customer_name": null,
"reference_id": null
},
"email": "sophie.love@geospan.com"
},
"location": {
"type": "Polygon",
"coordinates": [
[
[
-82.90186107158661,
42.38384796531345
],
[
-82.90172696113586,
42.383637957618674
],
[
-82.90199652314186,
42.383539887747006
],
[
-82.90199920535088,
42.38354385016903
],
[
-82.90205284953117,
42.383525028662184
],
[
-82.90221780538559,
42.38378258563473
],
[
-82.90219366550446,
42.383790510447895
],
[
-82.90219902992249,
42.38379744465859
],
[
-82.90215075016022,
42.3838142848814
],
[
-82.9021467268467,
42.38380636007123
],
[
-82.9021118581295,
42.38381824728611
],
[
-82.90210381150246,
42.38380636007123
],
[
-82.90211319923401,
42.383803388267154
],
[
-82.9021118581295,
42.383789519846296
],
[
-82.90210112929344,
42.383786548041435
],
[
-82.90209844708443,
42.38379546345561
],
[
-82.90208905935287,
42.383781595033
],
[
-82.90210112929344,
42.38377664202419
],
[
-82.9020930826664,
42.38376574540342
],
[
-82.90211588144302,
42.38375782058712
],
[
-82.90210112929344,
42.383735036734706
],
[
-82.90211588144302,
42.38373008372221
],
[
-82.90212258696556,
42.383719187093355
],
[
-82.90210515260696,
42.38371621528516
],
[
-82.90210247039795,
42.38372215890141
],
[
-82.90209174156189,
42.383719187093355
],
[
-82.90206089615822,
42.383672628748776
],
[
-82.90192544460297,
42.38372017769606
],
[
-82.90192276239395,
42.383740980349174
],
[
-82.90190935134888,
42.38375682998502
],
[
-82.90192946791649,
42.38378753864307
],
[
-82.90191203355789,
42.38380636007123
],
[
-82.90190666913986,
42.38383211570062
],
[
-82.90186107158661,
42.38384796531345
]
]
]
},
"location_description": "",
"attachments": [],
"date_created": "2025-08-01T15:48:34.657931Z",
"date_updated": "2025-08-01T15:48:37.362389Z",
"status_reason": null,
"id": 13926,
"extra": null,
"username": "None",
"customer_notes": "",
"address": "4 Alger Place, Grosse Pointe, Michigan 48230",
"building_info": "",
"siblings": "http://api.geospan.com/shop/api/jobs/13926/siblings/",
"history": "http://api.geospan.com/shop/api/jobs/13926/history/",
"share_key": "",
"result_type": "gsquare",
"result": "{\"estimateKey\": \"sqm-HW0c6rYmSkOGpgghiClKwg\"}"
}
]
}
Parameters
address
[optional] [type: string] Filters jobs by the provided address. This is a partial match filter where the provided address string should be contained within the job’s address field.
address__icontains
[optional] [type: string] Filters jobs where the address contains the provided substring. This is case-insensitive.
address__istartswith
[optional] [type: string] Filters jobs where the address starts with the provided substring. This is case-insensitive.
category
[optional] [type: string enum] Filters jobs based on category. Possible values are as follows.
Value | Description |
---|---|
gsquare |
List only gSquare estimates |
gpro |
List only gPro models |
express |
List only xPress models |
This is case-sensitive and must be one of the specified values.
date_created
[optional] [type: string($date-time)] Filters jobs by the exact creation date.
date_created__gt
[optional] [type: string($date-time)] Filters jobs created after the provided date.
date_created__lt
[optional] [type: string($date-time)] Filters jobs created before the provided date.
job_id
[optional] [type: string] Filters jobs by the exact job ID.
job_id__icontains
[optional] [type: string] Filters jobs where the job ID contains the provided substring. This is case-insensitive.
job_id__istartswith
[optional] [type: string] Filters jobs where the job ID starts with the provided substring. This is case-insensitive.
limit
[optional] [type: integer] Number of results to return per page. This parameter controls pagination and helps manage the size of the response. Default is 50.
offset
[optional] [type: integer] The initial index from which to return the results. This parameter is used in pagination to skip a certain number of results before returning the response.
order__basket__customer_name
[optional] [type: string] Filters jobs by customer name within the order’s basket.
order__basket__customer_name__contains
[optional] [type: string] Filters jobs where the customer’s name in the basket contains the provided substring. This is case-insensitive.
order__basket__customer_name__icontains
[optional] [type: string] Filters jobs where the customer’s name in the basket contains the provided substring, case-insensitive.
order__basket__customer_name__startswith
[optional] [type: string] Filters jobs where the customer’s name in the basket starts with the provided substring, case-insensitive.
order__basket__reference_id
[optional] [type: string] Filters jobs by the reference ID within the order’s basket.
ordering
[optional] [type: string] Determines the field by which to order the results. See the table below for possible values.
Value | Description |
---|---|
date_created |
Orders by the date the job was created |
-date_created |
Orders by the date the job was created (descending) |
date_updated |
Orders by the date the job was last updated |
-date_updated |
Orders by the date the job was last updated (descending) |
job_id |
Orders by the unique job ID |
-job_id |
Orders by the unique job ID (descending) |
order__basket__customer_name |
Orders by the customer’s name in the basket |
-order__basket__customer_name |
Orders by the customer’s name in the basket (descending) |
order__basket__reference_id |
Orders by the reference ID of the basket |
-order__basket__reference_id |
Orders by the reference ID of the basket (descending) |
order__number |
Orders by the order number |
-order__number |
Orders by the order number (descending) |
production_team__name |
Orders by the production team’s name |
-production_team__name |
Orders by the production team’s name (descending) |
production_user__email |
Orders by the production user’s email |
-production_user__email |
Orders by the production user’s email (descending) |
status |
Orders by the job status |
-status |
Orders by the job status (descending) |
production_team
[optional] [type: string] Name of the production team assigned to the job.
production_user
[optional] [type: integer] ID of the production user assigned to the job.
production_user__email
[optional] [type: string] Email of the production user assigned to the job.
production_user__email__contains
[optional] [type: string] Filters jobs where the production user’s email contains the specified substring.
production_user__email__icontains
[optional] [type: string] Case-insensitive version of production_user__email__contains.
production_user__email__startswith
[optional] [type: string] Filters jobs where the production user’s email starts with the specified string.
production_user__in
[optional] [type: array[integer]] Filter jobs for a list of production user IDs.
production_user__isnull
[optional] [type: boolean] Filters jobs where the production user is either null or not.
progress
[optional] [type: string] Status of job progress. This parameter might be defined elsewhere.
q
[optional] [type: string] A general search query string.
result__isnull
[optional] [type: boolean] Filters jobs where the result is either null or not.
sort
[optional] [type: array[string]] Fields by which to sort the results. See the table below for possible values.
Value | Description |
---|---|
date_created |
Orders by the date the job was created |
-date_created |
Orders by the date the job was created (descending) |
date_updated |
Orders by the date the job was last updated |
-date_updated |
Orders by the date the job was last updated (descending) |
job_id |
Orders by the unique job ID |
-job_id |
Orders by the unique job ID (descending) |
order__basket__customer_name |
Orders by the customer’s name in the basket |
-order__basket__customer_name |
Orders by the customer’s name in the basket (descending) |
order__basket__reference_id |
Orders by the reference ID of the basket |
-order__basket__reference_id |
Orders by the reference ID of the basket (descending) |
order__number |
Orders by the order number |
-order__number |
Orders by the order number (descending) |
production_team__name |
Orders by the production team’s name |
-production_team__name |
Orders by the production team’s name (descending) |
production_user__email |
Orders by the production user’s email |
-production_user__email |
Orders by the production user’s email (descending) |
status |
Orders by the job status |
-status |
Orders by the job status (descending) |
status
[optional] [type: string enum] Status of the job. Possible values are as follows.
Value | Description |
---|---|
New |
The order is new. |
Pre-Model |
The job is being prepared for modeling. |
Ready |
The job is ready for modeling. |
Modeling |
The job is being modeled. |
QA1 |
The model is ready to be reviewed at the first stage. |
QA1 In Process |
The model is being reviewed at the first stage. |
QA2 |
The model is ready to be reviewed at the second stage. |
QA2 In Process |
The model is being reviewed at the second stage. |
Completed |
The model is complete. |
Publish |
The model is live. |
Canceled |
A job may be canceled due to customer request, imagery issues (quality, availability, or obstructions), technical limitations, ambiguous location, or excessive building size. |
Rejected |
The job was rejected for additional modeling if the design does not meet quality standards or specifications. |
Hold |
The job is awaiting necessary action or information from either the customer or internal team members before it can proceed further. |
Failed QA |
The model could not pass QA. |
status__in
[optional] [type: array[string]] Filters jobs for a list of statuses. See the table below for possible values. Multiple values may be separated by commas.
Value | Description |
---|---|
New |
The order is new. |
Pre-Model |
The job is being prepared for modeling. |
Ready |
The job is ready for modeling. |
Modeling |
The job is being modeled. |
QA1 |
The model is ready to be reviewed at the first stage. |
QA1 In Process |
The model is being reviewed at the first stage. |
QA2 |
The model is ready to be reviewed at the second stage. |
QA2 In Process |
The model is being reviewed at the second stage. |
Completed |
The model is complete. |
Publish |
The model is live. |
Canceled |
A job may be canceled due to customer request, imagery issues (quality, availability, or obstructions), technical limitations, ambiguous location, or excessive building size. |
Rejected |
The job was rejected for additional modeling if the design does not meet quality standards or specifications. |
Hold |
The job is awaiting necessary action or information from either the customer or internal team members before it can proceed further. |
Failed QA |
The model could not pass QA. |
GET /jobs/{id}/
HTTP methodcurl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/jobs/9533/' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{
"status": "Completed",
"category": "express",
"product": {
"upc": "ROOF-EX"
},
"url": "http://test.api.geospan.com/shop/api/jobs/9533/",
"order": {
"url": "http://test.api.geospan.com/shop/api/orders/9100/",
"id": 9100,
"status": "Completed",
"number": "112016",
"basket": {
"customer_name": "Sophie - Test",
"reference_id": "31654"
},
"email": "sophie.love@geospan.com"
},
"location": {
"type": "Point",
"coordinates": [
-90.01138542270182,
35.16725631164388
]
},
"location_description": "",
"attachments": [],
"date_created": "2025-05-14T16:25:32.214202Z",
"date_updated": "2025-05-14T16:50:33.467277Z",
"status_reason": null,
"id": 9533,
"extra": null,
"username": "None",
"customer_notes": "Note here",
"address": "1048 Randle Street, Memphis, Tennessee 38107",
"building_info": "2",
"siblings": "http://test.api.geospan.com/shop/api/jobs/9533/siblings/",
"history": "http://test.api.geospan.com/shop/api/jobs/9533/history/",
"share_key": "",
"result_type": "geoid",
"result": "{\"geoid\":\"5b1d583f-9fa2-4269-99b8-8c8d62ab0f27\",\"id\":6413}"
}
Parameters
id
[required] [type: integer] A unique integer value identifying this job. It is needed to specify the exact job you want to retrieve information about. The id
value can be obtained from the result of other API calls, such as listing jobs with GET /jobs/
, or through end-user interfaces.
GET /jobs/{id}/
HTTP methodDownload raw JSON for the job with the identification provided in the query parameters.
curl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/jobs/12345/' \
-H 'Accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{
"status": "Canceled",
"category": "gpro",
"product": {
"upc": "ROOF-S"
},
"url": "http://api.geospan.com/shop/api/jobs/2957/",
"order": {
"url": "http://api.geospan.com/shop/api/orders/2860/",
"id": 2860,
"status": "Canceled",
"number": "102996",
"basket": {
"customer_name": "Sophie - Test",
"reference_id": ""
},
"email": "sophie.love@geospan.com"
},
"location": {
"type": "Point",
"coordinates": [
-93.37180373672909,
44.876070926267545
]
},
"location_description": "",
"attachments": [],
"date_created": "2024-07-10T20:43:26.627962Z",
"date_updated": "2024-07-10T22:12:38.500824Z",
"status_reason": "Customer Canceled",
"id": 2957,
"extra": null,
"username": "None",
"customer_notes": "",
"address": "7001 Lanham Lane, Edina, Minnesota 55439",
"building_info": "",
"siblings": "http://api.geospan.com/shop/api/jobs/2957/siblings/",
"history": "http://api.geospan.com/shop/api/jobs/2957/history/",
"share_key": "",
"result_type": "geoid",
"result": ""
}
Parameters
id
[required] [type: integer] A unique integer value identifying this job. It is needed to specify the exact job you want to retrieve sketch information about. The id
value can be obtained from the result of other API calls, such as listing jobs with GET /jobs/
, or through end-user interfaces.
GET /jobs/{id}/oblique/
HTTP methodcurl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/jobs/9533/oblique/?orientation=n' \
-H 'Authorization: Api-Key <geospanapikeystring>' \
--output 9533_oblique_orientation-n.jpg
The output is saved to a file named 9533_oblique_orientation-n.jpg in the same directory where the cURL call was made.
Parameters
id
[required] [type: integer] A unique integer value identifying the job. It is needed to specify the exact job for which you want to retrieve oblique imagery. The id
value can be obtained from the result of other API calls, such as listing jobs with GET /jobs/
, or from the user interfaces.
orientation
[required] [type: string] Specifies the camera direction relative to the structure for the oblique image. This parameter controls the perspective of the image (e.g., from the north, south, east, or west).
Value | Description |
---|---|
n | North orientation |
e | East orientation |
s | South orientation |
w | West orientation |
Export schema and required fields
output
[required] [type: string] The path of the file the output is saved to. Depending on the call, provide a location to save the resulting file.
GET /jobs/{id}/ortho/
HTTP methodDownload a single ortho image for the job. Returns an orthographic image in JPEG or TIFF format associated with a specific job ID.
curl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/jobs/9533/ortho/?format=jpeg' \
-H 'Authorization: Api-Key <geospanapikeystring>' \
--output 9533_ortho_single.jpg
The output is saved to a file named 9533_ortho_single.jpg in the same directory where the cURL call was made.
Parameters
id
[required] [type: integer] A unique integer value identifying the job. It is needed to specify the exact job for which you want to retrieve ortho imagery. The id
can be obtained from the result of other API calls, such as listing jobs with GET /jobs/
, or from user interfaces.
format
[optional] [type: string] The format of the ortho image. Possible values are:
jpeg
: JPEG format (default)tiff
: TIFF format
Export schema and required fields
output
[required] [type: string] The path of the file the output is saved to. Depending on the call, provide a location to save the resulting file.
GET /jobs/{id}/ortho/{layer}/{z}/{x}/{y}/
HTTP methodcurl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/jobs/9533/ortho/base/12/2048/2048/' \
-H 'Authorization: Api-Key <geospanapikeystring>' \
--output 9533_ortho_base-12-2048-2048.jpg
The output is saved to a file named 9533_ortho_base-12-2048-2048.jpg in the same directory where the cURL call was made.
Parameters
id
[required] [type: integer] A unique integer value identifying the job. It is needed to specify the exact job for which you want to retrieve ortho imagery tiles. The id can be obtained from the result of other API calls, such as listing jobs with GET /jobs/, or from user interfaces.
layer
[required] [type: string] The layer to retrieve the ortho imagery from. This could represent different data layers such as different map styles, resolutions, or other types of data layers relevant to the job.
z
[required] [type: string] The tile zoom level. This parameter controls how much detail the tile contains, with higher zoom levels representing more detailed imagery.
x
[required] [type: string] The x-coordinate of the tile in the tile grid. This is used to locate the specific tile in the grid at the given zoom level.
y
[required] [type: string] The y-coordinate of the tile in the tile grid. This, along with the x-coordinate, identifies the specific tile at the given zoom level.
Export schema and required fields
output
[required] [type: string] The path of the file the output is saved to. Depending on the call, provide a location to save the resulting file.
GET /jobs/{id}/sketch/
HTTP methodDownload raw diagram of the roof in an ortho view. Returns a visual sketch image (JPEG or TIFF) associated with a specific job ID. Requires authentication and appropriate permissions.
curl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/jobs/12345/sketch/?format=jpeg' \
-H 'Authorization: Api-Key <geospanapikeystring>' \
--output job-12345-sketch.jpeg
The output is saved to a file named job-12345-sketch.jpeg in the same directory where the cURL call was made.
Parameters
id
[required] [type: integer] A unique integer value identifying this job. It is needed to specify the exact job you want to retrieve sketch information about. The id
value can be obtained from the result of other API calls, such as listing jobs with GET /jobs/
, or through end-user interfaces.
format
[optional] [type: string] The format of the sketch image. Possible values are:
jpeg
: JPEG format (default)tiff
: TIFF format
Export schema and required fields
output
[required] [type: string] The path of the file the output is saved to. Depending on the call, provide a location to save the resulting file.
GET /jobs/{id}/structures/
HTTP methodReturns a structures JSON structurecollection
of all structures on the order.
roof_model_express
.
curl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/jobs/9533/structures/?projection=crs84' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{
"kind": "structurecollection",
"structures": [
{
"kind": "structure",
"projection": "crs84",
"points": {
"c101": {
"kind": "corner",
"coordinates": [
-90.01138340070946,
35.16729527026789
]
},
"c102": {
"kind": "corner",
"coordinates": [
-90.01133664838049,
35.167294684081185
]
},
"c103": {
"kind": "corner",
"coordinates": [
-90.01133809694286,
35.1672167820111
]
},
"c104": {
"kind": "corner",
"coordinates": [
-90.01138484922726,
35.16721736819724
]
},
"c105": {
"kind": "corner",
"coordinates": [
-90.01143013677077,
35.16729585623257
]
},
"c106": {
"kind": "corner",
"coordinates": [
-90.01143158524403,
35.16721795416138
]
},
"c107": {
"kind": "corner",
"coordinates": [
-90.01143115351826,
35.167241173336656
]
},
"c108": {
"kind": "corner",
"coordinates": [
-90.01141302293637,
35.16725622144165
]
},
"c109": {
"kind": "corner",
"coordinates": [
-90.01143058771049,
35.16727160372032
]
},
"c110": {
"kind": "corner",
"coordinates": [
-90.01145460639962,
35.167241467376044
]
},
"c111": {
"kind": "corner",
"coordinates": [
-90.01145439051727,
35.16725674008876
]
},
"c112": {
"kind": "corner",
"coordinates": [
-90.01145404060061,
35.167271897759704
]
},
"c113": {
"kind": "corner",
"coordinates": [
-90.01137009659405,
35.16726762020394
]
},
"c114": {
"kind": "corner",
"coordinates": [
-90.0113626480438,
35.16726752681184
]
},
"c115": {
"kind": "corner",
"coordinates": [
-90.0113627495141,
35.167262069760746
]
},
"c116": {
"kind": "corner",
"coordinates": [
-90.01137019806387,
35.16726216315285
]
},
"ground": {
"kind": "ground",
"coordinates": [
-90.01145460639962,
35.167216782011096
]
}
},
"edges": {
"e101": {
"kind": "rake",
"points": [
"c101",
"c102"
],
"properties": {
"length": 4.834
}
},
"e102": {
"kind": "eave",
"points": [
"c102",
"c103"
],
"properties": {
"length": 8.644
}
},
"e103": {
"kind": "rake",
"points": [
"c103",
"c104"
],
"properties": {
"length": 4.834
}
},
"e104": {
"kind": "ridge",
"points": [
"c104",
"c101"
],
"properties": {
"length": 8.644
}
},
"e106": {
"kind": "rake",
"points": [
"c104",
"c106"
],
"properties": {
"length": 4.833
}
},
"e105": {
"kind": "rake",
"points": [
"c105",
"c101"
],
"properties": {
"length": 4.833
}
},
"e107": {
"kind": "eave",
"points": [
"c106",
"c107"
],
"properties": {
"length": 2.576
}
},
"e108": {
"kind": "valley",
"points": [
"c107",
"c108"
],
"properties": {
"length": 2.505
}
},
"e111": {
"kind": "eave",
"points": [
"c107",
"c110"
],
"properties": {
"length": 2.137
}
},
"e109": {
"kind": "valley",
"points": [
"c109",
"c108"
],
"properties": {
"length": 2.497
}
},
"e110": {
"kind": "eave",
"points": [
"c109",
"c105"
],
"properties": {
"length": 2.691
}
},
"e115": {
"kind": "eave",
"points": [
"c109",
"c112"
],
"properties": {
"length": 2.137
}
},
"e112": {
"kind": "rake",
"points": [
"c110",
"c111"
],
"properties": {
"length": 1.906
}
},
"e113": {
"kind": "ridge",
"points": [
"c111",
"c108"
],
"properties": {
"length": 3.769
}
},
"e114": {
"kind": "rake",
"points": [
"c111",
"c112"
],
"properties": {
"length": 1.894
}
},
"e116": {
"kind": "chimney",
"points": [
"c116",
"c115"
],
"properties": {
"length": 0.77
}
},
"e118": {
"kind": "chimney",
"points": [
"c116",
"c113"
],
"properties": {
"length": 0.606
}
},
"e117": {
"kind": "chimney",
"points": [
"c113",
"c114"
],
"properties": {
"length": 0.77
}
},
"e119": {
"kind": "chimney",
"points": [
"c114",
"c115"
],
"properties": {
"length": 0.606
}
}
},
"surfaces": {
"surface1": {
"kind": "roof",
"edges": [
[
"e101",
"e102",
"e103",
"e104"
],
[
"e116",
"e117",
"e118",
"e119"
]
],
"properties": {
"material": "asphalt",
"pitch": 6,
"area": 41.321
}
},
"surface2": {
"kind": "roof",
"edges": [
[
"e105",
"e104",
"e106",
"e107",
"e108",
"e109",
"e110"
]
],
"properties": {
"material": "asphalt",
"pitch": 6,
"area": 38.661
}
},
"surface3": {
"kind": "roof",
"edges": [
[
"e111",
"e112",
"e113",
"e108"
]
],
"properties": {
"material": "asphalt",
"pitch": 6,
"area": 5.627
}
},
"surface4": {
"kind": "roof",
"edges": [
[
"e109",
"e113",
"e114",
"e115"
]
],
"properties": {
"material": "asphalt",
"pitch": 6,
"area": 5.594
}
}
},
"components": {
"roof": {
"surfaces": [
"surface1",
"surface2",
"surface3",
"surface4"
]
}
}
}
]
}
Parameters
id
[required] [type: integer] A unique integer value identifying this job. It is needed to specify the exact job you want to retrieve structure information about. The id
value can be obtained from the result of other API calls, such as listing jobs with GET /jobs/
, or through end-user interfaces.
projection
[optional] [type: string] Available projection
values are crs84
, ecef
, planar
, as in jobs/9533/structures/summary/?projection=planar
. crs84
is the default value.
GET /jobs/{id}/structures/summary/
HTTP methodThe jobs
API to retrieve a summary of the structures JSON edges and surfaces data. Available projection
values are crs84
, ecef
, planar
. The default value is crs84
.
Requires a job ID number.
curl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/jobs/9533/structures/summary/' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{
"edges": [
{
"kind": "gutter",
"length": 0.0
},
{
"kind": "rake",
"length": 23.133999999999997
},
{
"kind": "eave",
"length": 18.185000000000002
},
{
"kind": "ridge",
"length": 12.413
},
{
"kind": "valley",
"length": 5.002
},
{
"kind": "chimney",
"length": 2.752
},
{
"kind": "drip-edge",
"length": 41.319
},
{
"kind": "underlay",
"length": 23.187
},
{
"kind": "ridgecap",
"length": 12.413
}
],
"surfaces": [
{
"kind": "asphalt",
"area": 91.20299999999999
}
]
}
Parameters
id
[required] [type: integer] A unique integer value identifying this job. It is needed to specify the exact job you want to retrieve structure information about. The id
value can be obtained from the result of other API calls, such as listing jobs with GET /jobs/
, or through end-user interfaces.
projection
[optional] [type: string] Available projection
values are crs84
, ecef
, planar
, as in jobs/9533/structures/summary/?projection=planar
. crs84
is the default value.