gPro & xPress
gPro is GEOSPAN’s modeling APIs. Use these APIs to order and recall models — geoprocessed structural drawings. Use the gPro APIs to:
- Create and get status on orders
- Export order and download
- Get information about jobs
- Share jobs
- Get information about shared jobs
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 (for example,
docx
,dxf
,esx
,geojson-lines
,geojson-polygons
,symbility-xml
,verisk-xml
, orxml
). - 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.
- POST /order/preview/ Preview an order before creating it.
- Jobs—Track and manage individual jobs using the Jobs API, accessing various data products (GeoID, oblique and ortho imagery) as they become available.
- GET /jobs/: List and filter jobs with various parameters such as status, date, priority, etc.
- GET /jobs/{id}/: Retrieve detailed information about a specific job.
- GET /jobs/{id}/geoid/: Access the GEOSPAN model format (GeoID) for a completed job.
- GET /jobs/{id}/oblique/: Retrieve oblique imagery for the job from different orientations.
- GET /jobs/{id}/ortho/{layer}/{z}/{x}/{y}/: Access ortho imagery tiles for the job.
- GET/POST/PATCH/DELETE /jobs/{id}/share/: Manage the sharing state of a job, allowing access without authentication. Note that unsharing and then sharing again causes the share key to change.
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.
Create and get status on orders
Call the /order/*
endpoints to create orders and get the status. Orders can include multiple jobs.
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.
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"
}
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 one possible value for the outputFormat
: docx
.
outputFormat
are: 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
outputFormat
[required] [type: string]
The file format of the data to export. Possible values are:
docx
: Word document formatxml
: Standard XML format
The file format of the data to export. Possible values are:
docx
: Word document 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
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
None.
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/
.
output
[optional] [type: string] Depending on the call, provide a location to save the resulting file.
POST /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
.
curl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/order/104294/export/?outputFormat=xml' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{
"kind": "structurecollection",
"structures": [
{
"kind": "structure",
"projection": "crs84",
"points": {
"c101": {
"kind": "corner",
"coordinates": [
-93.38278656215714,
45.01580360496024,
298.0300107039511
]
},
"c102": {
"kind": "corner",
"coordinates": [
-93.3828421751554,
45.01575494707009,
299.70632887631655
]
},
"c103": {
"kind": "corner",
"coordinates": [
-93.38290127794981,
45.01575103014567,
299.70632887631655
]
},
"c104": {
"kind": "corner",
"coordinates": [
-93.38296863682278,
45.01579153831072,
298.03001070581377
]
},
"c105": {
"kind": "corner",
"coordinates": [
-93.38277481641455,
45.0157144388302,
298.03001070581377
]
},
"c106": {
"kind": "corner",
"coordinates": [
-93.38295689080012,
45.015702372199215,
298.0300107030198
]
},
"c107": {
"kind": "corner",
"coordinates": [
-93.38295821479416,
45.015734282841514,
298.1078387647867
]
},
"c108": {
"kind": "corner",
"coordinates": [
-93.38295050971219,
45.01573479344404,
298.31790600530803
]
},
"c109": {
"kind": "corner",
"coordinates": [
-93.38294871302814,
45.015721154472956,
298.31790652964264
]
},
"c110": {
"kind": "corner",
"coordinates": [
-93.38295641906878,
45.01572064380766,
298.1078131068498
]
},
"ground": {
"kind": "ground",
"coordinates": [
-93.38296863682278,
45.015702372199215,
295.1345520019531
]
}
},
"edges": {
"e101": {
"kind": "hip",
"points": [
"c101",
"c102"
],
"properties": {
"length": 7.16
}
},
"e108": {
"kind": "eave",
"points": [
"c101",
"c105"
],
"properties": {
"attachments": [
"gutter"
],
"length": 9.953
}
},
"e102": {
"kind": "ridge",
"points": [
"c103",
"c102"
],
"properties": {
"length": 4.679
}
},
"e103": {
"kind": "hip",
"points": [
"c103",
"c104"
],
"properties": {
"length": 7.16
}
},
"e106": {
"kind": "hip",
"points": [
"c103",
"c106"
],
"properties": {
"length": 7.16
}
},
"e104": {
"kind": "eave",
"points": [
"c104",
"c101"
],
"properties": {
"attachments": [
"gutter"
],
"length": 14.415
}
},
"e109": {
"kind": "eave",
"points": [
"c104",
"c106"
],
"properties": {
"attachments": [
"gutter"
],
"length": 9.953
}
},
"e105": {
"kind": "eave",
"points": [
"c105",
"c106"
],
"properties": {
"attachments": [
"gutter"
],
"length": 14.415
}
},
"e107": {
"kind": "hip",
"points": [
"c105",
"c102"
],
"properties": {
"length": 7.16
}
},
"e110": {
"kind": "chimney",
"points": [
"c108",
"c107"
],
"properties": {
"length": 0.645
}
},
"e111": {
"kind": "chimney",
"points": [
"c108",
"c109"
],
"properties": {
"length": 1.522
}
},
"e112": {
"kind": "chimney",
"points": [
"c109",
"c110"
],
"properties": {
"length": 0.645
}
},
"e113": {
"kind": "chimney",
"points": [
"c107",
"c110"
],
"properties": {
"length": 1.522
}
}
},
"surfaces": {
"surface1": {
"kind": "roof",
"edges": [
[
"e101",
"e102",
"e103",
"e104"
]
],
"properties": {
"material": "asphalt",
"pitch": 4,
"area": 50.135
}
},
"surface2": {
"kind": "roof",
"edges": [
[
"e105",
"e106",
"e107",
"e102"
]
],
"properties": {
"material": "asphalt",
"pitch": 4,
"area": 50.134
}
},
"surface3": {
"kind": "roof",
"edges": [
[
"e107",
"e101",
"e108"
]
],
"properties": {
"material": "asphalt",
"pitch": 4,
"area": 25.621
}
},
"surface4": {
"kind": "roof",
"edges": [
[
"e109",
"e106",
"e103"
],
[
"e110",
"e111",
"e112",
"e113"
]
],
"properties": {
"material": "asphalt",
"pitch": 4,
"area": 24.638
}
}
},
"components": {
"roof": {
"surfaces": [
"surface1",
"surface2",
"surface3",
"surface4"
]
}
}
},
{
"kind": "structure",
"projection": "crs84",
"points": {
"c111": {
"kind": "corner",
"coordinates": [
-93.38296654357835,
45.01588232625001,
297.4300534883514
]
},
"c112": {
"kind": "corner",
"coordinates": [
-93.38296520261137,
45.01580529784941,
297.4300534874201
]
},
"c113": {
"kind": "corner",
"coordinates": [
-93.38301710992096,
45.01584010318367,
298.87778268940747
]
},
"c114": {
"kind": "corner",
"coordinates": [
-93.383017220818,
45.01584647305375,
298.87778268847615
]
},
"c115": {
"kind": "corner",
"coordinates": [
-93.38306778969215,
45.01580439932028,
297.4300534874201
]
},
"c116": {
"kind": "corner",
"coordinates": [
-93.38306913079664,
45.015881427719684,
297.4300534883514
]
},
"ground": {
"kind": "ground",
"coordinates": [
-93.38306913079664,
45.01580439932029,
295.1345520019531
]
}
},
"edges": {
"e114": {
"kind": "eave",
"points": [
"c111",
"c112"
],
"properties": {
"attachments": [
"gutter"
],
"length": 8.561
}
},
"e115": {
"kind": "hip",
"points": [
"c112",
"c113"
],
"properties": {
"length": 5.814
}
},
"e122": {
"kind": "eave",
"points": [
"c112",
"c115"
],
"properties": {
"attachments": [
"gutter"
],
"length": 8.087
}
},
"e116": {
"kind": "ridge",
"points": [
"c113",
"c114"
],
"properties": {
"length": 0.708
}
},
"e117": {
"kind": "hip",
"points": [
"c114",
"c111"
],
"properties": {
"length": 5.825
}
},
"e119": {
"kind": "hip",
"points": [
"c114",
"c116"
],
"properties": {
"length": 5.825
}
},
"e118": {
"kind": "eave",
"points": [
"c115",
"c116"
],
"properties": {
"attachments": [
"gutter"
],
"length": 8.561
}
},
"e120": {
"kind": "hip",
"points": [
"c115",
"c113"
],
"properties": {
"length": 5.814
}
},
"e121": {
"kind": "eave",
"points": [
"c116",
"c111"
],
"properties": {
"attachments": [
"gutter"
],
"length": 8.087
}
}
},
"surfaces": {
"surface5": {
"kind": "roof",
"edges": [
[
"e114",
"e115",
"e116",
"e117"
]
],
"properties": {
"material": "asphalt",
"pitch": 4,
"area": 19.906
}
},
"surface6": {
"kind": "roof",
"edges": [
[
"e118",
"e119",
"e116",
"e120"
]
],
"properties": {
"material": "asphalt",
"pitch": 4,
"area": 19.906
}
},
"surface7": {
"kind": "roof",
"edges": [
[
"e121",
"e117",
"e119"
]
],
"properties": {
"material": "asphalt",
"pitch": 4,
"area": 16.955
}
},
"surface8": {
"kind": "roof",
"edges": [
[
"e120",
"e115",
"e122"
]
],
"properties": {
"material": "asphalt",
"pitch": 4,
"area": 16.892
}
}
},
"components": {
"roof": {
"surfaces": [
"surface5",
"surface6",
"surface7",
"surface8"
]
}
}
}
]
}
Parameters
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 and to share them.
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": 3002,
"next": "http://api.geospan.com/shop/api/gpro/jobs/?limit=2&offset=2",
"previous": null,
"results": [
{
"status": "Publish",
"product": {
"upc": "ROOF-S"
},
"url": "http://api.geospan.com/shop/api/jobs/3002/",
"order": {
"url": "http://api.geospan.com/shop/api/orders/2905/",
"id": 2905,
"number": "103041",
"status": "Completed",
"basket": {
"customer_name": "Contact AtYourCompany",
"reference_id": ""
},
"email": "contact@yourcompany.com"
},
"location": {
"type": "Point",
"coordinates": [
-93.18739,
44.71353
]
},
"location_description": "",
"attachments": [],
"date_created": "2024-08-16T14:58:13.230552Z",
"date_updated": "2024-08-16T16:02:22.250881Z",
"status_reason": null,
"id": 3002,
"extra": null,
"production_user": null,
"production_team": "HDS-1",
"customer_notes": "",
"address": "16288 Fairgreen Ave, Rosemount, MN 55068",
"building_info": "",
"siblings": "http://api.geospan.com/shop/api/jobs/3002/siblings/",
"history": "http://api.geospan.com/shop/api/jobs/3002/history/",
"share_key": "0123a45678b9cdef0123a45678b9cdef",
"priority": 5,
"result_type": "geoid",
"result": "{\"geoid\":\"xyz54321-5776-4591-9820-e69994a8bf93\",\"id\":5206}"
},
{
"status": "Publish",
"product": {
"upc": "ROOF-S"
},
"url": "http://api.geospan.com/shop/api/jobs/3001/",
"order": {
"url": "http://api.geospan.com/shop/api/orders/2904/",
"id": 2904,
"number": "103040",
"status": "Completed",
"basket": {
"customer_name": "Contact AtYourCompany",
"reference_id": ""
},
"email": "contact@yourcompany.com"
},
"location": {
"type": "Point",
"coordinates": [
-93.1874566,
44.7134632
]
},
"location_description": "",
"attachments": [],
"date_created": "2024-08-16T13:52:21.766780Z",
"date_updated": "2024-08-16T14:48:23.015383Z",
"status_reason": null,
"id": 3001,
"extra": null,
"production_user": null,
"production_team": "HDS-1",
"customer_notes": "",
"address": "16306 Fairgreen Ave, Rosemount, MN 55068",
"building_info": "",
"siblings": "http://api.geospan.com/shop/api/jobs/3001/siblings/",
"history": "http://api.geospan.com/shop/api/jobs/3001/history/",
"share_key": "3210a45678b9cdef0123a45678b9cdef",
"priority": 5,
"result_type": "geoid",
"result": "{\"geoid\":\"abc12345-e3c1-475f-b82e-237c828f7a32\",\"id\":5205}"
}
]
}
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) |
priority |
Orders by the job priority |
-priority |
Orders by the job priority (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) |
priority
[optional] [type: integer] Priority level for the job. See the table below for possible values.
Value | Description |
---|---|
1 |
Lowest Priority |
5 |
Standard Priority |
10 |
Rush Priority |
priority__isnot
[optional] [type: string] Filter jobs where the priority is not the specified value.
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) |
priority |
Orders by the job priority |
-priority |
Orders by the job priority (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/2971/' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{
"status": "Publish",
"product": {
"upc": "ROOF-S"
},
"url": "http://api.geospan.com/shop/api/jobs/2971/",
"order": {
"url": "http://api.geospan.com/shop/api/orders/2874/",
"id": 2874,
"number": "103010",
"status": "Completed",
"basket": {
"customer_name": "Contact AtYourCompany",
"reference_id": ""
},
"email": "contact@yourcompany.com"
},
"location": {
"type": "Point",
"coordinates": [
-93.18739,
44.71353
]
},
"location_description": "",
"attachments": [],
"date_created": "2024-07-25T15:35:13.078159Z",
"date_updated": "2024-07-26T16:34:03.126315Z",
"status_reason": null,
"id": 2971,
"extra": null,
"production_user": null,
"production_team": "HDS-1",
"customer_notes": "note here",
"address": "16288 Fairgreen Ave, Rosemount, MN 55068",
"building_info": "",
"siblings": "http://api.geospan.com/shop/api/jobs/2971/siblings/",
"history": "http://api.geospan.com/shop/api/jobs/2971/history/",
"share_key": "0123a45678b9cdef0123a45678b9cdef",
"priority": 5,
"result_type": "geoid",
"result": "{\"geoid\":\"abc12345-c7df-4e84-ab88-1e758a5c7b88\",\"id\":5191}"
}
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}/structures/
HTTP methodDRAFT CONTENT Return a Structures JSON structurecollection of all structures on the order.
curl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/jobs/2971/structures/?projection=crs84' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{
"kind": "structurecollection",
"structures": [
{
"kind": "structure",
"projection": "crs84",
"points": {
"c101": {
"kind": "corner",
"coordinates": [
-93.36791861497224,
45.02530878213521,
278.8077878113836
]
},
"c102": {
"kind": "corner",
"coordinates": [
-93.36786325029368,
45.025347735448214,
280.56030232738703
]
},
"c103": {
"kind": "corner",
"coordinates": [
-93.36780383374325,
45.025347735451795,
280.56030232366174
]
},
"c104": {
"kind": "corner",
"coordinates": [
-93.36774825953246,
45.02530878214529,
278.8077878113836
]
},
"c105": {
"kind": "corner",
"coordinates": [
-93.36791861509695,
45.02538668869866,
278.8077878104523
]
},
"c106": {
"kind": "corner",
"coordinates": [
-93.36782082017419,
45.0253866887355,
278.8077843617648
]
},
"c107": {
"kind": "corner",
"coordinates": [
-93.3677845326412,
45.02536126402634,
279.95164851192385
]
},
"c108": {
"kind": "corner",
"coordinates": [
-93.36778453263756,
45.025366213704366,
279.95164866466075
]
},
"c109": {
"kind": "corner",
"coordinates": [
-93.36774825941929,
45.02539168008893,
278.80778821278363
]
},
"c110": {
"kind": "corner",
"coordinates": [
-93.36782082017369,
45.02539167919033,
278.8077878113836
]
},
"ground": {
"kind": "ground",
"coordinates": [
-93.36791861509695,
45.02530878213523,
275.9885253915563
]
}
},
"edges": {
"e101": {
"kind": "hip",
"points": [
"c101",
"c102"
],
"properties": {
"length": 6.392
}
},
"e112": {
"kind": "eave",
"points": [
"c101",
"c105"
],
"properties": {
"attachments": [
"gutter"
],
"length": 8.658
}
},
"e102": {
"kind": "ridge",
"points": [
"c102",
"c103"
],
"properties": {
"length": 4.683
}
},
"e103": {
"kind": "hip",
"points": [
"c103",
"c104"
],
"properties": {
"length": 6.403
}
},
"e107": {
"kind": "hip",
"points": [
"c103",
"c107"
],
"properties": {
"length": 2.224
}
},
"e104": {
"kind": "eave",
"points": [
"c104",
"c101"
],
"properties": {
"attachments": [
"gutter"
],
"length": 13.427
}
},
"e105": {
"kind": "eave",
"points": [
"c105",
"c106"
],
"properties": {
"attachments": [
"gutter"
],
"length": 7.708
}
},
"e108": {
"kind": "hip",
"points": [
"c105",
"c102"
],
"properties": {
"length": 6.392
}
},
"e106": {
"kind": "valley",
"points": [
"c107",
"c106"
],
"properties": {
"length": 4.18
}
},
"e109": {
"kind": "ridge",
"points": [
"c107",
"c108"
],
"properties": {
"length": 0.55
}
},
"e110": {
"kind": "hip",
"points": [
"c108",
"c109"
],
"properties": {
"length": 4.182
}
},
"e113": {
"kind": "hip",
"points": [
"c108",
"c110"
],
"properties": {
"length": 4.183
}
},
"e111": {
"kind": "eave",
"points": [
"c109",
"c104"
],
"properties": {
"attachments": [
"gutter"
],
"length": 9.213
}
},
"e114": {
"kind": "eave",
"points": [
"c110",
"c109"
],
"properties": {
"attachments": [
"gutter"
],
"length": 5.719
}
},
"e115": {
"kind": "eave",
"points": [
"c106",
"c110"
],
"properties": {
"attachments": [
"gutter"
],
"length": 0.555
}
}
},
"surfaces": {
"surface1": {
"kind": "roof",
"edges": [
[
"e101",
"e102",
"e103",
"e104"
]
],
"properties": {
"material": "asphalt",
"pitch": 5,
"area": 42.29
}
},
"surface2": {
"kind": "roof",
"edges": [
[
"e105",
"e106",
"e107",
"e102",
"e108"
]
],
"properties": {
"material": "asphalt",
"pitch": 5,
"area": 33.573
}
},
"surface3": {
"kind": "roof",
"edges": [
[
"e107",
"e109",
"e110",
"e111",
"e103"
]
],
"properties": {
"material": "asphalt",
"pitch": 5,
"area": 22.125
}
},
"surface4": {
"kind": "roof",
"edges": [
[
"e108",
"e101",
"e112"
]
],
"properties": {
"material": "asphalt",
"pitch": 5,
"area": 20.358
}
},
"surface5": {
"kind": "roof",
"edges": [
[
"e110",
"e113",
"e114"
]
],
"properties": {
"material": "asphalt",
"pitch": 5,
"area": 8.729
}
},
"surface6": {
"kind": "roof",
"edges": [
[
"e109",
"e106",
"e115",
"e113"
]
],
"properties": {
"material": "asphalt",
"pitch": 5,
"area": 1.702
}
}
},
"components": {
"roof": {
"surfaces": [
"surface1",
"surface2",
"surface3",
"surface4",
"surface5",
"surface6"
]
}
}
}
]
}
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.
GET /jobs/{id}/oblique/
HTTP methodcurl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/jobs/2971/oblique/?orientation=n' \
-H 'Authorization: Api-Key <geospanapikeystring>' \
--output 2971_oblique_orientation-n.jpg
The output is saved to a file named 2971_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 |
GET /jobs/{id}/ortho/{layer}/{z}/{x}/{y}/
HTTP methodcurl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/jobs/2971/ortho/base/12/2048/2048/' \
-H 'Authorization: Api-Key <geospanapikeystring>' \
--output 2971_ortho_base-12-2048-2048.jpg
The output is saved to a file named 2971_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.
Share jobs
roof_model_express
product.
When a job is shared, it receives a share_key
that can be used to access job data through the shared-jobs endpoints without requiring an API key or authentication token. This endpoint is particularly useful for creating shared access to job data, enabling collaboration or viewing by external parties without the need for full access.
When you share a job, the URL is in the form https://apps.geospan.com/gsuite/shared/<shared_key>
.
If you unshare and then share again, the share key changes. Get the updated share key to forward to individuals.
Security Considerations: The share_key
is a critical security element. Anyone with this key can access the job details, so it should be shared cautiously and only with trusted parties. This key should be kept secure, as it provides direct access to job information. Consider implementing expiration mechanisms or other security controls depending on your application’s requirements.
Rate Limiting and Quota: As with other API endpoints, be mindful of potential limits when accessing shared jobs, especially if automating requests or sharing with multiple users.
GET /jobs/{id}/share/
HTTP method
curl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/jobs/2971/share/' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{"share_key":"12345ab67890cd12345ab67890cd"}
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 the share key. The id can be obtained from the result of other API calls, such as listing jobs with GET /jobs/, or from user interfaces.
POST /jobs/{id}/share/
HTTP method
curl -X 'POST' \
'https://api.geospan.com/remote4d/v1/api/gpro/jobs/3002/share/' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{"share_key":"0987z8765y6543w0987z8765y6543w"}
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 create a share key. The id can be obtained from the result of other API calls, such as listing jobs with GET /jobs/, or from user interfaces.
PATCH /jobs/{id}/share/
This PATCH jobs/{id}/share
call toggles the share_key
between a new share key and an empty string.
The share key can be set as a call to POST /jobs/{id}/share/
or through the Share button on the user interface for the job. If a share key has not been set through these other means, calling PATCH on the jobs/{id}/share
endpoint for the first time sets an initial value of the share key. Its function, however, is to toggle the share state.
HTTP method
curl -X 'PATCH' \
'https://api.geospan.com/remote4d/v1/api/gpro/jobs/3002/share/' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>' \
-H 'Content-Type: application/json' \
-d '{"share_key": "8765lkj4321oiuy0m9n8n9876grd32"}'
{"share_key":"8765lkj4321oiuy0m9n8n9876grd32"}
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 update the share key value. The id can be obtained from the result of other API calls, such as listing jobs with GET /jobs/, or from user interfaces.
- DELETE /jobs/{id}/share/
curl -X 'DELETE' \
'https://api.geospan.com/remote4d/v1/api/gpro/jobs/2971/share/' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
No message returned.
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 delete the share key value. The id can be obtained from the result of other API calls, such as listing jobs with GET /jobs/, or from user interfaces.
Get information about shared jobs
The /shared-jobs/{share_key}/
endpoint provides access to the details of a shared job using a share_key
. This endpoint is useful for retrieving job information without requiring full authentication, making it ideal for sharing job details with external parties or collaborators. The share_key
serves as a secure, unique identifier that provides access to the specific job data.
The share_key
is a unique string generated when a job is shared. It acts as a secure token that allows access to job details without requiring standard API authentication. This key should be kept secure, as it provides direct access to job information.
Retrieve the share_key
from the response of a POST /jobs/{id}/share/
or PATCH /jobs/{id}/share/
request, where it is created or updated. You can also get the share_key
from GET /jobs/{id}/share/, and from the end-user interface.
GET /shared-jobs/{share_key}/
HTTP method
curl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/shared-jobs/0123a45678b9cdef0123a45678b9cdef/' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{
"status": "Publish",
"product": {
"upc": "ROOF-S"
},
"url": "http://api.geospan.com/shop/api/jobs/2856/",
"order": {
"url": "http://api.geospan.com/shop/api/orders/2761/",
"id": 2761,
"number": "102895",
"status": "Completed",
"basket": {
"customer_name": "Your company orderer",
"reference_id": "E2E100"
},
"email": "orderer@yourcompany.com"
},
"location": {
"type": "Point",
"coordinates": [
-93.18739,
44.71516
]
},
"location_description": "",
"attachments": [],
"date_created": "2024-03-18T19:44:07.583350Z",
"date_updated": "2024-08-26T20:27:11.414115Z",
"status_reason": null,
"id": 2856,
"extra": {
"origin": "verisk",
"origin_id": "1234abcd-0987-5678-xyz1-1234asdf9876"
},
"production_user": null,
"production_team": "QAE-1",
"customer_notes": "",
"address": "16162 Fairgreen Ave, Rosemount, MN 55068",
"building_info": "",
"siblings": "http://api.geospan.com/shop/api/jobs/2856/siblings/",
"history": "http://api.geospan.com/shop/api/jobs/2856/history/",
"share_key": "03ec238cb2a9b193ecda1b497c83871a",
"priority": 5,
"result_type": "geoid",
"result": "{\"geoid\":\"9876zyxw-098z-123a-456b-78901234asdf\",\"id\":5089}"
}
share_key
[Required][type:string] Any valid share_key
string (for example, 0123a45678b9cdef0123a45678b9cdef
). A unique identifier used to access a shared job, this key is generated when a job is shared.
GET /shared-jobs/{share_key}/geoid/
HTTP method
curl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/shared-jobs/0123a45678b9cdef0123a45678b9cdef/geoid/' \
-H 'accept: application/json' \
-H 'Authorization: Api-Key <geospanapikeystring>'
{
"id": 5089,
"status": "D",
"geoid": "537cd2a5-a311-41ec-b4f5-43aa0c36e6d0",
"roof_model": "{\"content\":[{\"ParcelID\":\"job2856\",\"BldgNum\":\"1\",\"ComponNum\":\"1\",\"GraphicJson\":\"{\\\"groundElev\\\":284.2817687988281,\\\"hingePt\\\":null,\\\"corners\\\":{\\\"53fc4d11-d6d0-6694-b304-4cb43e7c03c9\\\":{\\\"x\\\":-252433.40573928275,\\\"y\\\":-4533102.750433343,\\\"z\\\":4465112.13824828},\\\"ca432e78-4c47-309d-03bf-0055b18aaf14\\\":{\\\"x\\\":-252433.4697731101,\\\"y\\\":-4533104.741977499,\\\"z\\\":4465108.06719631},\\\"a83e254a-8d0b-2844-e519-f2be5f4df9ca\\\":{\\\"x\\\":-252445.1894685201,\\\"y\\\":-4533104.17409267,\\\"z\\\":4465107.981158005},\\\"98caebe7-f52d-de0e-89fa-adbdd3dc0af6\\\":{\\\"x\\\":-252445.1251123508,\\\"y\\\":-4533102.182634073,\\\"z\\\":4465112.052281542}},\\\"walls\\\":[{\\\"corner1\\\":\\\"ca432e78-4c47-309d-03bf-0055b18aaf14\\\",\\\"corner2\\\":\\\"53fc4d11-d6d0-6694-b304-4cb43e7c03c9\\\",\\\"wallType\\\":\\\"r\\\"},{\\\"corner1\\\":\\\"a83e254a-8d0b-2844-e519-f2be5f4df9ca\\\",\\\"corner2\\\":\\\"ca432e78-4c47-309d-03bf-0055b18aaf14\\\",\\\"wallType\\\":\\\"e\\\"},{\\\"corner1\\\":\\\"98caebe7-f52d-de0e-89fa-adbdd3dc0af6\\\",\\\"corner2\\\":\\\"a83e254a-8d0b-2844-e519-f2be5f4df9ca\\\",\\\"wallType\\\":\\\"r\\\"},{\\\"corner1\\\":\\\"53fc4d11-d6d0-6694-b304-4cb43e7c03c9\\\",\\\"corner2\\\":\\\"98caebe7-f52d-de0e-89fa-adbdd3dc0af6\\\",\\\"wallType\\\":\\\"d\\\"}],\\\"cornersOrder\\\":[[-252433.40573928275,-4533102.750433343,4465112.13824828],[-252433.4697731101,-4533104.741977499,4465108.06719631],[-252445.1894685201,-4533104.17409267,4465107.981158005],[-252445.1251123508,-4533102.182634073,4465112.052281542]],\\\"roomCtrlPts\\\":[{\\\"roomName\\\":\\\"job2856&1&1&dn2qi\\\",\\\"myCtrl\\\":[\\\"a83e254a-8...,ca432e78-4c...\\\",\\\"98caebe...\\\"],\\\"ctrl2Pt\\\":true,\\\"materialType\\\":null,\\\"poiObjs\\\":[]}],\\\"cutoutParent\\\":null,\\\"cutoutType\\\":null}\",\"LevelNum\":1,\"tempID\":\"job2856@1@1@dn2qi\"},{\"ParcelID\":\"job2856\",\"BldgNum\":\"1\",\"ComponNum\":\"2\",\"GraphicJson\":\"{\\\"groundElev\\\":284.2817687988281,\\\"hingePt\\\":null,\\\"corners\\\":{\\\"53fc4d11-d6d0-6694-b304-4cb43e7c03c9\\\":{\\\"x\\\":-252433.40573928275,\\\"y\\\":-4533102.750433343,\\\"z\\\":4465112.13824828},\\\"98caebe7-f52d-de0e-89fa-adbdd3dc0af6\\\":{\\\"x\\\":-252445.1251123508,\\\"y\\\":-4533102.182634073,\\\"z\\\":4465112.052281542},\\\"f45af621-70c9-b273-0003-cf034d661d04\\\":{\\\"x\\\":-252444.946114973,\\\"y\\\":-4533098.129825465,\\\"z\\\":4465114.088580731},\\\"b7952dc3-7255-df15-3b6c-295637d75241\\\":{\\\"x\\\":-252438.85690594575,\\\"y\\\":-4533098.424884663,\\\"z\\\":4465114.133286617},\\\"4e441b32-91a9-f41d-c4c4-1595c8f07df8\\\":{\\\"x\\\":-252438.2768597194,\\\"y\\\":-4533099.027264776,\\\"z\\\":4465113.84981524},\\\"efd601d1-5983-20c1-30e9-3bcf8d201988\\\":{\\\"x\\\":-252437.6433304065,\\\"y\\\":-4533098.481918708,\\\"z\\\":4465114.143109792},\\\"9037c3cf-e7ca-ff7b-2001-25e16b15608c\\\":{\\\"x\\\":-252433.22314167113,\\\"y\\\":-4533098.696102111,\\\"z\\\":4465114.17556043}},\\\"walls\\\":[{\\\"corner1\\\":\\\"53fc4d11-d6d0-6694-b304-4cb43e7c03c9\\\",\\\"corner2\\\":\\\"98caebe7-f52d-de0e-89fa-adbdd3dc0af6\\\",\\\"wallType\\\":\\\"d\\\"},{\\\"corner1\\\":\\\"f45af621-70c9-b273-0003-cf034d661d04\\\",\\\"corner2\\\":\\\"98caebe7-f52d-de0e-89fa-adbdd3dc0af6\\\",\\\"wallType\\\":\\\"r\\\"},{\\\"corner1\\\":\\\"b7952dc3-7255-df15-3b6c-295637d75241\\\",\\\"corner2\\\":\\\"f45af621-70c9-b273-0003-cf034d661d04\\\",\\\"wallType\\\":\\\"g\\\"},{\\\"corner1\\\":\\\"b7952dc3-7255-df15-3b6c-295637d75241\\\",\\\"corner2\\\":\\\"4e441b32-91a9-f41d-c4c4-1595c8f07df8\\\",\\\"wallType\\\":\\\"n\\\"},{\\\"corner1\\\":\\\"efd601d1-5983-20c1-30e9-3bcf8d201988\\\",\\\"corner2\\\":\\\"4e441b32-91a9-f41d-c4c4-1595c8f07df8\\\",\\\"wallType\\\":\\\"n\\\"},{\\\"corner1\\\":\\\"efd601d1-5983-20c1-30e9-3bcf8d201988\\\",\\\"corner2\\\":\\\"9037c3cf-e7ca-ff7b-2001-25e16b15608c\\\",\\\"wallType\\\":\\\"e\\\"},{\\\"corner1\\\":\\\"9037c3cf-e7ca-ff7b-2001-25e16b15608c\\\",\\\"corner2\\\":\\\"53fc4d11-d6d0-6694-b304-4cb43e7c03c9\\\",\\\"wallType\\\":\\\"r\\\"}],\\\"cornersOrder\\\":[[-252433.40573928275,-4533102.750433343,4465112.13824828],[-252445.1251123508,-4533102.182634073,4465112.052281542],[-252444.946114973,-4533098.129825465,4465114.088580731],[-252438.85690594575,-4533098.424884663,4465114.133286617],[-252438.2768597194,-4533099.027264776,4465113.84981524],[-252437.6433304065,-4533098.481918708,4465114.143109792],[-252433.22314167113,-4533098.696102111,4465114.17556043]],\\\"roomCtrlPts\\\":[{\\\"roomName\\\":\\\"job2856&1&2&dbz95\\\",\\\"myCtrl\\\":[\\\"53fc4d11-d...,98caeb...\\\",\\\"efd601...\\\"],\\\"ctrl2Pt\\\":true,\\\"materialType\\\":null,\\\"poiObjs\\\":[]}],\\\"cutoutParent\\\":null,\\\"cutoutType\\\":null}\",\"LevelNum\":1,\"tempID\":\"job2856@1@2@dbz95\"},{\"ParcelID\":\"job2856\",\"BldgNum\":\"1\",\"ComponNum\":\"3\",\"GraphicJson\":\"{\\\"groundElev\\\":284.2817687988281,\\\"hingePt\\\":null,\\\"corners\\\":{\\\"072c321f-bb19-9243-492a-07856554145b\\\":{\\\"x\\\":-252438.00459117617,\\\"y\\\":-4533092.392307089,\\\"z\\\":4465120.555984414},\\\"c7f1a239-2039-3b40-e5b7-0ed5a7d2ea47\\\":{\\\"x\\\":-252432.98290329005,\\\"y\\\":-4533091.44294743,\\\"z\\\":4465119.412825007},\\\"0310919c-e265-d9eb-799b-9dc732ab6e21\\\":{\\\"x\\\":-252433.25517203115,\\\"y\\\":-4533098.0779082095,\\\"z\\\":4465112.706662344},\\\"0b882747-9416-8002-169f-c7576f446814\\\":{\\\"x\\\":-252433.56301924028,\\\"y\\\":-4533098.13588638,\\\"z\\\":4465112.776968592},\\\"8dbf0af3-1452-4518-dd70-0fff099da0de\\\":{\\\"x\\\":-252437.66080003206,\\\"y\\\":-4533098.907638827,\\\"z\\\":4465113.712821135},\\\"e21a7927-bd73-72b2-fc09-feec565e7bc6\\\":{\\\"x\\\":-252437.64333040648,\\\"y\\\":-4533098.481918709,\\\"z\\\":4465114.143109792},\\\"cb4688dd-85c0-da55-999a-f27e95dbf79f\\\":{\\\"x\\\":-252438.27685971936,\\\"y\\\":-4533099.027264776,\\\"z\\\":4465113.849815241}},\\\"walls\\\":[{\\\"corner1\\\":\\\"072c321f-bb19-9243-492a-07856554145b\\\",\\\"corner2\\\":\\\"c7f1a239-2039-3b40-e5b7-0ed5a7d2ea47\\\",\\\"wallType\\\":\\\"r\\\"},{\\\"corner1\\\":\\\"c7f1a239-2039-3b40-e5b7-0ed5a7d2ea47\\\",\\\"corner2\\\":\\\"0310919c-e265-d9eb-799b-9dc732ab6e21\\\",\\\"wallType\\\":\\\"e\\\"},{\\\"corner1\\\":\\\"0b882747-9416-8002-169f-c7576f446814\\\",\\\"corner2\\\":\\\"0310919c-e265-d9eb-799b-9dc732ab6e21\\\",\\\"wallType\\\":\\\"r\\\"},{\\\"corner1\\\":\\\"8dbf0af3-1452-4518-dd70-0fff099da0de\\\",\\\"corner2\\\":\\\"0b882747-9416-8002-169f-c7576f446814\\\",\\\"wallType\\\":\\\"s\\\"},{\\\"corner1\\\":\\\"e21a7927-bd73-72b2-fc09-feec565e7bc6\\\",\\\"corner2\\\":\\\"8dbf0af3-1452-4518-dd70-0fff099da0de\\\",\\\"wallType\\\":\\\"n\\\"},{\\\"corner1\\\":\\\"e21a7927-bd73-72b2-fc09-feec565e7bc6\\\",\\\"corner2\\\":\\\"cb4688dd-85c0-da55-999a-f27e95dbf79f\\\",\\\"wallType\\\":\\\"v\\\"},{\\\"corner1\\\":\\\"cb4688dd-85c0-da55-999a-f27e95dbf79f\\\",\\\"corner2\\\":\\\"072c321f-bb19-9243-492a-07856554145b\\\",\\\"wallType\\\":\\\"d\\\"}],\\\"cornersOrder\\\":[[-252438.00459117617,-4533092.392307089,4465120.555984414],[-252432.98290329005,-4533091.44294743,4465119.412825007],[-252433.25517203115,-4533098.0779082095,4465112.706662344],[-252433.56301924028,-4533098.13588638,4465112.776968592],[-252437.66080003206,-4533098.907638827,4465113.712821135],[-252437.64333040648,-4533098.481918709,4465114.143109792],[-252438.27685971936,-4533099.027264776,4465113.849815241]],\\\"roomCtrlPts\\\":[{\\\"roomName\\\":\\\"job2856&1&3&pipxg4\\\",\\\"myCtrl\\\":[\\\"cb4688dd-8...,072c321f-bb...\\\",\\\"c7f1a2...\\\"],\\\"ctrl2Pt\\\":true,\\\"materialType\\\":null,\\\"poiObjs\\\":[]}],\\\"cutoutParent\\\":null,\\\"cutoutType\\\":null}\",\"LevelNum\":1,\"tempID\":\"job2856@1@3@pipxg4\"},{\"ParcelID\":\"job2856\",\"BldgNum\":\"1\",\"ComponNum\":\"4\",\"GraphicJson\":\"{\\\"groundElev\\\":284.2817687988281,\\\"hingePt\\\":null,\\\"corners\\\":{\\\"6dc7bdf0-2542-c997-a614-cdb8d952c323\\\":{\\\"x\\\":-252442.8902726021,\\\"y\\\":-4533090.963113398,\\\"z\\\":4465119.3403225895},\\\"072c321f-bb19-9243-492a-07856554145b\\\":{\\\"x\\\":-252438.00459117617,\\\"y\\\":-4533092.392307089,\\\"z\\\":4465120.555984414},\\\"cb4688dd-85c0-da55-999a-f27e95dbf79f\\\":{\\\"x\\\":-252438.27685971936,\\\"y\\\":-4533099.027264776,\\\"z\\\":4465113.849815241},\\\"e594d0d7-a6c3-edc3-28e4-21a546b67f16\\\":{\\\"x\\\":-252438.85690594578,\\\"y\\\":-4533098.424884664,\\\"z\\\":4465114.133286617},\\\"a91f98ce-f98b-b86f-5858-4a3d646ea22b\\\":{\\\"x\\\":-252438.87446771425,\\\"y\\\":-4533098.852850227,\\\"z\\\":4465113.700728418},\\\"3c917bde-4a92-0593-7e14-3abeea730ff4\\\":{\\\"x\\\":-252443.16254134322,\\\"y\\\":-4533097.598074179,\\\"z\\\":4465112.634159926}},\\\"walls\\\":[{\\\"corner1\\\":\\\"6dc7bdf0-2542-c997-a614-cdb8d952c323\\\",\\\"corner2\\\":\\\"072c321f-bb19-9243-492a-07856554145b\\\",\\\"wallType\\\":\\\"r\\\"},{\\\"corner1\\\":\\\"cb4688dd-85c0-da55-999a-f27e95dbf79f\\\",\\\"corner2\\\":\\\"072c321f-bb19-9243-492a-07856554145b\\\",\\\"wallType\\\":\\\"d\\\"},{\\\"corner1\\\":\\\"e594d0d7-a6c3-edc3-28e4-21a546b67f16\\\",\\\"corner2\\\":\\\"cb4688dd-85c0-da55-999a-f27e95dbf79f\\\",\\\"wallType\\\":\\\"v\\\"},{\\\"corner1\\\":\\\"e594d0d7-a6c3-edc3-28e4-21a546b67f16\\\",\\\"corner2\\\":\\\"a91f98ce-f98b-b86f-5858-4a3d646ea22b\\\",\\\"wallType\\\":\\\"n\\\"},{\\\"corner1\\\":\\\"a91f98ce-f98b-b86f-5858-4a3d646ea22b\\\",\\\"corner2\\\":\\\"3c917bde-4a92-0593-7e14-3abeea730ff4\\\",\\\"wallType\\\":\\\"s\\\"},{\\\"corner1\\\":\\\"3c917bde-4a92-0593-7e14-3abeea730ff4\\\",\\\"corner2\\\":\\\"6dc7bdf0-2542-c997-a614-cdb8d952c323\\\",\\\"wallType\\\":\\\"g\\\"}],\\\"cornersOrder\\\":[[-252442.8902726021,-4533090.963113398,4465119.3403225895],[-252438.00459117617,-4533092.392307089,4465120.555984414],[-252438.27685971936,-4533099.027264776,4465113.849815241],[-252438.85690594578,-4533098.424884664,4465114.133286617],[-252438.87446771425,-4533098.852850227,4465113.700728418],[-252443.16254134322,-4533097.598074179,4465112.634159926]],\\\"roomCtrlPts\\\":[{\\\"roomName\\\":\\\"job2856&1&4&n3eky\\\",\\\"myCtrl\\\":[\\\"cb4688dd-85...,072c321f-b...\\\",\\\"6dc7bdf0...\\\"],\\\"ctrl2Pt\\\":true,\\\"materialType\\\":null,\\\"poiObjs\\\":[]}],\\\"cutoutParent\\\":null,\\\"cutoutType\\\":null}\",\"LevelNum\":1,\"tempID\":\"job2856@1@4@n3eky\"},{\"ParcelID\":\"job2856\",\"BldgNum\":\"1\",\"ComponNum\":\"5\",\"GraphicJson\":\"{\\\"groundElev\\\":284.2817687988281,\\\"hingePt\\\":null,\\\"corners\\\":{\\\"1018641d-cfff-fd9e-d412-fe75d9d2bc09\\\":{\\\"x\\\":-252432.97829072867,\\\"y\\\":-4533100.061761592,\\\"z\\\":4465112.813912762},\\\"12594dcc-490d-6190-94b0-e834b5010509\\\":{\\\"x\\\":-252433.02205957274,\\\"y\\\":-4533101.12837228,\\\"z\\\":4465111.735852042},\\\"29c99044-628a-2d59-ec7e-377e17172b1e\\\":{\\\"x\\\":-252433.64878013442,\\\"y\\\":-4533101.423264464,\\\"z\\\":4465112.053056732},\\\"272af71e-b902-8e79-4005-bd3cfae7999b\\\":{\\\"x\\\":-252433.60276756957,\\\"y\\\":-4533100.356762353,\\\"z\\\":4465113.131133937}},\\\"walls\\\":[{\\\"corner1\\\":\\\"12594dcc-490d-6190-94b0-e834b5010509\\\",\\\"corner2\\\":\\\"1018641d-cfff-fd9e-d412-fe75d9d2bc09\\\",\\\"wallType\\\":\\\"e\\\"},{\\\"corner1\\\":\\\"12594dcc-490d-6190-94b0-e834b5010509\\\",\\\"corner2\\\":\\\"29c99044-628a-2d59-ec7e-377e17172b1e\\\",\\\"wallType\\\":\\\"h\\\"},{\\\"corner1\\\":\\\"29c99044-628a-2d59-ec7e-377e17172b1e\\\",\\\"corner2\\\":\\\"272af71e-b902-8e79-4005-bd3cfae7999b\\\",\\\"wallType\\\":\\\"f\\\"},{\\\"corner1\\\":\\\"1018641d-cfff-fd9e-d412-fe75d9d2bc09\\\",\\\"corner2\\\":\\\"272af71e-b902-8e79-4005-bd3cfae7999b\\\",\\\"wallType\\\":\\\"h\\\"}],\\\"cornersOrder\\\":[[-252432.97829072867,-4533100.061761592,4465112.813912762],[-252433.02205957274,-4533101.12837228,4465111.735852042],[-252433.64878013442,-4533101.423264464,4465112.053056732],[-252433.60276756957,-4533100.356762353,4465113.131133937]],\\\"roomCtrlPts\\\":[{\\\"roomName\\\":\\\"job2856&1&5&x7t8uw\\\",\\\"myCtrl\\\":[\\\"29c99044-6...,272af7...\\\",\\\"12594dcc-490...\\\"],\\\"ctrl2Pt\\\":true,\\\"materialType\\\":null,\\\"poiObjs\\\":[]}],\\\"cutoutParent\\\":null,\\\"cutoutType\\\":null}\",\"LevelNum\":1,\"tempID\":\"job2856@1@5@x7t8uw\"},{\"ParcelID\":\"job2856\",\"BldgNum\":\"1\",\"ComponNum\":\"6\",\"GraphicJson\":\"{\\\"groundElev\\\":284.2817687988281,\\\"hingePt\\\":null,\\\"corners\\\":{\\\"12594dcc-490d-6190-94b0-e834b5010509\\\":{\\\"x\\\":-252433.02205957274,\\\"y\\\":-4533101.12837228,\\\"z\\\":4465111.735852042},\\\"53567ce9-4aa7-16b7-54e8-45b49315f120\\\":{\\\"x\\\":-252433.64517179123,\\\"y\\\":-4533101.523473014,\\\"z\\\":4465111.299505856},\\\"29c99044-628a-2d59-ec7e-377e17172b1e\\\":{\\\"x\\\":-252433.64878013442,\\\"y\\\":-4533101.423264464,\\\"z\\\":4465112.053056732}},\\\"walls\\\":[{\\\"corner1\\\":\\\"12594dcc-490d-6190-94b0-e834b5010509\\\",\\\"corner2\\\":\\\"53567ce9-4aa7-16b7-54e8-45b49315f120\\\",\\\"wallType\\\":\\\"e\\\"},{\\\"corner1\\\":\\\"53567ce9-4aa7-16b7-54e8-45b49315f120\\\",\\\"corner2\\\":\\\"29c99044-628a-2d59-ec7e-377e17172b1e\\\",\\\"wallType\\\":\\\"s\\\"},{\\\"corner1\\\":\\\"12594dcc-490d-6190-94b0-e834b5010509\\\",\\\"corner2\\\":\\\"29c99044-628a-2d59-ec7e-377e17172b1e\\\",\\\"wallType\\\":\\\"h\\\"}],\\\"cornersOrder\\\":[[-252433.02205957274,-4533101.12837228,4465111.735852042],[-252433.64517179123,-4533101.523473014,4465111.299505856],[-252433.64878013442,-4533101.423264464,4465112.053056732]],\\\"roomCtrlPts\\\":[{\\\"roomName\\\":\\\"job2856&1&6&dfroal\\\",\\\"myCtrl\\\":[\\\"12594dcc-4...,53567ce9-4aa...\\\",\\\"29c99044-628a-2d...\\\"],\\\"ctrl2Pt\\\":true,\\\"materialType\\\":null,\\\"poiObjs\\\":[]}],\\\"cutoutParent\\\":null,\\\"cutoutType\\\":null}\",\"LevelNum\":1,\"tempID\":\"job2856@1@6@dfroal\"},{\"ParcelID\":\"job2856\",\"BldgNum\":\"1\",\"ComponNum\":\"7\",\"GraphicJson\":\"{\\\"groundElev\\\":284.2817687988281,\\\"hingePt\\\":null,\\\"corners\\\":{\\\"1018641d-cfff-fd9e-d412-fe75d9d2bc09\\\":{\\\"x\\\":-252432.97829072867,\\\"y\\\":-4533100.061761592,\\\"z\\\":4465112.813912762},\\\"272af71e-b902-8e79-4005-bd3cfae7999b\\\":{\\\"x\\\":-252433.60276756957,\\\"y\\\":-4533100.356762353,\\\"z\\\":4465113.131133937},\\\"82f17acc-70e8-8ebe-e834-8b23d1b396cb\\\":{\\\"x\\\":-252433.55693677737,\\\"y\\\":-4533099.613036891,\\\"z\\\":4465113.2339232275}},\\\"walls\\\":[{\\\"corner1\\\":\\\"1018641d-cfff-fd9e-d412-fe75d9d2bc09\\\",\\\"corner2\\\":\\\"272af71e-b902-8e79-4005-bd3cfae7999b\\\",\\\"wallType\\\":\\\"h\\\"},{\\\"corner1\\\":\\\"82f17acc-70e8-8ebe-e834-8b23d1b396cb\\\",\\\"corner2\\\":\\\"272af71e-b902-8e79-4005-bd3cfae7999b\\\",\\\"wallType\\\":\\\"s\\\"},{\\\"corner1\\\":\\\"1018641d-cfff-fd9e-d412-fe75d9d2bc09\\\",\\\"corner2\\\":\\\"82f17acc-70e8-8ebe-e834-8b23d1b396cb\\\",\\\"wallType\\\":\\\"e\\\"}],\\\"cornersOrder\\\":[[-252432.97829072867,-4533100.061761592,4465112.813912762],[-252433.60276756957,-4533100.356762353,4465113.131133937],[-252433.55693677737,-4533099.613036891,4465113.2339232275]],\\\"roomCtrlPts\\\":[{\\\"roomName\\\":\\\"job2856&1&7&b2wktb\\\",\\\"myCtrl\\\":[\\\"101864...,82f17acc-70e...\\\",\\\"272af71...\\\"],\\\"ctrl2Pt\\\":true,\\\"materialType\\\":null,\\\"poiObjs\\\":[]}],\\\"cutoutParent\\\":null,\\\"cutoutType\\\":null}\",\"LevelNum\":1,\"tempID\":\"job2856@1@7@b2wktb\"}]}",
"wall_model": null,
"cropped_image": null,
"parent": null
}
share_key
[Required][type:string] Any valid share_key
string (for example, 0123a45678b9cdef0123a45678b9cdef
). A unique identifier used to access a shared job, this key is generated when a job is shared.
GET /shared-jobs/{share_key}/oblique/
HTTP method
curl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/shared-jobs/0123a45678b9cdef0123a45678b9cdef/oblique/?orientation=n' \
-H 'Authorization: Api-Key <geospanapikeystring>' \
--output shared-jobs_b9cdef_oblique_orientation-n.jpg
The output is saved to a file named shared-jobs_b9cdef_oblique_orientation-n.jpg in the same directory where the cURL call was made.
share_key
[Required][type:string] Any valid share_key
string (for example, 0123a45678b9cdef0123a45678b9cdef
). A unique identifier used to access a shared job, this key is generated when a job is shared.
GET /shared-jobs/{share_key}/ortho/{layer}/{z}/{x}/{y}/
HTTP method
curl -X 'GET' \
'https://api.geospan.com/remote4d/v1/api/gpro/shared-jobs/0123a45678b9cdef0123a45678b9cdef/ortho/base/12/2048/2048/' \
-H 'Authorization: Api-Key <geospanapikeystring>' \
--output shared-jobs_8b9cdef_ortho_base-12-2048-2048.jpg
The output is saved to a file named shared-jobs_8b9cdef_ortho_base-12-2048-2048.jpg in the same directory where the cURL call was made.
Parameters
share_key
[Required][type:string] Any valid share_key
string (for example, 0123a45678b9cdef0123a45678b9cdef
). A unique identifier used to access a shared job, this key is generated when a job is shared.