Cintoo Crop API
The Crop API from Cintoo — 3 operation(s) for crop.
The Crop API from Cintoo — 3 operation(s) for crop.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/cintoo-crop-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
version: 2.0.0
title: Cintoo Open Crop API
description: 'Cintoo Open API 1.x documentation: https://aec.cintoo.com/api
BETA: API v2 endpoints tagged "BETA" are available in beta-version, meaning that changes may be done later on.'
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
contact:
name: API Support
email: support@cintoo.com
x-logo:
url: ./assets/logo_api.svg
altText: Cintoo API
servers:
- url: https://aec.cintoo.com
security:
- oauth2: []
tags:
- name: Crop
paths:
/api/2/accounts/{accountRef}/projects/{projectRef}/crops:
get:
summary: Get Crops
operationId: getCrops
description: 'BETAGet all crops related to a project.
Requires the permission `workzone:crops:read` on at least one work zone of the project.
The crop returned are all crops on work zones the user has this permission.'
tags:
- Crop
parameters:
- $ref: '#/components/parameters/accountRef'
- $ref: '#/components/parameters/projectRef'
- $ref: '#/components/parameters/workzonesFilter'
responses:
'200':
description: Content of each Crop inside the project you have access to
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Crop'
4XX:
$ref: '#/components/responses/UnexpectedError'
x-codeSamples:
- lang: cURL
source: "export TOKEN=...\nexport ACCOUNTUUID=...\nexport PROJECTUUID=...\n\ncurl --url \"https://aec.cintoo.com/api/2/accounts/$ACCOUNTUUID/projects/$PROJECTUUID/crops\" \\\n --header \"Authorization: Bearer $TOKEN\"\n"
- lang: Python
source: "import requests\n\nhost = \"aec.cintoo.com\"\naccountUUID = \"...\"\nprojectUUID = \"...\"\ntoken = \"...\"\n\nresponse = requests.get(\n \"https://%s/api/2/accounts/%s/projects/%s/crops\"\n % (host, accountUUID, projectUUID),\n headers = { \"Authorization\": \"Bearer %s\" % token}\n)\nprint(response.status_code)\nprint(response.json())\n"
- lang: TypeScript
source: "const host = \"aec.cintoo.com\";\nconst accountUUID = \"...\";\nconst projectUUID = \"...\";\nconst token = \"...\";\n\nconst url = `https://${host}/api/2/accounts/${accountUUID}/projects/${projectUUID}/crops`;\nconst res = await fetch(url, {\n headers: {\n \"Authorization\": `Bearer ${token}`,\n },\n});\n\nconsole.log(res.status);\nconst data = await res.json();\nconsole.log(data);\n"
post:
summary: Create a crop
operationId: createCrop
description: 'BETACreate a crop
Requires the permission `workzone:crops:write` on the work zone.'
tags:
- Crop
parameters:
- $ref: '#/components/parameters/accountRef'
- $ref: '#/components/parameters/projectRef'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/cropCreate'
responses:
'201':
description: The crop was created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Crop'
4XX:
$ref: '#/components/responses/UnexpectedError'
x-codeSamples:
- lang: cURL
source: "export TOKEN=...\nexport ACCOUNTUUID=...\nexport PROJECTUUID=...\nexport WORKZONEUUID=...\n\ncurl --request POST --url \"https://aec.cintoo.com/api/2/accounts/$ACCOUNTUUID/projects/$PROJECTUUID/crops\" \\\n --header \"Authorization: Bearer $TOKEN\" \\\n --header \"Content-Type: application/json\" \\\n --data \"{\n \\\"workzoneId\\\":\\\"$WORKZONEUUID\\\",\n \\\"crop\\\":\\\"CropContent\\\",\n \\\"actualCrop\\\":\\\"actualCropContent\\\",\n \\\"rotation\\\":\\\"rotationContent\\\",\n \\\"cameraType\\\":\\\"scan\\\",\n \\\"cameraState\\\":\\\"cameraStateContent\\\",\n \\\"scan\\\":\\\"scanContent\\\",\n \\\"name\\\":\\\"cropName\\\"\n }\"\n"
- lang: Python
source: "import requests\n\nhost = \"aec.cintoo.com\"\naccountUUID = \"...\"\nprojectUUID = \"...\"\nworkzoneUUID = \"\"\ntoken = \"...\"\n\nresponse = requests.post(\n \"https://%s/api/2/accounts/%s/projects/%s/crops\"\n % (host, accountUUID, projectUUID),\n headers = { \"Authorization\": \"Bearer %s\" % token },\n json = {\n \"workzoneId\": workzoneUUID,\n \"crop\": \"CropContent\",\n \"actualCrop\": \"actualCropContent\",\n \"rotation\": \"rotationContent\",\n \"cameraType\": \"scan\",\n \"cameraState\": \"cameraStateContent\",\n \"scan\": \"scanContent\",\n \"name\": \"cropName\"\n }\n)\nprint(response.status_code)\nprint(response.json())\n"
- lang: TypeScript
source: "const host = \"aec.cintoo.com\";\nconst accountUUID = \"...\";\nconst projectUUID = \"...\";\nconst workzoneId = \"...\";\nconst token = \"...\";\n\nconst url = `https://${host}/api/2/accounts/${accountUUID}/projects/${projectUUID}/crops`;\nconst res = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Authorization\": `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n workzoneId,\n crop: \"CropContent\",\n actualCrop: \"actualCropContent\",\n rotation: \"rotationContent\",\n cameraType: \"scan\",\n cameraState: \"cameraStateContent\",\n scan: \"scanContent\",\n name: \"cropName\",\n }),\n});\n\nconsole.log(res.status);\nconst data = await res.json();\nconsole.log(data);\n"
/api/2/accounts/{accountRef}/projects/{projectRef}/crops/{cropRef}:
get:
summary: Get Crop
operationId: getCrop
description: 'BETAGet details about a specific crop, related to a project.
Requires the permission `workzone:crops:read` on the work zone in which the crop has been created.'
tags:
- Crop
parameters:
- $ref: '#/components/parameters/accountRef'
- $ref: '#/components/parameters/projectRef'
- $ref: '#/components/parameters/cropRef'
responses:
'200':
description: Content of Crop
content:
application/json:
schema:
$ref: '#/components/schemas/Crop'
4XX:
$ref: '#/components/responses/UnexpectedError'
x-codeSamples:
- lang: cURL
source: "export TOKEN=...\nexport ACCOUNTUUID=...\nexport PROJECTUUID=...\nexport CROPUUID=...\n\ncurl --url \"https://aec.cintoo.com/api/2/accounts/$ACCOUNTUUID/projects/$PROJECTUUID/crops/$CROPUUID\" \\\n --header \"Authorization: Bearer $TOKEN\"\n"
- lang: Python
source: "import requests\n\nhost = \"aec.cintoo.com\"\naccountUUID = \"...\"\nprojectUUID = \"...\"\ncropUUID = \"...\"\ntoken = \"...\"\n\nresponse = requests.get(\n \"https://%s/api/2/accounts/%s/projects/%s/crops/%s\"\n % (host, accountUUID, projectUUID, cropUUID),\n headers = { \"Authorization\": \"Bearer %s\" % token}\n)\nprint(response.status_code)\nprint(response.json())\n"
- lang: TypeScript
source: "const host = \"aec.cintoo.com\";\nconst accountUUID = \"...\";\nconst projectUUID = \"...\";\nconst cropUUID = \"...\";\nconst token = \"...\";\n\nconst url = `https://${host}/api/2/accounts/${accountUUID}/projects/${projectUUID}/crops/${cropUUID}`;\nconst res = await fetch(url, {\n headers: {\n \"Authorization\": `Bearer ${token}`,\n },\n});\n\nconsole.log(res.status);\nconst data = await res.json();\nconsole.log(data);\n"
put:
summary: Update Crop
operationId: putCrop
description: 'BETAUpdate a Crop. This can also be a work zone move by providing new workzoneId in which you have required permission.
Note that missing fields, even optionals, are considered as null (useful for removing fields).
Requires the permission `workzone:crops:write` in the work zone in which the crop belong to, and in case of crop move, also in the target work zone.'
tags:
- Crop
parameters:
- $ref: '#/components/parameters/accountRef'
- $ref: '#/components/parameters/projectRef'
- $ref: '#/components/parameters/cropRef'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/cropUpdate'
responses:
'200':
description: Details of updated crop
content:
application/json:
schema:
$ref: '#/components/schemas/Crop'
4XX:
$ref: '#/components/responses/UnexpectedError'
x-codeSamples:
- lang: cURL
source: "export TOKEN=...\nexport ACCOUNTUUID=...\nexport PROJECTUUID=...\nexport CROPUUID=...\nexport WORKZONEUUID=...\n\ncurl --request PUT --url \"https://aec.cintoo.com/api/2/accounts/$ACCOUNTUUID/projects/$PROJECTUUID/crops/$CROPUUID\" \\\n --header \"Authorization: Bearer $TOKEN\" \\\n --header \"Content-Type: application/json\" \\\n --data \"{\n \\\"workzoneId\\\":\\\"$WORKZONEUUID\\\",\n \\\"crop\\\":\\\"CropContent\\\",\n \\\"actualCrop\\\":\\\"actualCropContent\\\",\n \\\"rotation\\\":\\\"rotationContent\\\",\n \\\"cameraType\\\":\\\"scan\\\",\n \\\"cameraState\\\":\\\"cameraStateContent\\\",\n \\\"scan\\\":\\\"scanContent\\\",\n \\\"name\\\":\\\"cropName\\\"\n }\"\n"
- lang: Python
source: "import requests\n\nhost = \"aec.cintoo.com\"\naccountUUID = \"...\"\nprojectUUID = \"...\"\ncropUUID = \"...\"\nworkzoneUUID = \"\"\ntoken = \"...\"\n\nresponse = requests.put(\n \"https://%s/api/2/accounts/%s/projects/%s/crops/%s\"\n % (host, accountUUID, projectUUID, cropUUID),\n headers = { \"Authorization\": \"Bearer %s\" % token },\n json = {\n \"workzoneId\": workzoneUUID,\n \"crop\": \"CropContent\",\n \"actualCrop\": \"actualCropContent\",\n \"rotation\": \"rotationContent\",\n \"cameraType\": \"scan\",\n \"cameraState\": \"cameraStateContent\",\n \"scan\": \"scanContent\",\n \"name\": \"cropName\"\n }\n)\nprint(response.status_code)\nprint(response.json())\n"
- lang: TypeScript
source: "const host = \"aec.cintoo.com\";\nconst accountUUID = \"...\";\nconst projectUUID = \"...\";\nconst cropUUID = \"...\";\nconst workzoneUUID = \"...\";\nconst token = \"...\";\n\nconst url = `https://${host}/api/2/accounts/${accountUUID}/projects/${projectUUID}/crops/${cropUUID}`;\nconst res = await fetch(url, {\n method: \"PUT\",\n headers: {\n \"Authorization\": `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n workzoneId: workzoneUUID,\n crop: \"CropContent\",\n actualCrop: \"actualCropContent\",\n rotation: \"rotationContent\",\n cameraType: \"scan\",\n cameraState: \"cameraStateContent\",\n scan: \"scanContent\",\n name: \"cropName\",\n }),\n});\n\nconsole.log(res.status);\nconst data = await res.json();\nconsole.log(data);\n"
delete:
summary: Delete Crop
operationId: deleteCrop
description: 'BETADelete a given Crop.
Requires the permission `workzone:crops:write` in the work zone in which the crop belongs to.'
tags:
- Crop
parameters:
- $ref: '#/components/parameters/accountRef'
- $ref: '#/components/parameters/projectRef'
- $ref: '#/components/parameters/cropRef'
responses:
'204':
description: The Crop has been successfully deleted
4XX:
$ref: '#/components/responses/UnexpectedError'
x-codeSamples:
- lang: cURL
source: "export TOKEN=...\nexport ACCOUNTUUID=...\nexport PROJECTUUID=...\nexport CROPUUID=...\n\ncurl --request DELETE --url \"https://aec.cintoo.com/api/2/accounts/$ACCOUNTUUID/projects/$PROJECTUUID/crops/$CROPUUID\" \\\n --header \"Authorization: Bearer $TOKEN\"\n"
- lang: Python
source: "import requests\n\nhost = \"aec.cintoo.com\"\naccountUUID = \"...\"\nprojectUUID = \"...\"\ncropUUID = \"...\"\ntoken = \"...\"\n\nresponse = requests.delete(\n \"https://%s/api/2/accounts/%s/projects/%s/crops/%s\"\n % (host, accountUUID, projectUUID, cropUUID),\n headers = { \"Authorization\": \"Bearer %s\" % token}\n)\nprint(response.status_code)\n"
- lang: TypeScript
source: "const host = \"aec.cintoo.com\";\nconst accountUUID = \"...\";\nconst projectUUID = \"...\";\nconst cropUUID = \"...\";\nconst token = \"...\";\n\nconst url = `https://${host}/api/2/accounts/${accountUUID}/projects/${projectUUID}/crops/${cropUUID}`;\nconst res = await fetch(url, {\n method: \"DELETE\",\n headers: {\n \"Authorization\": `Bearer ${token}`,\n },\n});\n\nconsole.log(res.status);\nif (res.status !== 204) {\n const data = await res.json();\n console.log(data);\n}\n"
/api/2/accounts/{accountRef}/projects/{projectRef}/crops/{cropRef}/cover:
post:
summary: Get a signed URL for crop cover file upload
operationId: signCropCoverURL
description: 'BETA- Get a signed URL for crop cover file upload
Requires the permission `workzone:crops:write`.
After this call, use the `url`s from the response to upload the crop cover file.
Required headers to push the files
* `Content-MD5: xxx` with `xxx` being a base 64 encode of the md5sum in binary format.\
Example: `MD5SUM="$(openssl md5 -binary < "$FILENAME" | base64)"`
* `Cache-Control: max-age=2592000`
* `x-ms-blob-type: BlockBlob` mandatory if the storage type is Azure. \
Note: always adding the `x-ms-blob-type` could be a good idea as Aws ignores it anyway.'
tags:
- Crop
parameters:
- $ref: '#/components/parameters/accountRef'
- $ref: '#/components/parameters/projectRef'
- $ref: '#/components/parameters/cropRef'
requestBody:
content:
application/json:
schema:
type: object
required:
- name
- extension
- size
- md5
properties:
name:
type: string
extension:
type: string
enum:
- png
- jpg
- jpeg
size:
type: integer
format: int64
description: Size of the file (bytes)
minimum: 1
maximum: 10485760
md5:
type: string
description: The md5 sum-check of the file
responses:
'200':
description: The signing process succeeded
content:
application/json:
schema:
type: object
required:
- provider
- expiresIn
- file
properties:
provider:
type: string
expiresIn:
type: integer
description: After this amount of seconds, the upload link won't be available anymore
file:
type: object
required:
- name
- extension
- size
- md5
- url
properties:
name:
type: string
extension:
type: string
size:
type: integer
format: int64
description: Size of the file (bytes)
md5:
type: string
description: The md5 sum-check of the file
url:
type: string
description: the url to which upload the file
4XX:
$ref: '#/components/responses/UnexpectedError'
x-codeSamples:
- lang: cURL
source: "export TOKEN=...\nexport ACCOUNTID=...\nexport PROJECTID=...\nexport CROPID=...\n\ncurl --request POST --url \"https://aec.cintoo.com/api/2/accounts/$ACCOUNTID/projects/$PROJECTID/crops/$CROPID/cover\" \\\n --header \"Authorization: Bearer $TOKEN\" \\\n --header \"Content-Type: application/json\" \\\n --data '{\n \"name\":\"cover.png\",\n \"extension\":\"png\",\n \"size\":448459,\n \"md5\":\"da04845eaedb7db7f5b6f32c4076821f\"\n }'\n\n# -- UPLOAD OF THE FILE --\n\n# the url received in the body of the response\nexport URL=...\nexport FILENAME=...\n\nMD5SUM=\"$(openssl md5 -binary < \"$FILENAME\" | base64)\"\ncurl --request PUT --url \"$URL\" --header \"Content-Type: application/json\" -T \"$FILENAME\" -H \"Content-MD5: ${MD5SUM}\" -H \"Cache-Control: max-age=2592000\" -H \"x-ms-blob-type: BlockBlob\" -i\n"
- lang: Python
source: "import requests\n\nhost = \"aec.cintoo.com\"\naccountID = \"...\"\nprojectID = \"...\"\ncropID = \"...\"\ntoken = \"...\"\n\nresponse = requests.post(\n \"https://%s/api/2/accounts/%s/projects/%s/crops/%s/cover\"\n % (host, accountID, projectID, cropID),\n headers = { \"Authorization\": \"Bearer %s\" % token },\n json = {\n \"name\":\"tumbleweed.png\",\n \"extension\":\"png\",\n \"size\":448459,\n \"md5\":\"da04845eaedb7db7f5b6f32c4076821f\"\n }\n)\nprint(response.status_code)\nprint(response.json())\n\nimport base64\nimport hashlib\n\n# the url received in the body of the response\nexport url=...\nexport filename=...\n\nhash_md5 = hashlib.md5()\nwith open(filename, \"rb\") as fin:\n for chunk in iter(lambda: fin.read(4096), b\"\"):\n hash_md5.update(chunk)\ndigest = hash_md5.digest()\nmd5 = base64.b64encode(digest).decode(\"utf-8\")\n\nheaders = {\n \"Content-MD5\": md5,\n \"Cache-Control\": \"max-age=2592000\",\n \"x-ms-blob-type\": \"BlockBlob\", # mandatory if storage type is azure\n}\ndata = open(filename, \"rb\")\nr = requests.put(url, data=data, headers=headers)\nprint(r.status_code)\n"
- lang: TypeScript
source: "const host = \"aec.cintoo.com\";\nconst accountId = \"...\";\nconst projectId = \"...\";\nconst cropId = \"...\";\nconst token = \"...\";\n\nconst url = `https://${host}/api/2/accounts/${accountId}/projects/${projectId}/crops/${cropId}/cover`;\nconst res = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Authorization\": `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(\n {\n \"name\":\"cover.png\",\n \"extension\":\"png\",\n \"size\":448459,\n \"md5\":\"da04845eaedb7db7f5b6f32c4076821f\",\n }\n ),\n});\n\nconsole.log(res.status);\nconst data = await res.json();\nconsole.log(data);\n"
components:
schemas:
CropUrn:
type: string
description: '"urn:cintoo:crop:" followed by an UUIDv4
'
WorkzoneUrn:
type: string
pattern: ^urn:cintoo:workzone:[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
description: '"urn:cintoo:workzone:" followed by an UUIDv4
'
AccountUrn:
type: string
description: '"urn:cintoo:account:" followed by an UUIDv4
'
DateTime:
type: string
format: date-time
description: 'The date-time notation as defined by RFC 3339, section 5.6 (ex: 2017-08-18T12:41:31Z)'
example: '2017-08-18T12:41:31Z'
ProjectUrn:
type: string
description: '"urn:cintoo:project:" followed by an UUIDv4
'
UserUrn:
type: string
description: '"urn:cintoo:user:" followed by an UUIDv4
'
AccountId:
allOf:
- $ref: '#/components/schemas/Uuid'
example: 8196e320-8a4d-4d29-b0a9-077cd7ed3368
WorkzoneId:
allOf:
- $ref: '#/components/schemas/Uuid'
example: 8196e320-8a4d-4d29-b0a9-077cd7ed3368
BlobName:
type: string
description: "A `BlobName`: the actual filename of the file in the blob storage.\n\nTo retrieve a blob, two methods are available:\n- using the unitary endpoint [Download a blob](#tag/Project/operation/getBlob), which will automatically forward\n to the final URL, which is a pre-signed URL, expiring after 3 hours by default.\n- using the bulk endpoint [Get pre-signed urls for multiple blobs](#tag/Project/operation/getBlobs), which will\n return the list of pre-signed URLs.\n\nWhile the first option is the easiest, as it forwards automatically to the final URL transparently,\nthe second option should be preferred as much as possible to improve performances.\n"
CropId:
allOf:
- $ref: '#/components/schemas/Uuid'
example: 8196e320-8a4d-4d29-b0a9-077cd7ed3368
cropUpdate:
type: object
required:
- workzoneId
- name
- crop
- actualCrop
- rotation
- cameraType
- cameraState
- scan
properties:
workzoneId:
$ref: '#/components/schemas/WorkzoneRef'
name:
type: string
crop:
type: string
description: Description of the plans defining the bounding box of the crop in the scene
actualCrop:
type: string
description: Description of the plans defining the bounding box of the crop related to the camera
rotation:
type: string
description: Description about the rotation of the crop inside the camera
layers:
type:
- string
- 'null'
description: Scans related to the crop
cameraType:
type: string
description: Details about the camera (overview, ground, scan, arcrotate)
cameraState:
type: string
description: Description of source and direction of the camera of the scene
scan:
type: string
description: root scan for the crop
thumbnailBlobName:
type:
- string
- 'null'
allOf:
- $ref: '#/components/schemas/BlobName'
oview:
type:
- number
- 'null'
settings:
type:
- string
- 'null'
Crop:
type: object
required:
- id
- type
- workzoneId
- name
- crop
- actualCrop
- rotation
- layers
- cameraType
- cameraState
- scan
- thumbnailBlobName
- thumbnailUrl
- oview
- settings
- createdBy
- createdAt
- updatedBy
- updatedAt
x-tags:
- Crop
properties:
id:
readOnly: true
$ref: '#/components/schemas/CropUrn'
type:
type: string
enum:
- crop
workzoneId:
$ref: '#/components/schemas/WorkzoneUrn'
name:
type: string
crop:
type: string
description: Description of the plans defining the bounding box of the crop in the scene
actualCrop:
type: string
description: Description of the plans defining the bounding box of the crop related to the camera
rotation:
type: string
description: Description about the rotation of the crop inside the camera
layers:
type:
- string
- 'null'
description: Scans related to the crop
cameraType:
type: string
description: Details about the camera (overview, ground, scan, arcrotate)
cameraState:
type: string
description: Description of source and direction of the camera of the scene
scan:
type: string
description: root scan for the crop
thumbnailBlobName:
type:
- string
- 'null'
allOf:
- $ref: '#/components/schemas/BlobName'
thumbnailUrl:
type:
- string
- 'null'
allOf:
- $ref: '#/components/schemas/Url'
oview:
type:
- integer
- 'null'
settings:
type:
- string
- 'null'
createdBy:
$ref: '#/components/schemas/UserUrn'
createdAt:
$ref: '#/components/schemas/DateTime'
updatedBy:
$ref: '#/components/schemas/UserUrn'
updatedAt:
$ref: '#/components/schemas/DateTime'
WorkzoneRef:
oneOf:
- $ref: '#/components/schemas/WorkzoneUrn'
- $ref: '#/components/schemas/WorkzoneId'
Url:
type: string
format: uri
description: Link that will redirect to 302 signed link to download the corresponding file.
Error:
type: object
required:
- status
- title
properties:
status:
type: integer
format: int32
title:
type: string
detail:
type: string
description: human readable description of the error in english
errorCode:
type: string
description: detailed code describing error, can be used to map to a localized message
errorValues:
type: object
description: values implied in the error, typically an input parameter, can be used to include in a localized message
cropCreate:
type: object
required:
- workzoneId
- name
- crop
- actualCrop
- rotation
- cameraType
- cameraState
- scan
properties:
workzoneId:
$ref: '#/components/schemas/WorkzoneRef'
name:
type: string
crop:
type: string
description: Description of the plans defining the bounding box of the crop in the scene
actualCrop:
type: string
description: Description of the plans defining the bounding box of the crop related to the camera
rotation:
type: string
description: Description about the rotation of the crop inside the camera
layers:
type:
- string
- 'null'
description: Scans related to the crop
cameraType:
type: string
description: Details about the camera (overview, ground, scan, arcrotate)
cameraState:
type: string
description: Description of source and direction of the camera of the scene
scan:
type: string
description: root scan for the crop
thumbnailBlobName:
type:
- string
- 'null'
allOf:
- $ref: '#/components/schemas/BlobName'
oview:
type:
- number
- 'null'
settings:
type:
- string
- 'null'
Uuid:
type: string
description: UUIDv4
format: uuid
example: 156fff1a-0ef7-4335-891a-627928a19e29
ProjectId:
allOf:
- $ref: '#/components/schemas/Uuid'
example: 8196e320-8a4d-4d29-b0a9-077cd7ed3368
parameters:
cropRef:
name: cropRef
in: path
required: true
description: The Id or Urn of the crop
schema:
oneOf:
- $ref: '#/components/schemas/CropUrn'
- $ref: '#/components/schemas/CropId'
workzonesFilter:
name: workzones
in: query
required: false
description: 'Comma-separated list of work zone references.
Providing at least 1 invalid (bad format, not exist, unreachable) work zone will return a 400 Bad Request error.
Providing empty parameter will return empty crops list.
'
schema:
type: array
items:
$ref: '#/components/schemas/WorkzoneRef'
examples:
oneId:
summary: Example of single work zone
value:
- 9260cd6f-a27b-456f-a5e3-b9c9fd4689f9
multipleIds:
summary: Example of multiple work zones
value:
- 9260cd6f-a27b-456f-a5e3-b9c9fd4689f9
- urn:cintoo:workzone:e7868b89-80a6-429d-949f-66e3834651f2
accountRef:
name: accountRef
in: path
required: true
description: The Id or Urn of the account
schema:
oneOf:
- $ref: '#/components/schemas/AccountUrn'
- $ref: '#/components/schemas/AccountId'
projectRef:
name: projectRef
in: path
required: true
description: The Id or Urn of the project
schema:
oneOf:
- $ref: '#/components/schemas/ProjectUrn'
- $ref: '#/components/schemas/ProjectId'
responses:
UnexpectedError:
description: unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
'400':
value:
status: 400
title: Bad Request
'401':
value:
status: 401
title: Unauthorized
'403':
value:
status: 403
title: Forbidden
'404':
value:
status: 404
title: Not Found
'405':
value:
status: 405
title: Method Not Allowed
'406':
value:
status: 406
title: Not Acceptable
securitySchemes:
oauth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://aec.cintoo.com/oauth/authorize
tokenUrl: https://aec.cintoo.com/oauth/token
scopes: {}
refreshUrl: https://aec.cintoo.com/oauth/token
x-tagGroups:
- name: General
tags:
- errors_list
- internal_information
- token_management
- Permissions
- Authentication
- name: Resources
tags:
- Resources
- name: Tenant
tags:
- Tenant
- name: Account
tags:
- Account
- Subscription
- Role
- User
- Group
- Trusted Device
- name: Subscription
tags:
- Usage Report
- name: Project
tags:
- Project
- Members
- Workzone
- name: Project Data
tags:
- File
- Annotation
- Saved View
- Share Link
- Crop
- Measurement
- Tag List
- Tag
- name: Jobs
tags:
- Progress Monitoring
- Import Model
- Export Scene
- Segmentation
- Video360
- Import IDD
- name: Integrations
tags:
- Integrations
- Konekt
- Autodesk
- Procore
- name: Tutorials
tags:
- tuto_upload_file
- understand_tag_data