Download OpenAPI specification:
Complete Trendspek API endpoints including core data types for annotations, datasets, assets, and upload workflows.
This uses current security best practice, implementing what is known as the Client Credentials Workflow.
Authentication will require a client secret and a client key.
Please refer to the Trendspek Support for help in obtaining these.
Access to the API, requires exchanging Client ID and Secret for an API Token.
The Expiry Time will be set to at most 1 hour. This short-lived API token is best practice, and will reduce the damage if the API token is intercepted.
Authenticate client id and secret and returns an access token
| client_id | string <integer> |
| client_secret | string <password> |
{- "client_id": "string",
- "client_secret": "pa$$word"
}{- "access_token": "string",
- "expires_in": 3600,
- "token_type": "string"
}API Endpoints to facilitate the Upload of datasets for processing and visualisation in Trendspek.
Actions:
| company required | string <uuid> Company UUID |
Create Dataset request
| asset_uuid | string or null <uuid> UUID of existing asset (optional for new assets) |
| type | string Value: ["photogrammetry","preprocessed_metashape","preprocessed_contextcapture","preprocessed_reality_capture","preprocessed_dji_terra"] Processing type for the dataset |
| name | string <= 255 characters Dataset name (required when asset_uuid is not provided, ignored when asset_uuid is provided) |
| description | string Dataset description |
| capture_date | string <date> The date when the dataset was captured |
| comments | string or null Uploader comments (optional) |
| metadata | object or null Optional metadata for the dataset (for future use) |
Array of objects non-empty Array of files to upload (minimum 1 file required) |
{- "asset_uuid": "76807d23-a41c-4ee1-a173-773f47fc22c8",
- "type": "photogrammetry",
- "name": "string",
- "description": "string",
- "capture_date": "2019-08-24",
- "comments": "string",
- "metadata": { },
- "upload_files": [
- {
- "filename": "IMG0001.jpg",
- "size_bytes": "12623312",
- "width": "3072",
- "height": "4080"
}
]
}{- "data": {
- "pending_dataset_uuid": "bdbdcf7a-f385-4296-a83f-a730f5a9bedf",
- "upload_project_uuid": "2d1ac789-ee57-4371-9263-b0e1ea8e5347",
- "gigapixels": "13800000",
- "gigapixels_remaining": "90000000",
- "storage": "54800600",
- "storage_remaining": "9000000000",
- "status": "UPLOADING",
- "upload_urls": [ ],
- "limits": {
- "gigapixels": {
- "total": 0,
- "used": 0,
- "available": 0,
- "attempting": 0
}, - "storage": {
- "total": 0,
- "used": 0,
- "available": 0,
- "attempting": 0
}, - "assets": {
- "total": 0,
- "used": 0,
- "available": 0,
- "attempting": 0
}, - "datasets": {
- "total": 0,
- "used": 0,
- "available": 0,
- "attempting": 0
}
}
}
}Actions:
| company required | string <uuid> Company UUID |
| pending_dataset required | string <uuid> Pending Dataset UUID from the create endpoint. |
Create Upload Project request
Array of objects non-empty Array of files to upload (minimum 1 file required) |
{- "upload_files": [
- {
- "filename": "IMG0001.jpg",
- "size_bytes": "12623312",
- "width": "3072",
- "height": "4080"
}
]
}{- "data": {
- "pending_dataset_uuid": "bdbdcf7a-f385-4296-a83f-a730f5a9bedf",
- "upload_project_uuid": "2d1ac789-ee57-4371-9263-b0e1ea8e5347",
- "gigapixels": "13800000",
- "gigapixels_remaining": "90000000",
- "storage": "54800600",
- "storage_remaining": "9000000000",
- "status": "UPLOADING",
- "upload_urls": [ ],
- "limits": {
- "gigapixels": {
- "total": 0,
- "used": 0,
- "available": 0,
- "attempting": 0
}, - "storage": {
- "total": 0,
- "used": 0,
- "available": 0,
- "attempting": 0
}, - "assets": {
- "total": 0,
- "used": 0,
- "available": 0,
- "attempting": 0
}, - "datasets": {
- "total": 0,
- "used": 0,
- "available": 0,
- "attempting": 0
}
}
}
}Actions:
| company required | string <uuid> Company UUID |
| pending_dataset required | string <uuid> Pending Dataset UUID from the create endpoint. |
Cancel upload request
| cancel_reason | string A short summary for cancelling upload |
{- "cancel_reason": "string"
}{- "error": "Unauthorized"
}Returns the current status of the upload project (e.g.: uploading, processing, processed, failed, cancelled).
| company required | string <uuid> Company UUID |
| pending_dataset required | string <uuid> Pending Dataset UUID from the create endpoint. |
{- "uuid": "string",
- "status": "string",
- "processor_comments": "string",
- "fail_reason": "string",
- "relationships": {
- "asset": {
- "uuid": "string",
- "links": "string"
}, - "dataset": {
- "uuid": "string",
- "links": "string"
}
}
}Signals that all dataset files have been uploaded and that processing can begin.
Actions:
| company required | string <uuid> Company UUID |
| pending_dataset required | string <uuid> Pending Dataset UUID from the create endpoint. |
{- "uuid": "string",
- "status": "string",
- "processor_comments": "string",
- "fail_reason": "string",
- "relationships": {
- "asset": {
- "uuid": "string",
- "links": "string"
}, - "dataset": {
- "uuid": "string",
- "links": "string"
}
}
}List the uploads for the company.
| company required | string <uuid> Example: 550e8400-e29b-41d4-a716-446655440000 Company UUID |
{- "data": [
- {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "dataset_name": "string",
- "processing_type": "string",
- "uploader_comments": "string",
- "upload_status": "string",
- "asset": {
- "uuid": "string",
- "links": "string"
}, - "user_uuid": "string",
- "created_at": "string",
- "updated_at": "string"
}
], - "links": {
- "first": "string",
- "last": "string",
- "prev": "string",
- "next": "string"
}, - "meta": {
- "path": "string",
- "per_page": "string",
- "next_cursor": "string",
- "prev_cursor": "string"
}
}Data endpoints typically come in two varieties: a list view and a show view.
List views show a reduced dataset and typically use cursor-based pagination for efficient handling of large sets of data. They can also be used for searching objects matching a certain criteria.
The Show views contains more data, and can optionally include related information.
Billing Companies contain one or more companies. Use these endpoints to review key contact details.
Retrieve the current billing company associated with the API token.
Details are for the primary contact for this Billing Company.
NB: This is the only singular endpoint, as only one billing company will ever be accessible at a time.
{- "data": {
- "uuid": "a0983359-3d8c-4575-85fb-d4d4968314a7",
- "name": "string",
- "first_name": "string",
- "last_name": "string",
- "position": "string",
- "email": "string",
- "phone": "string",
- "department": "string",
- "address_line_1": "string",
- "address_line_2": "string",
- "address_line_3": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country_code": "string",
- "created_at": "string",
- "updated_at": "string"
}
}Companies are the primary organisational unit within Trendspek.
Companies belong to Billing Companies.
Companies have Assets.
Users have a Role within a Company that gives them access to that Company.
Users must have an asset role assigned for each company asset they need access to.
This will return a list of accessible companies within the billing company.
You can filter the results by company name (partial match).
This endpoint uses cursor-based pagination for efficient handling of large sets of data.
| cursor | string Example: cursor=eyJjcmVhdGVkX2F0IjoiMjAyNC0wMS0xNSAxNDozMDowMCIsImlkIjoxMjN9 Cursor token for pagination. Use the next_cursor from the previous response to get the next page. |
| per_page | integer [ 1 .. 100 ] Default: 15 Example: per_page=25 Number of items per page (maximum: 100, default: 15) |
| filter[company] | string Example: filter[company]=Acme Corp Filter companies by name (partial match) |
{- "data": [
- {
- "uuid": "a0983359-3b84-4394-8588-945b6a02bae6",
- "name": "string",
- "website": "string",
- "data_location": "string",
- "timezone": "string",
- "created_at": "string",
- "updated_at": "string"
}
], - "links": {
- "first": "string",
- "last": "string",
- "prev": "string",
- "next": "string"
}, - "meta": {
- "path": "string",
- "per_page": "string",
- "next_cursor": "string",
- "prev_cursor": "string"
}
}Show a specific company's details.
You can include related resources using the 'include' parameter.
| company required | string <uuid> Example: 550e8400-e29b-41d4-a716-446655440000 Company UUID |
| include | string Example: include=billingCompany Comma-separated list of relationships to include (billingCompany) |
{- "data": {
- "uuid": "a0983359-3e22-4f95-8b8c-e34932fc6fb0",
- "name": "string",
- "website": "string",
- "data_location": "string",
- "timezone": "string",
- "created_at": "string",
- "updated_at": "string",
- "billing_company_uuid": "bbb60dc5-0c0f-4f13-9759-15188cf64c79",
- "billing_company": {
- "uuid": "a0983359-3d8c-4575-85fb-d4d4968314a7",
- "name": "string",
- "first_name": "string",
- "last_name": "string",
- "position": "string",
- "email": "string",
- "phone": "string",
- "department": "string",
- "address_line_1": "string",
- "address_line_2": "string",
- "address_line_3": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country_code": "string",
- "created_at": "string",
- "updated_at": "string"
}
}
}An Asset is a real-world object of interest—usually a building or built object.
An Asset will have one or more Datasets.
Retrieve a paginated collection of assets for the specified company.
You can filter the results by name, dataset, or annotation UUID.
This endpoint uses cursor-based pagination for efficient handling of large sets of data.
| company required | string <uuid> Example: 550e8400-e29b-41d4-a716-446655440000 Company UUID |
| cursor | string Example: cursor=eyJjcmVhdGVkX2F0IjoiMjAyNC0wMS0xNSAxNDozMDowMCIsImlkIjoxMjN9 Cursor token for pagination. Use the next_cursor from the previous response to get the next page. |
| per_page | integer [ 1 .. 100 ] Default: 15 Example: per_page=25 Number of items per page (maximum: 100, default: 15) |
| filter[name] | string Example: filter[name]=Building A Filter assets by name (partial match) |
{- "data": [
- {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "name": "string",
- "pose": {
- "heading": 1.6901096450070003,
- "pitch": -0.3824610189425868,
- "roll": 6.283185307179586,
- "position": {
- "x": -2341050.836201532,
- "y": 4866765.726717598,
- "z": -3382017.3390386524
}
}, - "address": "string",
- "location": "string",
- "metadata": {
- "plane_elevation": "string",
- "relative_level": "string"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "links": {
- "first": "string",
- "last": "string",
- "prev": "string",
- "next": "string"
}, - "meta": {
- "path": "string",
- "per_page": "string",
- "next_cursor": "string",
- "prev_cursor": "string"
}
}Retrieve a specific asset with its company relationship.
| company required | string <uuid> Company UUID |
| asset required | string <uuid> Asset UUID |
| include | string Example: include=company Comma-separated list of relationships to include (company) |
{- "data": {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "name": "string",
- "pose": {
- "heading": 1.6901096450070003,
- "pitch": -0.3824610189425868,
- "roll": 6.283185307179586,
- "position": {
- "x": -2341050.836201532,
- "y": 4866765.726717598,
- "z": -3382017.3390386524
}
}, - "address": "string",
- "location": "string",
- "metadata": {
- "plane_elevation": "string",
- "relative_level": "string"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "company_uuid": "aba69bec-94b3-48e8-9737-4f951465d0f8",
- "company": {
- "uuid": "a0983359-3b84-4394-8588-945b6a02bae6",
- "name": "string",
- "website": "string",
- "data_location": "string",
- "timezone": "string",
- "created_at": "string",
- "updated_at": "string"
}
}
}A Dataset is a representation of an Asset in 3D, captured at a point in time.
Datasets can have different types: e.g. photogrammetry, lidar, thermal.
Datasets can be captured over different points in time to see changes in an asset over time.
Retrieve a paginated collection of datasets for the specified company.
You can filter the results by name, asset, or annotation UUID.
This endpoint uses cursor-based pagination for efficient handling of large sets of data.
| company required | string <uuid> Example: 550e8400-e29b-41d4-a716-446655440000 Company UUID |
| cursor | string Example: cursor=eyJjcmVhdGVkX2F0IjoiMjAyNC0wMS0xNSAxNDozMDowMCIsImlkIjoxMjN9 Cursor token for pagination. Use the next_cursor from the previous response to get the next page. |
| per_page | integer [ 1 .. 100 ] Default: 15 Example: per_page=25 Number of items per page (maximum: 100, default: 15) |
| filter[name] | string Example: filter[name]=Dataset 2024-01 Filter datasets by name (partial match) |
| filter[asset] | string <uuid> Example: filter[asset]=550e8400-e29b-41d4-a716-446655440001 Filter datasets by asset UUID |
{- "data": [
- {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "date": "string",
- "description": "string",
- "clipping_plane": [
- {
- "normal": [
- -0.03892423536844968,
- 0.5,
- 0.2
], - "distance": 0
}
], - "camera_pose": {
- "heading": 1.6901096450070003,
- "pitch": -0.3824610189425868,
- "roll": 6.283185307179586,
- "position": {
- "x": -2341050.836201532,
- "y": 4866765.726717598,
- "z": -3382017.3390386524
}
}, - "screenshot": "string",
- "image1": "string",
- "image2": "string",
- "image3": "string",
- "gigapixels": "string",
- "dataset_type": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "asset_uuid": "76807d23-a41c-4ee1-a173-773f47fc22c8"
}
], - "links": {
- "first": "string",
- "last": "string",
- "prev": "string",
- "next": "string"
}, - "meta": {
- "path": "string",
- "per_page": "string",
- "next_cursor": "string",
- "prev_cursor": "string"
}
}Retrieve a specific dataset with its asset and company relationships.
| company required | string <uuid> Company UUID |
| dataset required | string <uuid> Dataset UUID |
| include | string Example: include=asset Comma-separated list of relationships to include (asset) |
{- "data": {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "date": "string",
- "description": "string",
- "clipping_plane": [
- {
- "normal": [
- -0.03892423536844968,
- 0.5,
- 0.2
], - "distance": 0
}
], - "camera_pose": {
- "heading": 1.6901096450070003,
- "pitch": -0.3824610189425868,
- "roll": 6.283185307179586,
- "position": {
- "x": -2341050.836201532,
- "y": 4866765.726717598,
- "z": -3382017.3390386524
}
}, - "screenshot": "string",
- "image1": "string",
- "image2": "string",
- "image3": "string",
- "gigapixels": "string",
- "dataset_type": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "asset_uuid": "76807d23-a41c-4ee1-a173-773f47fc22c8",
- "asset": {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "name": "string",
- "pose": {
- "heading": 1.6901096450070003,
- "pitch": -0.3824610189425868,
- "roll": 6.283185307179586,
- "position": {
- "x": -2341050.836201532,
- "y": 4866765.726717598,
- "z": -3382017.3390386524
}
}, - "address": "string",
- "location": "string",
- "metadata": {
- "plane_elevation": "string",
- "relative_level": "string"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
}
}An Annotation is a data point in 3D space. Annotations belong to Assets, and are associated with a Dataset.
Retrieve a paginated collection of annotations that belong to the specified company.
You can filter the results by asset, dataset, folder, or template UUID.
You can also include related resources using the 'include' parameter.
This endpoint uses cursor-based pagination for efficient handling of large sets of data.
| company required | string <uuid> Example: 550e8400-e29b-41d4-a716-446655440000 Company UUID |
| cursor | string Example: cursor=eyJjcmVhdGVkX2F0IjoiMjAyNC0wMS0xNSAxNDozMDowMCIsImlkIjoxMjN9 Cursor token for pagination. Use the next_cursor from the previous response to get the next page. |
| per_page | integer [ 1 .. 100 ] Default: 15 Example: per_page=25 Number of items per page (maximum: 100, default: 15) |
| filter[asset] | string <uuid> Example: filter[asset]=550e8400-e29b-41d4-a716-446655440000 Filter annotations by asset UUID |
| filter[dataset] | string <uuid> Example: filter[dataset]=550e8400-e29b-41d4-a716-446655440001 Filter annotations by dataset UUID |
| filter[folder] | string <uuid> Example: filter[folder]=550e8400-e29b-41d4-a716-446655440002 Filter annotations by annotation folder UUID |
{- "data": [
- {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "annotation_name": "string",
- "annotation_type": "POINT",
- "description": "string",
- "camera_pose": {
- "heading": 1.6901096450070003,
- "pitch": -0.3824610189425868,
- "roll": 6.283185307179586,
- "position": {
- "x": -2341050.836201532,
- "y": 4866765.726717598,
- "z": -3382017.3390386524
}
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "links": {
- "first": "string",
- "last": "string",
- "prev": "string",
- "next": "string"
}, - "meta": {
- "path": "string",
- "per_page": "string",
- "next_cursor": "string",
- "prev_cursor": "string"
}
}Retrieve a specific annotation by its UUID, ensuring it belongs to the specified company. An annotation will come with related template and photo data.
| company required | string <uuid> Company UUID |
| annotation required | string <uuid> Annotation UUID |
| include | string Example: include=asset,dataset,drawing,featuredImage Comma-separated list of relationships to include (asset, dataset, folder, drawing, featuredImage, supportingImage) |
{- "data": {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "annotation_name": "string",
- "annotation_type": "POINT",
- "description": "string",
- "camera_pose": {
- "heading": 1.6901096450070003,
- "pitch": -0.3824610189425868,
- "roll": 6.283185307179586,
- "position": {
- "x": -2341050.836201532,
- "y": 4866765.726717598,
- "z": -3382017.3390386524
}
}, - "featured_image": {
- "uuid": "string",
- "url": "string",
- "file_name": "string",
- "source_type": "string"
}, - "supporting_image": {
- "uuid": "string",
- "url": "string",
- "file_name": "string",
- "source_type": "string"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "asset_uuid": "76807d23-a41c-4ee1-a173-773f47fc22c8",
- "asset": {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "name": "string",
- "pose": {
- "heading": 1.6901096450070003,
- "pitch": -0.3824610189425868,
- "roll": 6.283185307179586,
- "position": {
- "x": -2341050.836201532,
- "y": 4866765.726717598,
- "z": -3382017.3390386524
}
}, - "address": "string",
- "location": "string",
- "metadata": {
- "plane_elevation": "string",
- "relative_level": "string"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}, - "dataset_uuid": "24d83e1a-5c51-45c1-b39e-fd35c214de0e",
- "dataset": {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "date": "string",
- "description": "string",
- "clipping_plane": [
- {
- "normal": [
- -0.03892423536844968,
- 0.5,
- 0.2
], - "distance": 0
}
], - "camera_pose": {
- "heading": 1.6901096450070003,
- "pitch": -0.3824610189425868,
- "roll": 6.283185307179586,
- "position": {
- "x": -2341050.836201532,
- "y": 4866765.726717598,
- "z": -3382017.3390386524
}
}, - "screenshot": "string",
- "image1": "string",
- "image2": "string",
- "image3": "string",
- "gigapixels": "string",
- "dataset_type": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "asset_uuid": "76807d23-a41c-4ee1-a173-773f47fc22c8"
}, - "folder": "string",
- "drawing_uuid": "4d04804c-8135-43ff-bf5a-9639c7bd05f2",
- "drawing": {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "type": [
- "Point",
- "LineString",
- "Polygon"
], - "geojson": {
- "type": "string",
- "bbox": [ ],
- "features": { }
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "annotation": {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "annotation_name": "string",
- "annotation_type": "POINT",
- "description": "string",
- "camera_pose": {
- "heading": 1.6901096450070003,
- "pitch": -0.3824610189425868,
- "roll": 6.283185307179586,
- "position": {
- "x": -2341050.836201532,
- "y": 4866765.726717598,
- "z": -3382017.3390386524
}
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
}, - "relationships": {
- "photos": {
- "links": "/v1/external/api/companies/{company}/photos?filter[asset]=<uuid>"
}, - "files": {
- "links": "/v1/external/api/companies/{company}/asset-files?filter[annotation]=<uuid>"
}, - "template_data": {
- "links": "/v1/external/api/companies/{company}/template_data"
}
}
}
}Retrieve a paginated collection of annotation images that belong to the specified annotation.
This endpoint uses cursor-based pagination for efficient handling of large datasets.
You can filter the results by asset or dataset UUID.
| company required | string <uuid> Example: 550e8400-e29b-41d4-a716-446655440000 Company UUID |
| annotation required | string <uuid> Example: 550e8400-e29b-41d4-a716-446655440001 Annotation UUID |
| cursor | string Example: cursor=eyJjcmVhdGVkX2F0IjoiMjAyNC0wMS0xNSAxNDozMDowMCIsImlkIjoxMjN9 Cursor token for pagination. Use the next_cursor from the previous response to get the next page. |
| per_page | integer [ 1 .. 100 ] Default: 15 Example: per_page=25 Number of items per page (maximum: 100, default: 15) |
| filter[asset] | string <uuid> Example: filter[asset]=550e8400-e29b-41d4-a716-446655440000 Filter photos by asset UUID |
| filter[dataset] | string <uuid> Example: filter[dataset]=550e8400-e29b-41d4-a716-446655440001 Filter photos by dataset UUID |
{- "data": [
- {
- "image_uuid": "81aa1675-ce1e-4227-a1b8-beadb95ef40a",
- "image": {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "url": "string",
- "filename": "string",
- "source_type": "string"
}, - "annotation_uuid": "b3ea11bf-a299-4c33-9d09-4eaf8ede40b6",
- "annotation": {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "annotation_name": "string",
- "annotation_type": "POINT",
- "description": "string",
- "camera_pose": {
- "heading": 1.6901096450070003,
- "pitch": -0.3824610189425868,
- "roll": 6.283185307179586,
- "position": {
- "x": -2341050.836201532,
- "y": 4866765.726717598,
- "z": -3382017.3390386524
}
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
}
], - "links": {
- "first": "string",
- "last": "string",
- "prev": "string",
- "next": "string"
}, - "meta": {
- "path": "string",
- "per_page": "string",
- "next_cursor": "string",
- "prev_cursor": "string"
}
}Retrieve template data associated with a specific annotation. This endpoint returns the template form data that has been filled out for the annotation. Returns null if no template data exists for the annotation.
| company required | string <uuid> Company UUID |
| annotation required | string <uuid> Annotation UUID |
{- "data": {
- "uuid": "123e4567-e89b-12d3-a456-426614174000",
- "value": {
- "field1": {
- "value": "Sample text"
}, - "field2": {
- "value": 42
}, - "field3": {
- "value": true
}
}, - "created_at": "2023-01-01T12:00:00.000000Z",
- "updated_at": "2023-01-01T12:00:00.000000Z"
}
}Retrieve a specific drawing by its UUID, ensuring it belongs to the specified company. You can include the related annotation using the 'include' parameter.
| company required | string <uuid> Company UUID |
| annotation required | string <uuid> Annotation UUID |
| drawing required | string <uuid> Drawing UUID |
| include | string Example: include=annotation Comma-separated list of related resources to include (annotation) |
{- "data": {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "type": [
- "Point",
- "LineString",
- "Polygon"
], - "geojson": {
- "type": "string",
- "bbox": [ ],
- "features": { }
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "annotation": {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "annotation_name": "string",
- "annotation_type": "POINT",
- "description": "string",
- "camera_pose": {
- "heading": 1.6901096450070003,
- "pitch": -0.3824610189425868,
- "roll": 6.283185307179586,
- "position": {
- "x": -2341050.836201532,
- "y": 4866765.726717598,
- "z": -3382017.3390386524
}
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
}
}Retrieve a paginated collection of templates that belong to the specified company.
This endpoint uses cursor-based pagination for efficient handling of large datasets.
| company required | string <uuid> Company UUID |
| per_page | integer [ 1 .. 100 ] Example: per_page=15 Number of templates per page (max 100) |
| cursor | string Cursor for pagination (provided in previous response) |
{- "data": [
- {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "name": "string",
- "description": "string",
- "type": "string",
- "json_schema": {
- "property1": "string",
- "property2": "string"
}, - "ui_schema": {
- "property1": "string",
- "property2": "string"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "links": {
- "first": "string",
- "last": "string",
- "prev": "string",
- "next": "string"
}, - "meta": {
- "path": "string",
- "per_page": "string",
- "next_cursor": "string",
- "prev_cursor": "string"
}
}Retrieve a specific template.
| company required | string <uuid> Company UUID |
| template required | string <uuid> Template UUID |
{- "data": {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "name": "string",
- "description": "string",
- "type": "string",
- "json_schema": {
- "property1": "string",
- "property2": "string"
}, - "ui_schema": {
- "property1": "string",
- "property2": "string"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
}Retrieve custom fields associated with the specified template.
| company required | string <uuid> Company UUID |
| template required | string <uuid> Template UUID |
{- "data": [
- {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "name": "string",
- "slug": "string",
- "description": "string",
- "type": "text",
- "scope": "template",
- "user_defined_values": true,
- "metadata": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]
}Users represent people who have access to Trendspek. Users have a Role within a Company. The Role governs what they are able to do within Trendspek.
Retrieve a paginated collection of users within the billing company.
You can filter the results by fuzzy search (searches email, first_name, last_name), first_name, last_name, email, or company UUID.
This endpoint uses cursor-based pagination for efficient handling of large sets of data.
| company required | string <uuid> Company UUID |
| cursor | string Example: cursor=eyJjcmVhdGVkX2F0IjoiMjAyNC0wMS0xNSAxNDozMDowMCIsImlkIjoxMjN9 Cursor token for pagination. Use the next_cursor from the previous response to get the next page. |
| per_page | integer [ 1 .. 100 ] Default: 15 Example: per_page=25 Number of items per page (maximum: 100, default: 15) |
| filter[fuzzy-search] | string Example: filter[fuzzy-search]=John Fuzzy search across email, first_name, and last_name fields |
| filter[first_name] | string Example: filter[first_name]=John Filter users by first name (partial match) |
| filter[last_name] | string Example: filter[last_name]=Doe Filter users by last name (partial match) |
| filter[email] | string Example: filter[email]=john@example.com Filter users by email (partial match) |
| filter[company] | string <uuid> Example: filter[company]=550e8400-e29b-41d4-a716-446655440000 Filter users by company UUID |
{- "data": [
- {
- "uuid": "string",
- "first_name": "string",
- "last_name": "string",
- "email": "string",
- "phone_number": "string",
- "measurement_unit": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "links": {
- "first": "string",
- "last": "string",
- "prev": "string",
- "next": "string"
}, - "meta": {
- "path": "string",
- "per_page": "string",
- "next_cursor": "string",
- "prev_cursor": "string"
}
}Retrieve a paginated collection of photos that belong to assets within the specified company.
This endpoint uses cursor-based pagination for efficient handling of large datasets.
You can filter the results by asset or dataset UUID.
| company required | string <uuid> Company UUID |
| per_page | integer <= 100 Default: 15 Number of photos per page (max 100) |
| cursor | string Cursor for pagination |
| filter[asset] | string <uuid> Filter photos by asset UUID |
| filter[dataset] | string <uuid> Filter photos by dataset UUID |
{- "data": [
- {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "name": "string",
- "camera_centre": {
- "x": 0,
- "y": 0,
- "z": 0
}, - "direction": {
- "x": 0,
- "y": 0,
- "z": 0
}, - "inverse_matrix": {
- "0": 0,
- "1": 0,
- "2": 0,
- "3": 0,
- "4": 0,
- "5": 0,
- "6": 0,
- "7": 0,
- "8": 0
}, - "matrix": {
- "0": 0,
- "1": 0,
- "2": 0,
- "3": 0,
- "4": 0,
- "5": 0,
- "6": 0,
- "7": 0,
- "8": 0
}, - "frustum_aspect_ratio": 0,
- "fov": 0,
- "ratio": 0,
- "orientation": {
- "x": 0,
- "y": 0,
- "z": 0,
- "w": 0
}, - "position": {
- "latitude": 0,
- "longitude": 0,
- "height": 0
}, - "image_paths": {
- "large": "string",
- "small": "string",
- "thumbnail": "string"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "links": {
- "first": "string",
- "last": "string",
- "prev": "string",
- "next": "string"
}, - "meta": {
- "path": "string",
- "per_page": "string",
- "next_cursor": "string",
- "prev_cursor": "string"
}
}Retrieve a specific photo by its UUID, ensuring it belongs to an asset within the specified company.
| company required | string <uuid> Company UUID |
| photo required | string <uuid> Photo UUID |
{- "data": {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "name": "string",
- "camera_centre": {
- "x": 0,
- "y": 0,
- "z": 0
}, - "direction": {
- "x": 0,
- "y": 0,
- "z": 0
}, - "inverse_matrix": {
- "0": 0,
- "1": 0,
- "2": 0,
- "3": 0,
- "4": 0,
- "5": 0,
- "6": 0,
- "7": 0,
- "8": 0
}, - "matrix": {
- "0": 0,
- "1": 0,
- "2": 0,
- "3": 0,
- "4": 0,
- "5": 0,
- "6": 0,
- "7": 0,
- "8": 0
}, - "frustum_aspect_ratio": 0,
- "fov": 0,
- "ratio": 0,
- "orientation": {
- "x": 0,
- "y": 0,
- "z": 0,
- "w": 0
}, - "position": {
- "latitude": 0,
- "longitude": 0,
- "height": 0
}, - "image_paths": {
- "large": "string",
- "small": "string",
- "thumbnail": "string"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
}Retrieve a paginated collection of asset files that belong to assets within the specified company.
This endpoint uses cursor-based pagination for efficient handling of large datasets.
| company required | string <uuid> Company UUID |
| per_page | integer [ 1 .. 100 ] Default: 15 Number of items to return per page (1-100) |
| cursor | string Cursor for pagination |
| filter[asset] | string <uuid> Example: filter[asset]=550e8400-e29b-41d4-a716-446655440002 Filter asset file by asset UUID |
| filter[annotation] | string <uuid> Example: filter[annotation]=550e8400-e29b-41d4-a716-446655440002 Filter asset file by annotation UUID |
{- "data": [
- {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "filename": "DOC0001.pdf",
- "unique_filename": "DOC0001.pdf",
- "mime_type": "application/pdf",
- "file_size": 0,
- "signed_url": "string",
- "asset_uuid": "76807d23-a41c-4ee1-a173-773f47fc22c8",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "links": {
- "first": "string",
- "last": "string",
- "prev": "string",
- "next": "string"
}, - "meta": {
- "path": "string",
- "per_page": "string",
- "next_cursor": "string",
- "prev_cursor": "string"
}
}Retrieve a specific asset file by its UUID, ensuring it belongs to an asset within the specified company.
| company required | string <uuid> Company UUID |
| asset_file required | string <uuid> Asset File UUID |
| include | string Example: include=asset Comma-separated list of relationships to include (asset) |
{- "data": {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "filename": "DOC0001.pdf",
- "unique_filename": "DOC0001.pdf",
- "mime_type": "application/pdf",
- "file_size": 0,
- "signed_url": "string",
- "asset_uuid": "76807d23-a41c-4ee1-a173-773f47fc22c8",
- "asset": {
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "name": "string",
- "pose": {
- "heading": 1.6901096450070003,
- "pitch": -0.3824610189425868,
- "roll": 6.283185307179586,
- "position": {
- "x": -2341050.836201532,
- "y": 4866765.726717598,
- "z": -3382017.3390386524
}
}, - "address": "string",
- "location": "string",
- "metadata": {
- "plane_elevation": "string",
- "relative_level": "string"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
}