swagger: '2.0' info: title: Raster Foundry description: An application to find, view, and analyze geospatial data at any scale version: "1.18.0" host: app.rasterfoundry.com schemes: - http - https basePath: /api produces: - application/json consumes: - application/json securityDefinitions: # X-API-Key: abcdef12345 APIKeyHeader: type: apiKey in: header name: Authorization security: - APIKeyHeader: [] x-top-matter: - title: Introduction level: 1 content: | The Raster Foundry API allows developers to find, view, and analyze geospatial data in Raster Foundry. As the name implies, it's especially useful for working with large raster datasets like satellite imagery. Raster Foundry is built with an openly licensed, open source code base. If you'd like to peek under the hood, make a request, or become a contributor, find us on Github. - title: Authentication level: 2 content: | Our API identifies applications and users with JSON Web Tokens (JWT). Refresh tokens can be created in your Raster Foundry account and used to generate example requests signed with valid session tokens (detailed instructions are available here). x-resources: - name: Projects description: | Projects are user-defined collections of scenes and are the fundamental unit that tools act on. further-description: - title: Project permissions content: | Projects are currently private to the user that created them and cannot be discovered by other Raster Foundry users. However, projects can be shared publicly as a tiled web map with a direct link. Project permissions will eventually expand to include making projects discoverable to all users or just users within an organization. - name: Scenes description: | Scenes are single or multi-image rasters where every image within the scene shares the same metadata characteristics and are always associated with a datasource. This simplest example of a scene is a single-band image like a land classification raster. The most complex example is a multi-image scene made up of multi-band images, like a pre-tiled aerial image where each tile is one piece of a larger coherent scene. further-description: - title: Scene permissions content: | By default, imported scenes are private to the user that uploaded them and scenes generated from public data sources are discoverable by all users. Scene permissions will eventually expand to include making imported scenes discoverable to all users or just users within an organization. - name: Images description: | Images are single or multi-band rasters that can be viewed and edited as a single unit but are always associated with a parent scene. They are sometimes synonymous with their parent scenes and other times just one of several images associated with their parent scenes. One common example of an image is a multispectral satellite image; another is a land classification raster. further-description: - title: Image permissions content: | Images respect the permissions applied to their parent scenes. - name: Uploads description: 'Uploads are datasets that a user or application has attempted to upload to Raster Foundry (successfully or unsuccessfully).' further-description: - title: Uploads permissions content: | All user uploads are private to that user. - name: Datasources description: | Datasources contain information common to all scenes associated with them, such as the number of bands to expect in images associated with that datasource. A datasource can be specific (e.g. a particular earth observation satellite) or generic (e.g. a 3-band sensor on a UAV). All scenes must have an associated datasource. - name: Tokens description: | Tokens are used to securely identify users and applications accessing the API. - name: Tools description: | Tools are algorithms that can be applied to projects manually or automatically. Tools can range from primitive statistical queries, to algebraic functions, to complex logic trees of operations happening in parallel. Tools can be constructed of other tools, custom-defined operations, or both. They can take any number of projects as inputs. - name: Users description: | Users and third party applications can be managed with the Users resource. - name: Organizations description: | Organizations are associations of users who share uniform access to permissions-protected resources. - name: Exports description: | Projects can be exported, but individual scenes and images cannot. - name: Shapes description: | Shapes are vectors that each user can create and manage. These shapes can then be used in various ways within the Raster Foundry platform. - name: Licenses description: | A license is an official permission or permit to do, use, or own something. Users can add licenses to the data they create and share in Raster Foundry to communicate to others if and how that data can be used. - name: Teams description: | Teams represent groups of users within (and across) organizations. Each team belongs to one organization. A user can be a member of any number of teams. - name: Admin description: | Platforms, Organizations, and Teams can be used to manage users and visibility of projects, analyses, and scenes. Most of these functions will only be available to uses who are administrating groups. tags: - name: Users description: 'Operations involving users and organizations' - name: Authentication description: 'Resources to obtain, use, and delete API tokens' - name: Imagery description: 'Interact with imagery' - name: Lab description: 'Geospatial processing discovery and endpoints' - name: Statistics description: 'Statistical metadata about geospatial data' - name: Permissions description: 'Resources relating to object-level access' - name: Admin description: 'Resources related to administration' paths: /users/dropbox-setup/: x-resource: Users post: summary: 'Store a dropbox access token for a user from an authorization code' tags: - Users parameters: - name: DropboxAuthRequest in: body schema: $ref: '#/definitions/DropboxAuthRequest' responses: 200: description: 'Dropbox access token successfully fetched' /users/me/: x-resource: Users get: summary: 'Get a logged-in user profile' tags: - Users responses: 200: description: 'Profile found' schema: $ref: '#/definitions/UserSelf' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' patch: summary: 'Update user profile information' parameters: - name: Profile in: body schema: $ref: '#/definitions/Auth0UserProfile' tags: - Users responses: 200: description: 'Profile updated' schema: $ref: '#/definitions/Auth0User' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Update user api tokens' tags: - Users parameters: - name: User in: body schema: $ref: '#/definitions/User' responses: 204: description: 'No Content' 404: description: 'User not found' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /users/me/roles: x-resource: Users get: summary: "Get a logged-in user's roles" tags: - Users responses: 200: description: 'Roles found' schema: type: array items: $ref: '#/definitions/UserGroupRoleWithRelated' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /users/search/: x-resource: Users get: summary: 'Search for users' tags: - Users parameters: - $ref: '#/parameters/search' responses: 200: description: 'Up to 5 users matching search' schema: type: array maxItems: 5 items: $ref: '#/definitions/UserSearched' /users/{userID}/: x-resource: Users get: summary: 'Get a single user' tags: - Users parameters: - $ref: '#/parameters/userID' responses: 200: description: 'User found' schema: $ref: '#/definitions/UserSearched' 404: description: 'User not found' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Update a user. Dev use only' tags: - Users parameters: - $ref: '#/parameters/userID' - name: User in: body required: true schema: $ref: '#/definitions/User' responses: 204: description: 'Update successful (No Content)' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /organizations/search/: x-resource: Organizations get: summary: 'Search for organizations' tags: - Users parameters: - $ref: '#/parameters/search' responses: 200: description: 'Up to 5 organizations matching search' schema: type: array maxItems: 5 items: $ref: '#/definitions/Organization' /organizations/{organizationID}/: x-resource: Organizations get: summary: 'Get details for an organization' tags: - Users parameters: - $ref: '#/parameters/organizationID' responses: 200: description: 'Returned organization' schema: $ref: '#/definitions/Organization' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /organizations/{organizationID}/users/: x-resource: Organizations get: summary: 'Get users and roles for an organization' tags: - Users parameters: - $ref: '#/parameters/organizationID' responses: 200: description: 'Paginated list of user roles' schema: $ref: '#/definitions/UserPaginated' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /platforms/: x-resource: Admin get: summary: 'Get a list of platforms' tags: - Admin parameters: - $ref: '#/parameters/page' - $ref: '#/parameters/pageSize' responses: 200: description: 'Paginated list platforms' schema: $ref: '#/definitions/PlatformsPaginated' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Create a platform' tags: - Admin parameters: - name: Platform in: body schema: $ref: '#/definitions/Platform' responses: 201: description: 'Platform created' schema: $ref: '#/definitions/Platform' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /platforms/{platformID}/: x-resource: Admin get: summary: 'Get a platform' tags: - Admin parameters: - $ref: '#/parameters/platformID' responses: 200: description: 'Platform found' schema: $ref: '#/definitions/Platform' 404: description: 'Platform not found' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Update a platform' tags: - Admin parameters: - $ref: '#/parameters/platformID' - name: Platform in: body schema: $ref: '#/definitions/Platform' responses: 204: description: 'No Content (Update successful)' 404: description: 'Platform not found' schema: $ref: '#/definitions/Error' default: description: 'Unexpected Error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete a platform' tags: - Admin parameters: - $ref: '#/parameters/platformID' responses: 204: description: 'Deletion Successful (no content)' 404: description: | The UUID parameter does not refer to platform or the user does not have permission to perform this action schema: $ref: '#/definitions/Error' /platforms/{platformID}/members/: x-resource: Admin get: summary: 'Get a list of users for the platform. Platform admin only' tags: - Admin parameters: - $ref: '#/parameters/platformID' - $ref: '#/parameters/page' - $ref: '#/parameters/pageSize' - $ref: '#/parameters/search' responses: 200: description: 'Paginated list of users with their platform role' schema: $ref: '#/definitions/UserWithRolePaginated' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Move a user to the platform' tags: - Admin parameters: - $ref: '#/parameters/platformID' - name: userRole in: body required: true schema: $ref: '#/definitions/UserRole' responses: 200: description: 'List of modified user roles' schema: type: array items: $ref: '#/definitions/UserGroupRole' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /platforms/{platformID}/teams/search: x-resource: Admin get: summary: 'Get a list of teams that the user can see on the platform.' tags: - Admin parameters: - $ref: '#/parameters/platformID' - $ref: '#/parameters/search' responses: 200: description: 'List of teams that meet search criteria' schema: type: array items: $ref: '#/definitions/Team' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /platforms/{platformID}/organizations/: x-resource: Admin get: summary: 'List platform organizations. Platform admin only.' tags: - Admin parameters: - $ref: '#/parameters/platformID' - $ref: '#/parameters/page' - $ref: '#/parameters/pageSize' responses: 200: description: 'Paginated Organizations' schema: $ref: '#/definitions/OrganizationsPaginated' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Create an Organization.' tags: - Admin parameters: - $ref: '#/parameters/platformID' - name: Organization in: body required: true schema: $ref: '#/definitions/OrganizationCreate' responses: 201: description: 'Organization created' schema: $ref: '#/definitions/Organization' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /platforms/{platformID}/organizations/{organizationID}/: x-resource: Admin get: summary: 'Fetch platform organization' tags: - Admin parameters: - $ref: '#/parameters/platformID' - $ref: '#/parameters/organizationID' responses: 200: description: 'Organization found' schema: $ref: '#/definitions/Organization' 404: description: 'Organization not found' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Update platform organization' tags: - Admin parameters: - $ref: '#/parameters/platformID' - $ref: '#/parameters/organizationID' - name: Organization in: body required: true schema: $ref: '#/definitions/Organization' responses: 204: description: 'No Content (success)' 404: description: 'Organization not found' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Deactivate platform organization' tags: - Admin parameters: - $ref: '#/parameters/platformID' - $ref: '#/parameters/organizationID' responses: 204: description: 'No Content (success)' 404: description: 'Organization not found' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /platforms/{platformID}/organizations/{organizationID}/members/: x-resource: Admin get: summary: 'Fetch organization member list. Organization admin only' tags: - Admin parameters: - $ref: '#/parameters/platformID' - $ref: '#/parameters/organizationID' - $ref: '#/parameters/page' - $ref: '#/parameters/pageSize' - $ref: '#/parameters/search' responses: 200: description: 'Paginated Organization members' schema: $ref: '#/definitions/UserWithRolePaginated' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Move a user to the organization' tags: - Admin parameters: - $ref: '#/parameters/platformID' - $ref: '#/parameters/organizationID' - name: userOrganizationRole description: 'Role that the user will have in the organization' in: body schema: $ref: '#/definitions/UserRole' responses: 200: description: 'Modified roles' schema: type: array items: $ref: '#/definitions/UserGroupRole' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /platforms/{platformID}/organizations/{organizationID}/teams/: x-resource: Admin get: summary: 'Fetch organization teams' tags: - Admin parameters: - $ref: '#/parameters/platformID' - $ref: '#/parameters/organizationID' - $ref: '#/parameters/pageSize' - $ref: '#/parameters/page' - $ref: '#/parameters/search' responses: 200: description: 'Organization teams' schema: $ref: '#/definitions/TeamsPaginated' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Create organization team' tags: - Admin parameters: - $ref: '#/parameters/platformID' - $ref: '#/parameters/organizationID' - name: team in: body required: true schema: $ref: '#/definitions/TeamCreate' responses: 201: description: 'Team Created' schema: $ref: '#/definitions/Team' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /platforms/{platformID}/organizations/{organizationID}/teams/{teamID}/: x-resource: Admin get: summary: 'Fetch team' tags: - Admin parameters: - $ref: '#/parameters/platformID' - $ref: '#/parameters/organizationID' - $ref: '#/parameters/teamID' responses: 200: description: 'Team found' schema: $ref: '#/definitions/Team' 404: description: 'Team not found' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Update team' tags: - Admin parameters: - $ref: '#/parameters/platformID' - $ref: '#/parameters/organizationID' - $ref: '#/parameters/teamID' - name: team in: body required: true schema: $ref: '#/definitions/Team' responses: 204: description: 'No Content (success)' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete team' tags: - Admin parameters: - $ref: '#/parameters/platformID' - $ref: '#/parameters/organizationID' - $ref: '#/parameters/teamID' responses: 204: description: 'No Content (success)' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /platforms/{platformID}/organizations/{organizationID}/teams/{teamID}/members/: x-resource: Admin get: summary: 'Fetch team members' tags: - Admin parameters: - $ref: '#/parameters/platformID' - $ref: '#/parameters/organizationID' - $ref: '#/parameters/teamID' - $ref: '#/parameters/page' - $ref: '#/parameters/pageSize' - $ref: '#/parameters/search' responses: 200: description: 'Organization teams' schema: $ref: '#/definitions/TeamsPaginated' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Add team member' tags: - Admin parameters: - $ref: '#/parameters/platformID' - $ref: '#/parameters/organizationID' - $ref: '#/parameters/teamID' - name: userRole in: body required: true schema: $ref: '#/definitions/UserRole' responses: 200: description: 'List of modified user roles' schema: type: array items: $ref: '#/definitions/UserGroupRole' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /platforms/{platformID}/organizations/{organizationID}/teams/{teamID}/members/{userID}: x-resource: Admin delete: summary: 'Remove team member' tags: - Admin parameters: - $ref: '#/parameters/platformID' - $ref: '#/parameters/organizationID' - $ref: '#/parameters/teamID' - $ref: '#/parameters/userID' responses: 200: description: 'List of modified user roles' schema: type: array items: $ref: '#/definitions/UserGroupRole' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /datasources/: x-resource: Datasources get: summary: 'Get a list of datasources' description: | Datasources are sensors that share common metadata, like default color corrections. Scenes from a given datasource can be mosaiced and color corrected together. tags: - Datasources parameters: - $ref: '#/parameters/owner' - $ref: '#/parameters/name' - $ref: '#/parameters/ownershipType' - $ref: '#/parameters/search' - $ref: '#/parameters/groupType' - $ref: '#/parameters/groupId' responses: 200: description: SUCCESS schema: $ref: '#/definitions/DatasourcePaginated' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: Create a datasource description: | Datasources are sensors that share common metadata, like default color corrections. Scenes from a given datasource can be mosaiced and color corrected together. tags: - Datasources parameters: - name: datasource in: body required: true schema: $ref: '#/definitions/DatasourceToCreate' responses: 201: description: SUCCESS schema: $ref: '#/definitions/Datasource' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /datasources/{datasourceID}: x-resource: Datasources get: summary: 'Get datasource by ID' parameters: - $ref: '#/parameters/datasourceID' tags: - Datasources responses: 200: description: SUCCESS schema: $ref: '#/definitions/Datasource' 403: description: 'Insufficient permissions for resource to get this datasource' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Replace a datasource' tags: - Datasources parameters: - $ref: '#/parameters/datasourceID' - name: datasource in: body required: true schema: allOf: - $ref: '#/definitions/Datasource' - $ref: '#/definitions/DatasourceBands' responses: 204: description: 'Update successful (no further processing needed)' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete a datasource' tags: - Datasources parameters: - $ref: '#/parameters/datasourceID' responses: 200: description: 'Deletion successful (no content)' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /datasources/{datasourceID}/permissions/: x-resource: Datasources get: summary: 'List access control rules for this datasource' parameters: - $ref: '#/parameters/datasourceID' tags: - Permissions responses: 200: description: 'All access control rules for this datasource' schema: type: array items: $ref: '#/definitions/AccessControlRule' 403: description: 'Insufficient permissions for resource to list permissions on this datasource' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Replace permissions defined on this datasource' tags: - Permissions parameters: - $ref: '#/parameters/datasourceID' - name: accessControlRules in: body required: true schema: type: array items: $ref: '#/definitions/AccessControlRuleCreate' responses: 200: description: 'Access control rules replaced with response successfully' schema: type: array items: $ref: '#/definitions/AccessControlRule' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Add a new access control rule to this datasource' tags: - Permissions parameters: - $ref: '#/parameters/datasourceID' - name: accessControlRule in: body required: true schema: $ref: '#/definitions/AccessControlRuleCreate' responses: 200: description: 'Access control rule appended successfully' schema: type: array items: $ref: '#/definitions/AccessControlRule' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /uploads/: x-resource: Uploads get: summary: 'Get a list of uploads' description: | The uploads API endpoint enables searching, listing, and creating new uploads. tags: - Imagery parameters: - $ref: '#/parameters/orderingBase' - $ref: '#/parameters/pageSize' - $ref: '#/parameters/page' - $ref: '#/parameters/organization' - $ref: '#/parameters/datasource' - $ref: '#/parameters/uploadStatus' - $ref: '#/parameters/owner' - $ref: '#/parameters/projectId' - $ref: '#/parameters/layerId' responses: 200: description: 'Paginated list of uploads' schema: $ref: '#/definitions/UploadPaginated' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Create an upload' description: | Create a new upload. tags: - Imagery parameters: - name: Upload in: body schema: $ref: '#/definitions/UploadCreate' responses: 201: description: 'Upload created' schema: $ref: '#/definitions/Upload' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /uploads/{uploadID}/: x-resource: Uploads get: summary: 'Get upload details' tags: - Imagery parameters: - $ref: '#/parameters/uploadID' responses: 200: description: 'Info about upload' schema: $ref: '#/definitions/Upload' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Update an upload' description: 'Update an existing upload' tags: - Imagery parameters: - $ref: '#/parameters/uploadID' - name: upload in: body required: true schema: $ref: '#/definitions/UploadCreate' responses: 204: description: 'Update successful (no further processing needed)' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete an upload' tags: - Imagery parameters: - $ref: '#/parameters/uploadID' responses: 204: description: 'Deletion successful (no content)' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /uploads/{uploadID}/credentials/: x-resource: Uploads get: summary: 'Get credentials for an AWS S3 bucket' tags: - Authentication - Imagery parameters: - $ref: '#/parameters/uploadID' responses: 200: description: 'AWS credentials scoped to the upload bucket with prefix' schema: $ref: '#/definitions/UploadCredentialsResponse' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /scenes/: x-resource: Scenes get: summary: 'Get a list of scenes' tags: - Imagery parameters: - $ref: '#/parameters/createdBy' - $ref: '#/parameters/modifiedBy' - $ref: '#/parameters/minCreateDatetime' - $ref: '#/parameters/maxCreateDatetime' - $ref: '#/parameters/minModifiedDatetime' - $ref: '#/parameters/maxModifiedDatetime' - $ref: '#/parameters/owner' - $ref: '#/parameters/isActive' - $ref: '#/parameters/maxCloudCover' - $ref: '#/parameters/minCloudCover' - $ref: '#/parameters/minAcquisitionDatetime' - $ref: '#/parameters/maxAcquisitionDatetime' - $ref: '#/parameters/datasource' - $ref: '#/parameters/month' - $ref: '#/parameters/minDayOfMonth' - $ref: '#/parameters/maxDayOfMonth' - $ref: '#/parameters/maxSunAzimuth' - $ref: '#/parameters/minSunAzimuth' - $ref: '#/parameters/maxSunElevation' - $ref: '#/parameters/minSunElevation' - $ref: '#/parameters/bbox' - $ref: '#/parameters/inProject' - $ref: '#/parameters/inLayer' - $ref: '#/parameters/ingested' - $ref: '#/parameters/ingestStatus' - $ref: '#/parameters/pending' - name: projectLayerShape in: query type: string format: uuid description: 'UUID of layer to filter scenes by AOI shape' - name: shape in: query type: string format: uuid description: 'UUID of a shape in shapes table' - $ref: '#/parameters/ownershipType' - $ref: '#/parameters/groupType' - $ref: '#/parameters/groupId' - name: exactCount in: query type: boolean description: Return the exact count of scenes for a search. This can cause the query to time out if there are enough scenes - $ref: '#/parameters/pageSize' - $ref: '#/parameters/page' - $ref: '#/parameters/orderingScene' - $ref: '#/parameters/forProjectId' responses: 200: description: 'Paginated list of scenes' schema: $ref: '#/definitions/SceneBrowsePaginated' 503: description: 'Request timed out. Try using more specific filters.' schema: $ref: '#/definitions/Error' 504: description: 'Request timed out. Try using more specific filters' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: Create a scene tags: - Imagery parameters: - name: scene in: body required: true schema: $ref: '#/definitions/Scene' responses: 201: description: 'Successfully created a new scene' schema: $ref: '#/definitions/Scene' 400: description: 'Client error creating a scene' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /scenes/{sceneID}/: x-resource: Scenes get: summary: 'Get scene details' tags: - Imagery parameters: - $ref: '#/parameters/sceneID' responses: 200: description: 'Info about Scene' schema: $ref: '#/definitions/Scene' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Update a scene' tags: - Imagery parameters: - name: scene in: body required: true schema: $ref: '#/definitions/Scene' - $ref: '#/parameters/sceneID' responses: 204: description: 'Update successful (no further processing needed)' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete a scene' description: | Warning: this will delete any associated imagery as well. tags: - Imagery parameters: - $ref: '#/parameters/sceneID' responses: 204: description: 'Deletion successful (no content)' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /scenes/{sceneID}/download: x-resource: Scenes get: summary: 'Get list of downloadable Images' tags: - Imagery parameters: - $ref: '#/parameters/sceneID' responses: 200: description: 'An array of downloadable images. Each image has a `downloadUri` property.' schema: type: array items: $ref: '#/definitions/ImageWithDownloadUri' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /scenes/{sceneID}/permissions/: x-resource: Scenes get: summary: 'List access control rules for this scene' parameters: - $ref: '#/parameters/sceneID' tags: - Permissions responses: 200: description: 'All access control rules for this scene' schema: type: array items: $ref: '#/definitions/ObjectAccessControlRule' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Replace permissions defined on this scene' tags: - Permissions parameters: - $ref: '#/parameters/sceneID' - name: accessControlRules in: body required: true schema: type: array items: $ref: '#/definitions/ObjectAccessControlRule' responses: 200: description: 'Access control rules replaced with response successfully' schema: type: array items: $ref: '#/definitions/ObjectAccessControlRule' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Add a new access control rule to this scene' tags: - Permissions parameters: - $ref: '#/parameters/sceneID' - name: accessControlRule in: body required: true schema: $ref: '#/definitions/ObjectAccessControlRule' responses: 200: description: 'Access control rule appended successfully' schema: type: array items: $ref: '#/definitions/ObjectAccessControlRule' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Remove all access permissions from this scene' tags: - Permissions parameters: - $ref: '#/parameters/sceneID' responses: 204: description: 'No Content. Access control rules deleted successfully' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /scenes/{sceneID}/actions: x-resource: Scenes get: summary: 'List actions a user is allowed to perform on this scene' tags: - Permissions parameters: - $ref: '#/parameters/sceneID' responses: 200: description: | 'List of actions a user is allowed to perform on this scene. A * in the response indicates the user has full permissions for this project.' schema: type: array items: type: string enum: - 'VIEW' - 'EDIT' - 'DELETE' - '*' /scenes/{sceneID}/datasource: x-resource: Scenes get: summary: 'Get the datasource for a scene you can view' tags: - Imagery parameters: - $ref: '#/parameters/sceneID' responses: 200: description: 'A datasource' schema: $ref: '#/definitions/Datasource' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /scenes/{sceneID}/thumbnail: x-resource: Scenes get: summary: 'Get a thumbnail for this COG scene. Only works for scenes of type COG' tags: - Imagery parameters: - $ref: '#/parameters/sceneID' - $ref: '#/parameters/redBand' - $ref: '#/parameters/greenBand' - $ref: '#/parameters/blueBand' - $ref: '#/parameters/brightnessFloor' - $ref: '#/parameters/queryAuthToken' - $ref: '#/parameters/width' - $ref: '#/parameters/height' produces: - image/png responses: 200: description: 'PNG of a thumbnail for this scene' schema: type: string format: binary 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/: x-resource: Projects get: summary: 'Get a paginated list of projects' description: | Get a paginated list of all the projects which a user has permission to view. tags: - Imagery parameters: - $ref: '#/parameters/orderingBase' - $ref: '#/parameters/pageSize' - $ref: '#/parameters/page' - $ref: '#/parameters/owner' - $ref: '#/parameters/organization' - $ref: '#/parameters/tagsInclude' - $ref: '#/parameters/tagsExclude' - $ref: '#/parameters/ownershipType' - $ref: '#/parameters/groupType' - $ref: '#/parameters/groupId' - $ref: '#/parameters/search' responses: 200: description: 'Paginated list of projects' schema: $ref: '#/definitions/ProjectPaginated' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Create a project' tags: - Imagery parameters: - name: project in: body required: true schema: $ref: '#/definitions/ProjectCreate' responses: 201: description: 'Project creation successful' schema: $ref: '#/definitions/Project' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/: x-resource: Projects get: summary: 'Get project details' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/analysisId' - $ref: '#/parameters/queryMapToken' responses: 200: description: 'Project found' schema: $ref: '#/definitions/Project' 404: description: 'Resource does not exist' schema: $ref: '#/definitions/Error' 403: description: 'Insufficient permissions for resource' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Perform a complete update of a project.' tags: - Imagery parameters: - name: project in: body required: true schema: $ref: '#/definitions/Project' - $ref: '#/parameters/projectID' responses: 204: description: 'Update successful (no further processing needed)' 404: description: 'Resource does not exist' schema: $ref: '#/definitions/Error' 403: description: 'Insufficient permissions for resource' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete a project' tags: - Imagery parameters: - $ref: '#/parameters/projectID' responses: 204: description: 'Deletion successful (no content)' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/datasources/: x-resource: Projects get: summary: 'List datasources for scenes in this project' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/analysisId' responses: 200: description: 'A list of datasources' schema: type: array items: $ref: '#/definitions/DatasourceThin' /projects/{projectID}/project-color-mode/: x-resource: Projects post: summary: 'Set the color mode on all scenes in the project' tags: - Imagery parameters: - name: projectColorMode in: body required: true schema: $ref: '#/definitions/ProjectColorMode' - $ref: '#/parameters/projectID' responses: 204: description: 'Update Successful' 404: description: 'Resource does not exist' schema: $ref: '#/definitions/Error' 403: description: 'Insufficient permissions for resource' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/labels/: x-resource: Projects get: summary: 'Get a list of the labels used on a project default layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' responses: 200: description: 'A list of labels' schema: type: array items: type: string 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/annotation-groups/: x-resource: Projects get: summary: 'Get annotation groups belonging to a project default layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' responses: 200: description: 'Array containing annotation groups for this project default layer' schema: type: array items: $ref: '#/definitions/AnnotationGroup' 404: description: 'Resource does not exist' schema: $ref: '#/definitions/Error' 403: description: 'Insufficient permissions for resource' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Create annotation group for this project default layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - name: annotationGroup in: body required: true schema: $ref: '#/definitions/AnnotationGroupCreate' responses: 200: description: 'Created annotation group' schema: $ref: '#/definitions/AnnotationGroup' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/annotation-groups/summary/: x-resource: Projects get: summary: 'Get a summary of the label groups on a project default layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' responses: 200: description: 'Fetched label summaries' schema: type: array items: $ref: '#/definitions/LabelSummary' 404: description: 'Resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/annotation-groups/{annotationGroupID}/: x-resource: Projects get: summary: 'Get annotation group for project default layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/annotationGroupID' responses: 200: description: 'fetched annotation group' schema: $ref: '#/definitions/AnnotationGroup' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Update annotation group' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/annotationGroupID' - name: annotationGroup in: body required: true schema: $ref: '#/definitions/AnnotationGroup' responses: 200: description: 'Number of updated annotation groups from this request' schema: type: number format: integer 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete annotation group from project default layer and all associated annotations' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/annotationGroupID' responses: 200: description: 'Number of deleted annotation groups from this request' schema: type: number format: integer 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/annotations/: x-resource: Projects get: summary: 'Get annotations belonging to a project default layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/AnnotationLabel' - $ref: '#/parameters/annotationQualityCheck' - $ref: '#/parameters/page' - $ref: '#/parameters/pageSize' - $ref: '#/parameters/queryMapToken' responses: 200: description: 'GeoJSON feature collection containing paginated annotations of this project default layer' schema: $ref: '#/definitions/AnnotationFeatureCollectionPaginated' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Create annotations for a project default layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - name: annotations in: body required: true schema: $ref: '#/definitions/AnnotationFeatureCollectionCreate' responses: 201: description: 'GeoJSON annotations successfully created' schema: $ref: '#/definitions/AnnotationFeatureCollection' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete all annotations from a project default layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' responses: 201: description: 'Annotations Deleted' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/annotations/shapefile: x-resource: Projects get: summary: 'Get a url for project default layer annotations exported to a shapefile' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/exportAll' responses: 200: description: 'Annotations retrieved successfully' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Import annotations from a shapefile to project default layer' tags: - Imagery consumes: - multipart/form-data parameters: - $ref: '#/parameters/projectID' - in: formData name: name type: file description: The shapefile to upload responses: 201: description: 'Annotations imported successfully' schema: type: array items: $ref: '#/definitions/AnnotationFeature' 400: description: 'Some records could not be parsed to annotations' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/annotations/{annotationID}: x-resouce: Projects get: summary: 'Get an annotation belonging to a project default layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/annotationID' responses: 200: description: 'GeoJSON feature containing one annotation from this project default layer' schema: $ref: '#/definitions/AnnotationFeature' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Update an annotation of this project default layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/annotationID' - name: annotation in: body required: true schema: $ref: '#/definitions/AnnotationFeatureUpdate' responses: 204: description: 'No content, update successful' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete an annotation from project default layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/annotationID' responses: 204: description: 'Deletion successful.' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/areas-of-interest/: x-resource: Projects get: summary: 'Get all areas of interest for a project' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/pageSize' - $ref: '#/parameters/page' responses: 200: description: 'JSON summary of the filters and Polygons that make up AOIs for the given project.' schema: $ref: '#/definitions/AoiPaginated' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Create an area of interest for a project' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - name: aoi in: body required: true schema: $ref: '#/definitions/AOI' responses: 201: description: 'Area of Interest created.' schema: $ref: '#/definitions/AOI' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/scenes/: x-resource: Projects get: summary: 'Get a list of scenes associated with a project' tags: - Imagery parameters: - $ref: '#/parameters/orderingScene' - $ref: '#/parameters/pageSize' - $ref: '#/parameters/page' - $ref: '#/parameters/projectID' - $ref: '#/parameters/organization' - $ref: '#/parameters/maxCloudCover' - $ref: '#/parameters/minCloudCover' - $ref: '#/parameters/minAcquisitionDatetime' - $ref: '#/parameters/maxAcquisitionDatetime' - $ref: '#/parameters/minCreateDatetime' - $ref: '#/parameters/maxCreateDatetime' - $ref: '#/parameters/datasource' - $ref: '#/parameters/month' - $ref: '#/parameters/minDayOfMonth' - $ref: '#/parameters/maxDayOfMonth' - $ref: '#/parameters/maxSunAzimuth' - $ref: '#/parameters/minSunAzimuth' - $ref: '#/parameters/maxSunElevation' - $ref: '#/parameters/minSunElevation' - $ref: '#/parameters/minResolution' - $ref: '#/parameters/maxResolution' - $ref: '#/parameters/tags' - $ref: '#/parameters/ingested' - $ref: '#/parameters/ingestStatus' - $ref: '#/parameters/pending' responses: 200: description: 'Paginated list of scenes associated with this project' schema: $ref: '#/definitions/ScenePaginated' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Add scenes to a project by their ID' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - name: scenes in: body required: true description: 'UUIDs of scenes to place in project' schema: type: array items: type: string format: uuid responses: 200: description: 'Number of scenes added to a project' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Replace scenes in a project' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - name: scenes in: body required: true description: 'UUIDs of scenes to replace in project' schema: type: array items: type: string format: uuid responses: 200: description: 'Scenes in this project' schema: type: array items: $ref: '#/definitions/Scene' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete scenes from a project' tags: - Imagery parameters: - name: scenes in: body required: true description: 'UUIDs of scenes to delete in project' schema: type: array items: type: string format: uuid - $ref: '#/parameters/projectID' responses: 204: description: 'No content, delete successful' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/scenes/{sceneID}/accept: post: summary: 'Approve a pending scene which has passed an area of interest check.' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/sceneID' responses: 204: description: 'Successfully accepted the Scene.' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/scenes/accept: post: summary: 'Approve a list of pending scenes which have passed an area of interest check.' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - name: scenes in: body required: true description: 'UUIDs of scenes to approve' schema: $ref: '#/definitions/BulkAcceptParams' responses: 204: description: 'Successfully accepted scenes' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/scenes/bulk-add-from-query/: x-resource: Projects post: summary: 'Add scenes to a project based on search parameters' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - name: combinedSceneQueryParameters description: 'combined query parameters for finding scenes to add to this project' in: body schema: $ref: '#/definitions/CombinedSceneQueryParams' responses: 201: description: 'List of scenes added to project' schema: type: array items: $ref: '#/definitions/Scene' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/mosaic/: x-resource: Projects get: summary: "Get a list of a project's scene IDs and their color-correction parameters" tags: - Imagery parameters: - $ref: '#/parameters/projectID' responses: 200: description: 'An ordered list of scene IDs and corresponding color correction parameters' schema: type: array items: $ref: '#/definitions/MosaicDefinition' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/mosaic/bulk-update-color-corrections/: x-resource: Projects post: summary: 'Save color-correction parameters for all scenes in a project' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - name: combinedSceneCorrectionParameters description: 'Combined color correction parameters' in: body schema: $ref: '#/definitions/CombinedSceneCorrectionParams' responses: 200: description: "Successfully updated all scenes' color correction parameters" 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/mosaic/{sceneID}: x-resource: Projects get: summary: "Get a project's saved color-correction parameters" tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/sceneID' responses: 200: description: 'Color correction parameters' schema: $ref: '#/definitions/ColorCorrection' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Save color-correction parameters for a particular scene' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/sceneID' - name: updatedColorCorrection description: 'Updated color corrections' in: body schema: $ref: '#/definitions/ColorCorrection' responses: 204: description: 'Successfully updated color correction parameters' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/order: x-resource: Projects put: summary: 'Set a z-index order for scenes within the specified project' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - name: sceneIDs in: body description: | The z order for scenes in this project, relative to each other. The first listed scene will be visualized on top of all the others, and the last listed scene will be visualized below all the others. schema: type: array items: type: string format: uuid responses: 204: description: 'Successfully updated order of scenes in project' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/permissions/: x-resource: Projects get: summary: 'List access control rules for this project' parameters: - $ref: '#/parameters/projectID' tags: - Permissions responses: 200: description: 'All access control rules for this project' schema: type: array items: $ref: '#/definitions/AccessControlRule' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Replace permissions defined on this project' tags: - Permissions parameters: - $ref: '#/parameters/projectID' - name: accessControlRules in: body required: true schema: type: array items: $ref: '#/definitions/AccessControlRuleCreate' responses: 200: description: 'Access control rules replaced with response successfully' schema: type: array items: $ref: '#/definitions/AccessControlRule' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Add a new access control rule to this project' tags: - Permissions parameters: - $ref: '#/parameters/projectID' - name: accessControlRule in: body required: true schema: $ref: '#/definitions/AccessControlRuleCreate' responses: 200: description: 'Access control rule appended successfully' schema: type: array items: $ref: '#/definitions/AccessControlRule' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Remove access control rules on this project' tags: - Permissions parameters: - $ref: '#/parameters/projectID' responses: 200: description: 'Access control rules successfully delete' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/actions/: get: summary: 'List actions a user is allowed to perform on this project' tags: - Permissions parameters: - $ref: '#/parameters/projectID' responses: 200: description: | 'List of actions a user is allowed to perform on this project. A * in the response indicates the user has full permissions for this project.' schema: type: array items: type: string enum: - 'VIEW' - 'EDIT' - 'DEACTIVATE' - 'DELETE' - 'ANNOTATE' - '*' /projects/{projectID}/layers/: x-resource: Projects get: summary: 'Get a paginated list of layers for the project' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/pageSize' - $ref: '#/parameters/page' responses: 200: description: 'A list of project layers' schema: $ref: '#/definitions/ProjectLayerPaginated' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/layers/stats: x-resource: Projects get: summary: "Count scenes in each layer of this project" tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/pageSize' - $ref: '#/parameters/page' responses: 200: description: 'A list of project layers' schema: $ref: '#/definitions/ProjectLayerPaginated' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: Create a new project layer tags: - Imagery parameters: - $ref: '#/parameters/projectID' - name: ProjectLayer in: body schema: $ref: '#/definitions/ProjectLayer' responses: 200: description: Newly created project layer schema: $ref: '#/definitions/ProjectLayer' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/layers/{layerID}/: get: summary: 'Get project layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' responses: 200: description: Project Layer schema: $ref: '#/definitions/ProjectLayer' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: Update project layer tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - name: ProjectLayer in: body schema: $ref: '#/definitions/ProjectLayer' responses: 204: description: 'No Content' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete a project layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' responses: 204: description: 'No content, delete successful' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/layers/{layerID}/split: post: summary: 'Split the project layer according to the given parameters' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - name: SplitOptions in: body schema: $ref: '#/definitions/LayerSplitOptions' responses: 200: description: 'List of created layers' schema: type: array items: $ref: '#/definitions/ProjectLayer' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/layers/{layerID}/scenes: get: summary: 'Get a list of scenes for the given layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - $ref: '#/parameters/pageSize' - $ref: '#/parameters/page' - $ref: '#/parameters/ingested' - $ref: '#/parameters/ingestStatus' - $ref: '#/parameters/accepted' responses: 200: description: Paginated list of scenes associated with this layer schema: $ref: '#/definitions/SceneOrderedPaginated' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Add scenes to a project layer by their ID' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - name: scenes in: body required: true description: 'UUIDs of scenes to place in project' schema: type: array items: type: string format: uuid responses: 200: description: 'List of scenes added to project' schema: type: array items: $ref: '#/definitions/Scene' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete all scenes from a project layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - name: scenes in: body required: true description: 'UUIDs of scenes to delete in project' schema: type: array items: type: string format: uuid responses: 204: description: 'No content, delete successful' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/layers/{layerID}/datasources: x-resource: Projects get: summary: 'List datasources for scenes in this project' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - $ref: '#/parameters/analysisId' responses: 200: description: 'A list of datasources' schema: type: array items: $ref: '#/definitions/DatasourceThin' /projects/{projectID}/layers/{layerID}/mosaic: x-resource: Projects get: summary: "Get a list of a project layer's scene IDs and their color-correction parameters" tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' responses: 200: description: 'An ordered list of scene IDs and corresponding color correction parameters' schema: type: array items: $ref: '#/definitions/MosaicDefinition' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/layers/{layerID}/mosaic/{sceneID}: x-resource: Projects get: summary: "Get a scene's saved color-correction parameters in a project layer" tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - $ref: '#/parameters/sceneID' responses: 200: description: 'Color correction parameters' schema: $ref: '#/definitions/ColorCorrection' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Update color-correction parameters for a particular scene in a project layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - $ref: '#/parameters/sceneID' - name: updatedColorCorrection description: 'Updated color corrections' in: body schema: $ref: '#/definitions/ColorCorrection' responses: 204: description: 'Successfully updated color correction parameters' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/layers/{layerID}/mosaic/bulk-update-color-corrections/: x-resource: Projects post: summary: 'Set color-correction parameters for all scenes in a project layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - name: combinedSceneCorrectionParameters description: 'Combined color correction parameters' in: body schema: $ref: '#/definitions/CombinedSceneCorrectionParams' responses: 200: description: "Successfully updated all scenes' color correction parameters" 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/layers/{layerID}/order: x-resource: Projects put: summary: 'Set a z-index order for scenes within the specified project layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - name: sceneIDs in: body description: | The z order for scenes in this project, relative to each other. The first listed scene will be visualized on top of all the others, and the last listed scene will be visualized below all the others. schema: type: array items: type: string format: uuid responses: 204: description: 'Successfully updated order of scenes in the project layer' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/layers/{layerID}/labels: x-resource: Projects get: summary: 'Get a list of labels used on a project layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' responses: 200: description: 'A list of labels' schema: type: array items: type: string 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/layers/{layerID}/annotations/: x-resource: Projects get: summary: 'Get annotations belonging to a project layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - $ref: '#/parameters/AnnotationLabel' - $ref: '#/parameters/annotationQualityCheck' - $ref: '#/parameters/page' - $ref: '#/parameters/pageSize' responses: 200: description: 'GeoJSON feature collection containing paginated annotations of this project layer' schema: $ref: '#/definitions/AnnotationFeatureCollectionPaginated' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Create annotations for a project layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - name: annotations in: body required: true schema: $ref: '#/definitions/AnnotationFeatureCollectionCreate' responses: 201: description: 'GeoJSON annotations successfully created' schema: $ref: '#/definitions/AnnotationFeatureCollection' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete all annotations from a project layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' responses: 201: description: 'Annotations Deleted' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/layers/{layerID}/annotations/shapefile: x-resource: Projects get: summary: 'Get a url for project layer annotations exported to a shapefile' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - $ref: '#/parameters/exportAll' responses: 200: description: 'Annotations retrieved successfully' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Import annotations from a shapefile to project layer' tags: - Imagery consumes: - multipart/form-data parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - in: formData name: name type: file description: The shapefile to upload responses: 201: description: 'Annotations imported successfully' schema: type: array items: $ref: '#/definitions/AnnotationFeature' 400: description: 'Some records could not be parsed to annotations' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/layers/{layerID}/annotations/{annotationID}/: x-resouce: Projects get: summary: 'Get an annotation belonging to a project layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - $ref: '#/parameters/annotationID' responses: 200: description: 'GeoJSON feature containing one annotation from this project layer' schema: $ref: '#/definitions/AnnotationFeature' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Update an annotation of this project layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - $ref: '#/parameters/annotationID' - name: annotation in: body required: true schema: $ref: '#/definitions/AnnotationFeatureUpdate' responses: 204: description: 'No content, update successful' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete an annotation' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - $ref: '#/parameters/annotationID' responses: 204: description: 'Deletion successful.' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/layers/{layerID}/annotation-groups/: x-resource: Projects get: summary: 'Get annotation groups belonging to a project layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' responses: 200: description: 'Array containing annotation groups for this project layer' schema: type: array items: $ref: '#/definitions/AnnotationGroup' 404: description: 'Resource does not exist' schema: $ref: '#/definitions/Error' 403: description: 'Insufficient permissions for resource' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Create annotation group for this project layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - name: annotationGroup in: body required: true schema: $ref: '#/definitions/AnnotationGroupCreate' responses: 200: description: 'Created annotation group' schema: $ref: '#/definitions/AnnotationGroup' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/layers/{layerID}/annotation-groups/summary/: x-resource: Projects get: summary: 'Get a summary of the label groups on a project layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' responses: 200: description: 'Fetched label summaries' schema: type: array items: $ref: '#/definitions/LabelSummary' 404: description: 'Resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/layers/{layerID}/annotation-groups/{annotationGroupID}/: x-resource: Projects get: summary: 'Get annotation group for project layer' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - $ref: '#/parameters/annotationGroupID' responses: 200: description: 'fetched annotation group' schema: $ref: '#/definitions/AnnotationGroup' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Update annotation group' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - $ref: '#/parameters/annotationGroupID' - name: annotationGroup in: body required: true schema: $ref: '#/definitions/AnnotationGroup' responses: 200: description: 'Number of updated annotation groups from this request' schema: type: number format: integer 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete annotation group from project layer and all associated annotations' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/layerID' - $ref: '#/parameters/annotationGroupID' responses: 200: description: 'Number of deleted annotation groups from this request' schema: type: number format: integer 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /projects/{projectID}/analyses/: get: summary: 'List analyses referencing this project' tags: - Imagery parameters: - $ref: '#/parameters/projectID' - $ref: '#/parameters/pageSize' - $ref: '#/parameters/page' responses: 200: description: 'Paginated list of analyses referencing this project' schema: $ref: '#/definitions/ToolRunWithRelatedPaginated' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /areas-of-interest/: get: summary: 'Get a list of areas of interest' tags: - Imagery parameters: - $ref: '#/parameters/pageSize' - $ref: '#/parameters/page' - $ref: '#/parameters/organization' - $ref: '#/parameters/owner' responses: 200: description: 'A paginated list of all AOIs the user is authorized to view.' schema: $ref: '#/definitions/AoiPaginated' /areas-of-interest/{aoiID}/: get: summary: 'Get a specific area of interest' parameters: - $ref: '#/parameters/aoiID' responses: 200: description: "JSON summary of the given AOI's filters and Polygons." schema: $ref: '#/definitions/AOI' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Update an area of interest' tags: - Imagery parameters: - $ref: '#/parameters/aoiID' - name: aoi in: body required: true schema: $ref: '#/definitions/AOI' responses: 204: description: 'Update successful.' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete a project' tags: - Imagery parameters: - $ref: '#/parameters/aoiID' responses: 204: description: 'Deletion successful.' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /map-tokens/: x-resource: Tokens get: summary: 'Get a list of map tokens' description: | Map tokens are filtered by user tags: - Imagery parameters: - $ref: '#/parameters/projectId' - $ref: '#/parameters/organization' - $ref: '#/parameters/createdBy' - $ref: '#/parameters/page' - $ref: '#/parameters/project' responses: 200: description: 'Paginated list of map tokens' schema: $ref: '#/definitions/MapTokenPaginated' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Create a map token' tags: - Imagery parameters: - name: MapToken in: body schema: $ref: '#/definitions/MapToken' responses: 201: description: 'Map token created' schema: $ref: '#/definitions/MapToken' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /map-tokens/{mapTokenID}/: x-resource: Tokens get: summary: 'Get map token details' tags: - Imagery parameters: - $ref: '#/parameters/mapTokenID' responses: 200: description: 'Info about map token' schema: $ref: '#/definitions/MapToken' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Update a map token' tags: - Imagery parameters: - name: mapToken in: body required: true schema: $ref: '#/definitions/MapToken' - $ref: '#/parameters/mapTokenID' responses: 204: description: 'Update successful (no further processing needed)' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete a map token' tags: - Imagery parameters: - $ref: '#/parameters/mapTokenID' responses: 204: description: 'Deletion successful (no content)' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /tokens/: x-resource: Tokens get: summary: | Get a list of refresh token summaries description: | Note: Only names and identifiers are revealed. Refresh tokens themselves are only revealed once (when they are created) for security purposes. tags: - Authentication responses: 200: description: 'List of refresh token identifiers' schema: type: array items: $ref: '#/definitions/RefreshToken' 404: description: 'No refresh tokens found for user' schema: $ref: '#/definitions/Error' post: summary: | Request a new JSON Web Token to use when authenticating with other endpoints parameters: - name: authBody in: body required: true description: 'Refresh token object to use when requesting a new JWT' schema: type: object properties: refresh_token: type: string description: 'Refresh token used to generate new JWT' tags: - Authentication responses: 200: description: 'Retrieved a new auth token' schema: $ref: '#/definitions/AuthToken' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /tokens/{refreshTokenID}/: x-resource: Tokens delete: parameters: - $ref: '#/parameters/refreshTokenID' summary: 'Delete a refresh token and revoke its access' tags: - Authentication responses: 204: description: 'Revocation successful, No Content' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /tools/: x-resource: Tools get: summary: 'Get a list of tools' tags: - Lab parameters: - $ref: '#/parameters/orderingBase' - $ref: '#/parameters/pageSize' - $ref: '#/parameters/owner' - $ref: '#/parameters/page' - $ref: '#/parameters/search' - $ref: '#/parameters/ownershipType' - $ref: '#/parameters/groupType' - $ref: '#/parameters/groupId' - $ref: '#/parameters/singleSource' - $ref: '#/parameters/organization' responses: 200: description: 'Returns a paginated list of tools' schema: $ref: '#/definitions/ToolPaginated' default: description: 'Unexpected Error' schema: $ref: '#/definitions/Error' post: summary: 'Create a tool' parameters: - name: tool in: body required: true description: 'Tool to create' schema: $ref: '#/definitions/Tool' tags: - Lab responses: 201: description: 'Create a new geoprocessing tool' schema: $ref: '#/definitions/Tool' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /tools/{toolID}/: x-resource: Tools get: summary: 'Get details for a particular tool' tags: - Lab parameters: - $ref: '#/parameters/toolID' responses: 200: description: 'Geoprocessing tool record' schema: $ref: '#/definitions/Tool' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete a tool' tags: - Lab parameters: - $ref: '#/parameters/toolID' responses: 204: description: 'Delete successful' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Update a tool' tags: - Lab parameters: - $ref: '#/parameters/toolID' - name: tool in: body required: true description: 'Tool to create' schema: $ref: '#/definitions/Tool' responses: 204: description: 'Update an existing geoprocessing tool' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /tools/{toolID}/sources: x-resource: Tools get: summary: 'Returns the leaf nodes for an AST' tags: - Lab parameters: - $ref: '#/parameters/toolID' responses: 200: description: 'Geoprocessing tool record' schema: $ref: '#/definitions/Tool' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /tools/{toolID}/permissions/: x-resource: Tools get: summary: 'List access control rules for this tool' parameters: - $ref: '#/parameters/toolID' tags: - Permissions responses: 200: description: 'All access control rules for this tool' schema: type: array items: $ref: '#/definitions/AccessControlRule' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Replace permissions defined on this tool' tags: - Permissions parameters: - $ref: '#/parameters/toolID' - name: accessControlRules in: body required: true schema: type: array items: $ref: '#/definitions/AccessControlRuleCreate' responses: 200: description: 'Access control rules replaced with response successfully' schema: type: array items: $ref: '#/definitions/AccessControlRule' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Add a new access control rule to this tool' tags: - Permissions parameters: - $ref: '#/parameters/toolID' - name: accessControlRule in: body required: true schema: $ref: '#/definitions/AccessControlRuleCreate' responses: 200: description: 'Access control rule appended successfully' schema: type: array items: $ref: '#/definitions/AccessControlRule' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /tools/{toolID}/actions: x-resource: Tools get: summary: 'List actions a user is allowed to perform on this scene' tags: - Permissions parameters: - $ref: '#/parameters/toolID' responses: 200: description: | 'List of actions a user is allowed to perform on this tool. A * in the response indicates the user has full permissions for this tool.' schema: type: array items: type: string enum: - 'VIEW' - 'EDIT' - 'DELETE' - '*' /tool-runs/: x-resource: Tools get: summary: 'Get a list of tool runs' description: | A tool run is a specific implementation of a tool. Tool runs can specify inputs and parameters neccessary to execute a tool. tags: - Lab parameters: - $ref: '#/parameters/pageSize' - $ref: '#/parameters/modifiedBy' - $ref: '#/parameters/minCreateDatetime' - $ref: '#/parameters/maxCreateDatetime' - $ref: '#/parameters/minModifiedDatetime' - $ref: '#/parameters/maxModifiedDatetime' - $ref: '#/parameters/page' - $ref: '#/parameters/projectId' - $ref: '#/parameters/owner' - $ref: '#/parameters/createdBy' - $ref: '#/parameters/ownershipType' - $ref: '#/parameters/groupType' - $ref: '#/parameters/groupId' - $ref: '#/parameters/projectLayer' - $ref: '#/parameters/templateId' - $ref: '#/parameters/search' - $ref: '#/parameters/queryMapToken' responses: 200: description: 'Paginated list of tool runs' schema: $ref: '#/definitions/ToolRunPaginated' default: description: 'Unexpected Error' schema: $ref: '#/definitions/Error' post: summary: 'Create a tool run' tags: - Lab responses: 201: description: 'Successfully created tool run' schema: $ref: '#/definitions/ToolRun' 400: description: 'Invalid object structure for tool run' schema: $ref: '#/definitions/Error' default: description: 'Unexpected Error' schema: $ref: '#/definitions/Error' /tool-runs/{toolRunID}/: x-resource: Tools get: summary: 'Get details about a tool-run' tags: - Lab parameters: - $ref: '#/parameters/toolRunID' responses: 200: description: 'Successful tool-run request' schema: $ref: '#/definitions/ToolRun' 403: description: 'Insufficient permissions for resource or tool run not found' schema: $ref: '#/definitions/Error' default: description: 'Unexpected Error' schema: $ref: '#/definitions/Error' put: summary: 'Update a tool run' tags: - Lab parameters: - $ref: '#/parameters/toolRunID' responses: 204: description: 'Successfully updated tool run' 400: description: 'Invalid object structure for tool run' schema: $ref: '#/definitions/Error' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected Error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete a tool run' tags: - Lab parameters: - $ref: '#/parameters/toolRunID' responses: 204: description: 'Successfully deleted a tool run' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected Error' schema: $ref: '#/definitions/Error' /tool-runs/{toolRunID}/permissions/: x-resource: Tools get: summary: 'List access control rules for this tool run' parameters: - $ref: '#/parameters/toolRunID' tags: - Permissions responses: 200: description: 'All access control rules for this tool run' schema: type: array items: $ref: '#/definitions/AccessControlRule' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected Error' schema: $ref: '#/definitions/Error' put: summary: 'Replace permissions defined on this tool run' tags: - Permissions parameters: - $ref: '#/parameters/toolRunID' - name: accessControlRules in: body required: true schema: type: array items: $ref: '#/definitions/AccessControlRuleCreate' responses: 200: description: 'Access control rules replaced with response successfully' schema: type: array items: $ref: '#/definitions/AccessControlRule' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected Error' schema: $ref: '#/definitions/Error' post: summary: 'Add a new access control rule to this tool run' tags: - Permissions parameters: - $ref: '#/parameters/toolRunID' - name: accessControlRule in: body required: true schema: $ref: '#/definitions/AccessControlRuleCreate' responses: 200: description: 'Access control rule appended successfully' schema: type: array items: $ref: '#/definitions/AccessControlRule' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected Error' schema: $ref: '#/definitions/Error' /tool-runs/{toolRunID}/actions: get: summary: 'List actions a user is allowed to perform on this tool run' tags: - Permissions parameters: - $ref: '#/parameters/toolRunID' responses: 200: description: | 'List of actions a user is allowed to perform on this tool run. A * in the response indicates the user has full permissions for this tool.' schema: type: array items: type: string enum: - 'VIEW' - 'EDIT' - 'DELETE' - '*' /feed/: get: summary: 'Get the cached RSS feed' parameters: - $ref: '#/parameters/source' tags: - Users responses: 200: description: 'RSS feed json as a string' default: description: 'Unexpected Error' schema: $ref: '#/definitions/Error' /exports/: x-resource: Exports get: summary: 'Get a list of exports' tags: - Imagery parameters: - $ref: '#/parameters/orderingBase' - $ref: '#/parameters/pageSize' - $ref: '#/parameters/page' - $ref: '#/parameters/organization' - $ref: '#/parameters/project' - $ref: '#/parameters/owner' - $ref: '#/parameters/exportStatus' - $ref: '#/parameters/layer' responses: 200: description: 'Paginated list of exports' schema: $ref: '#/definitions/ExportPaginated' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Create an export' description: | Create a new export. tags: - Imagery parameters: - name: Export in: body schema: $ref: '#/definitions/ExportCreate' responses: 201: description: 'Export created' schema: $ref: '#/definitions/Export' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /exports/{exportID}/: x-resource: Exports get: summary: 'Get export details' tags: - Imagery parameters: - $ref: '#/parameters/exportID' responses: 200: description: 'Info about export' schema: $ref: '#/definitions/Export' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Update an export' tags: - Imagery parameters: - name: upload in: body required: true schema: $ref: '#/definitions/Export' - $ref: '#/parameters/exportID' responses: 204: description: 'Update successful (no further processing needed)' 404: description: | The UUID parameter does not refer to a upload or the user does not have access to the upload it refers to schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete an export' tags: - Imagery parameters: - $ref: '#/parameters/exportID' responses: 204: description: 'Deletion successful (no content)' 404: description: | The UUID parameter does not refer to an export or the user does not have access to the export it refers to schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /exports/{exportID}/definition: x-resource: Exports get: summary: 'Get export details' tags: - Imagery parameters: - $ref: '#/parameters/exportID' responses: 200: description: 'Info about export, in export job format' schema: $ref: '#/definitions/ExportDefinition' 404: description: | UUID parameter does not refer to an export or the user is not able to view the export it refers to schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /exports/{exportID}/files: x-resource: Exports get: summary: 'Get available files for the export' tags: - Imagery parameters: - $ref: '#/parameters/exportID' responses: 200: description: 'List of files within an export' schema: type: array items: type: string 403: description: 'Insufficient permissions for resource, resource does not exist, or export is not finished yet' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /exports/{exportID}/files/{filename}: x-resource: Exports get: summary: 'Download a file from an export' tags: - Imagery parameters: - $ref: '#/parameters/exportID' - name: filename required: true in: path type: string description: | The filename of the file the user wishes to download. Filenames of an export need to first be fetched. responses: 200: description: 'The content of the reqested file' schema: type: file 403: description: | Export has not finished, file does not exist, or user has insufficient permissions to view. schema: $ref: '#/definitions/Error' 503: description: 'The request rate has been exceeded.' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /shapes/: x-resource: Projects get: summary: 'Get shapes belonging to the current user' tags: - Imagery parameters: - $ref: '#/parameters/page' - $ref: '#/parameters/pageSize' - $ref: '#/parameters/ownershipType' - $ref: '#/parameters/groupType' - $ref: '#/parameters/groupId' responses: 200: description: 'GeoJSON feature collection containing paginated shapes' schema: $ref: '#/definitions/ShapeFeatureCollectionPaginated' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Create shapes belonging to the current user' tags: - Imagery parameters: - name: shapes in: body required: true schema: $ref: '#/definitions/ShapeFeatureCollectionCreate' responses: 200: description: GeoJSON shapes successfully created schema: type: array items: $ref: '#/definitions/ShapeFeatureCollection' 400: description: 'Invalid object' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /shapes/upload: x-resource: Projects post: summary: 'Create shapes belonging to the current user using POSTed data' tags: - Imagery consumes: - multipart/form-data parameters: - name: name in: formData type: file required: true responses: 201: description: 'GeoJSON shapes successfully created' schema: type: array items: $ref: '#/definitions/ShapeFeatureCollection' 400: description: 'Invalid shape structure' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /shapes/{shapeID}: x-resouce: Projects get: summary: Get a specific shape tags: - Imagery parameters: - $ref: '#/parameters/shapeID' responses: 200: description: 'GeoJSON feature containing one shape' schema: $ref: '#/definitions/ShapeFeature' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Update a specific shape' tags: - Imagery parameters: - $ref: '#/parameters/shapeID' - name: shape in: body required: true schema: $ref: '#/definitions/ShapeFeatureUpdate' responses: 204: description: 'Update successful (No Content)' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete a shape' tags: - Imagery parameters: - $ref: '#/parameters/shapeID' responses: 204: description: 'Deletion successful' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /shapes/{shapeID}/permissions/: x-resource: Shapes get: summary: 'List access control rules for this shape' parameters: - $ref: '#/parameters/shapeID' tags: - Permissions responses: 200: description: 'All access control rules for this shape' schema: type: array items: $ref: '#/definitions/AccessControlRule' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Replace permissions defined on this shape' tags: - Permissions parameters: - $ref: '#/parameters/shapeID' - name: accessControlRules in: body required: true schema: type: array items: $ref: '#/definitions/AccessControlRuleCreate' responses: 200: description: 'Access control rules replaced with response successfully' schema: type: array items: $ref: '#/definitions/AccessControlRule' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: 'Add a new access control rule to this shape' tags: - Permissions parameters: - $ref: '#/parameters/shapeID' - name: accessControlRule in: body required: true schema: $ref: '#/definitions/AccessControlRuleCreate' responses: 200: description: 'Access control rule appended successfully' schema: type: array items: $ref: '#/definitions/AccessControlRule' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /licenses/: x-resource: Licenses get: summary: 'Get a list of licenses' tags: - Imagery - Lab parameters: - $ref: '#/parameters/pageSize' - $ref: '#/parameters/page' responses: 200: description: 'Paginated licenses' schema: $ref: '#/definitions/LicensesPaginated' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /licenses/{licenseID}: x-resource: Licenses get: summary: 'Get a license based on its id' tags: - Imagery - Lab parameters: - $ref: '#/parameters/licenseID' responses: 200: description: 'License object' schema: $ref: '#/definitions/License' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /teams/: x-resource: Teams get: summary: 'List teams the user has permission to view' tags: - Users parameters: - $ref: '#/parameters/pageSize' - $ref: '#/parameters/page' responses: 200: description: 'Paginated teams' schema: $ref: '#/definitions/TeamsPaginated' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' post: summary: Create a team tags: - Users parameters: - name: team in: body required: true schema: $ref: '#/definitions/TeamCreate' responses: 201: description: 'Team created' schema: $ref: '#/definitions/Team' 403: description: 'Insufficient permissions for resource' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' /teams/{teamID}: x-resource: Teams get: summary: 'Get team details' tags: - Users parameters: - $ref: '#/parameters/teamID' responses: 200: description: 'Detail about a team' schema: $ref: '#/definitions/Team' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' put: summary: 'Update a team' tags: - Users parameters: - name: team in: body required: true schema: $ref: '#/definitions/TeamCreate' - $ref: '#/parameters/teamID' responses: 204: description: 'Update successful (No content)' schema: $ref: '#/definitions/Team' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' delete: summary: 'Delete a team' description: 'Delete a team by id' tags: - Users parameters: - $ref: '#/parameters/teamID' responses: 204: description: 'Deletion successful (no content)' 403: description: 'Insufficient permissions for resource or resource does not exist' schema: $ref: '#/definitions/Error' default: description: 'Unexpected error' schema: $ref: '#/definitions/Error' parameters: projectLayer: name: projectLayerId description: "Filter by project layer this analysis was created with" in: query type: string format: uuid required: false templateId: name: templateId description: "Filter by template this analysis was created with" in: query type: string format: uuid required: false colorGroupHex: name: colorGroupHex in: query description: 'Filter by color group hex' type: string singleSource: name: singleSource in: query description: | Whether a template can be sensibly filled in using a single project layer type: boolean required: false analysisId: name: analysisId in: query description: | UUID for analysis to use as a request\'s authorization context type: string format: uuid required: false groupType: name: groupType in: query description: 'Filter by group type. Requires a group id' type: string required: false enum: - PLATFORM - ORGANIZATION - TEAM groupId: name: groupId in: query description: 'Filter by group id. Requires a group type' type: string format: uuid required: false ownershipType: name: ownershipType in: query description: | Filter by owned, shared, or inherited. Inherited objects are those which you have been granted permissions for through group membership. type: string required: false enum: - 'owned' - 'shared' - 'inherited' orderingBase: name: ordering in: query description: 'Field to order results; meaning of label varies based on endpoint' type: array collectionFormat: pipes items: type: string enum: - 'createdAt,desc' - 'createdAt,asc' - 'modifiedAt,desc' - 'modifiedAt,asc' annotationQualityCheck: name: annotationQualityCheck description: 'Quality check on annotations' in: query type: string enum: - 'PASS' - 'FAIL' - 'NEUTRAL' AnnotationLabel: name: AnnotationLabel in: query description: 'name of a label' type: string name: name: name in: query description: 'name of a datasource to filter to' type: string organization: name: organization in: query description: 'UUID for organization to filter by' type: string format: uuid projectId: name: projectId in: query description: 'UUID for project' type: string format: uuid layerId: name: layerId in: query description: 'UUID for a project layer' type: string format: uuid queryAuthToken: name: token in: query description: 'JWT in query parameter' type: string queryMapToken: name: mapToken in: query description: 'Map token ID in query parameter' type: string format: uuid width: name: width in: query description: 'Approximate thumbnail rendering width' type: number format: integer height: name: height in: query description: 'Approximate thumbnail rendering height' type: number format: integer redBand: name: red in: query description: 'Index to use for a red band' type: number format: integer greenBand: name: green in: query description: 'Index to use for a green band' type: number format: integer blueBand: name: blue in: query description: 'Index to user for a blue band' type: number format: integer brightnessFloor: name: floor in: query description: 'False minimum brightness for rendering thumbnails' type: number format: integer page: name: page in: query description: 'Paginated results page number' type: number format: int32 pageSize: name: pageSize in: query description: 'Number of results to fetch per response page' type: number format: int32 refreshTokenID: name: refreshTokenID in: path required: true type: string datasourceID: name: datasourceID in: path required: true type: string format: uuid uploadID: name: uploadID in: path required: true type: string format: uuid sceneID: name: sceneID in: path required: true type: string format: uuid projectID: name: projectID in: path required: true type: string format: uuid layerID: name: layerID in: path required: true type: string format: uuid annotationID: name: annotationID in: path required: true type: string format: uuid annotationGroupID: name: annotationGroupID in: path required: true type: string format: uuid aoiID: name: aoiID in: path required: true type: string format: uuid mapTokenID: name: mapTokenID in: path required: true type: string format: uuid toolID: name: toolID in: path required: true type: string format: uuid toolTagID: name: toolTagID in: path required: true type: string format: uuid toolRunID: name: toolRunID in: path required: true type: string format: uuid exportID: name: exportID in: path required: true type: string format: uuid shapeID: name: shapeID in: path required: true type: string format: uuid platformID: name: platformID in: path required: true type: string format: uuid organizationID: name: organizationID in: path required: true type: string format: uuid teamID: name: teamID in: path required: true type: string format: uuid userID: name: userID in: path required: true type: string slugLabel: name: slugLabel description: 'A url-safe slug label' in: path required: true type: string forProjectId: name: forProjectId description: 'UUID of the project to search for scenes to add' in: query type: string format: uuid required: false minCloudCover: name: minCloudCover description: 'Only return results with cloud cover greater than this number' in: query type: number minimum: 0 maximum: 1.0 required: false maxCloudCover: name: maxCloudCover description: 'Only return results with cloud cover less than this number' in: query type: number required: false minAcquisitionDatetime: name: minAcquisitionDatetime description: 'Only return results acquired after this datetime' in: query type: string required: false format: datetime maxAcquisitionDatetime: name: maxAcquisitionDatetime description: 'Only return results acquired before this datetime' in: query type: string required: false format: datetime minCreateDatetime: name: minCreateDatetime description: 'Only return results created after this datetime' in: query type: string required: false format: datetime minModifiedDatetime: name: minModifiedDatetime description: 'Only return results modified after this datetime' in: query type: string required: false format: datetime minSunElevation: name: minSunElevation description: 'Only return results with sun elevation greater than this value' in: query type: number required: false maxSunElevation: name: maxSunElevation description: 'Only return results with sun elevation less than this value' in: query type: number required: false minSunAzimuth: name: minSunAzimuth description: 'Only return results with sun elevation greater than this value' in: query type: number required: false maxSunAzimuth: name: maxSunAzimuth description: 'Only return results with sun azium greater than this value' in: query type: number required: false maxCreateDatetime: name: maxCreateDatetime description: 'Only return results created before this datetime' in: query type: string required: false format: datetime maxModifiedDatetime: name: maxModifiedDatetime description: 'Only return results modified before this datetime' in: query type: string required: false format: datetime tagsInclude: name: tagsInclude description: 'Only return results that contain these tags' in: query type: array required: false items: type: string tagsExclude: name: tagsExclude description: 'Only return results that omit these tags' in: query type: array required: false items: type: string tags: name: tags description: 'Only return results that contain these tags' in: query type: array required: false items: type: string datasource: name: datasource description: 'Only return results belonging to this datasource' in: query type: array required: false items: type: string format: uuid uploadStatus: name: uploadStatus description: 'Status of upload' in: query type: string required: false enum: - 'CREATED' - 'UPLOADING' - 'UPLOADED' - 'QUEUED' - 'PROCESSING' - 'COMPLETE' - 'FAILED' - 'ABORTED' month: name: month description: 'Only return results from this month' required: false in: query type: array items: type: number format: int maximum: 12 minimum: 1 minDayOfMonth: name: minDayOfMonth description: 'Only return results with acquisition day-of-month greater-than or equal-to this day' in: query type: number maxDayOfMonth: name: maxDayOfMonth description: 'Only return results with acquisition day-of-month less-than or equal-to this day' in: query type: number orderingScene: name: ordering in: query description: 'Fields to sort scenes by' type: array collectionFormat: pipes items: type: string enum: - 'createdAt,desc' - 'createdAt,asc' - 'modifiedAt,desc' - 'modifiedAt,asc' - 'organization,asc' - 'organization,desc' - 'datasource,asc' - 'datasource,desc' - 'month,asc' - 'month,desc' - 'createDatetime,asc' - 'createDatetime,desc' - 'acquisitionDatetime,asc' - 'acquisitionDatetime,desc' - 'sunAzimuth,asc' - 'sunAzimuth,desc' - 'cloudCover,asc' - 'cloudCover,desc' toolTag: name: toolTag description: 'Only return results that contain these tool tags' in: query type: array required: false items: type: string format: uuid toolCategory: name: toolCategory description: 'Only return results that satisfy this category' in: query type: array required: false items: type: string minRating: name: minRating description: 'Only return results greater than this rating' in: query type: number required: false maxRating: name: maxRating description: 'Only return results less than this rating' in: query type: number required: false search: name: search description: 'Full text search string' in: query type: string required: false exportAll: name: exportAll description: 'Export all annotations from a project' in: query type: boolean required: false minRawDataBytes: name: minRawDataBytes description: 'Only return images larger than this amount of bytes' in: query type: integer required: false maxRawDataBytes: name: maxRawDataBytes description: 'Only return images less than this amount of bytes' in: query type: integer required: false minResolution: name: minResolution description: 'Only return resources that have elements greater than this resolution' in: query type: number required: false maxResolution: name: maxResolution description: 'Only return resources that have elements with a resolution less than this amount' in: query type: number required: false zoom: name: zoom description: 'The zoom level used to split the bbox into a grid' in: path type: number required: true column: name: column description: 'column of tile requested' in: path type: number required: true row: name: row description: 'row of tile requested' in: path type: number required: true bbox: name: bbox description: 'Bounding box of the form "bbox=southwest_lng,southwest_lat,northeast_lng,northeast_lat". Delimit multiple with semicolons.' in: query type: string required: false project: name: project description: 'Project uuid to filter only' in: query type: string format: uuid required: false layer: name: layer description: 'Project layer uuid to filter only' in: query type: string format: uuid required: false inProject: name: project description: 'Project uuid to populate inProject scene property' in: query type: string format: uuid required: false inLayer: name: layer description: 'Layer uuid to populate inLayer scene property' in: query type: string format: uuid required: false ingested: name: ingested description: 'Filter by ingest status' in: query type: boolean required: false ingestStatus: name: ingestStatus description: 'Filter by specific ingest status' in: query type: string required: false pending: name: pending description: "Filter by scene's acceptance for an AOI project" in: query type: boolean required: false template: name: templateId description: "Filter by template this analysis was created from" in: query type: string format: uuid required: false createdBy: name: createdBy description: 'Filter by creator' in: query type: string required: false modifiedBy: name: modifiedBy description: 'Filter by user last modified by' in: query type: string required: false owner: name: owner description: 'Filter by resource owner ID' in: query required: false type: array items: type: string exportStatus: name: exportStatus description: 'Status of export' in: query type: string required: false enum: - 'CREATED' - 'EXPORTING' - 'EXPORTED' - 'QUEUED' - 'PROCESSING' - 'COMPLETE' - 'FAILED' - 'ABORTED' source: name: source description: 'Feed source URI' in: query type: string required: false licenseID: name: licenseID description: 'id/shortName of a license' in: path type: string required: true isActive: name: isActive description: 'Filter to active resources' in: query type: boolean required: false accepted: name: accepted description: 'Filter to resources that have been approved by the user' in: query type: boolean required: false definitions: LayerSplitOptions: type: object properties: name: type: string description: 'Name for each of the split layers' colorGroupHex: type: string description: 'Color hex code for the new layers. Defaults to the source layer hex code' rangeStart: type: string format: date-time description: 'Start date for the split layers.' rangeEnd: type: string format: date-time description: 'End date for the split layers.' period: type: string description: 'Split the layers by day or by week' enum: - DAY - WEEK splitOnDatasource: type: boolean description: 'Split layers by datasource. Defaults to true.' removeFromLayer: type: boolean description: 'Remove scenes from the source layer once they are added to the split layers' ProjectLayer: allOf: - $ref: '#/definitions/BaseModel' - $ref: '#/definitions/TimeModelMixin' - type: object properties: type: type: string geometry: $ref: '#/definitions/Geometry' name: type: string description: Display name for a layer projectId: type: string format: uuid colorGroupHex: type: string description: Color hex code for visually identifying layers are related and filtering smartLayerId: type: string format: uuid rangeStart: type: string format: datetime description: Start date for scene matching when associated with a smart layer rangeEnd: type: string format: datetime description: End date for scene matching when associated with a smart layer isSingleBand: type: boolean description: 'Use single band options to render instead of bands' singleBandOptions: $ref: '#/definitions/SingleBandOptions' ProjectLayerPaginated: type: object allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: type: type: string features: type: array items: type: object $ref: '#/definitions/ProjectLayer' Geometry: type: object description: GeoJSon geometry discriminator: type required: - type externalDocs: url: https://tools.ietf.org/html/rfc7946#section-3.1 properties: type: type: string enum: - Point - LineString - Polygon - MultiPoint - MultiLineString - MultiPolygon description: the geometry type Point2D: type: array maxItems: 2 minItems: 2 items: type: number Polygon: type: object description: GeoJSon geometry externalDocs: url: https://tools.ietf.org/html/rfc7946#section-3.1.6 allOf: - $ref: "#/definitions/Geometry" - properties: coordinates: type: array items: type: array items: $ref: '#/definitions/Point2D' MultiPolygon: type: object description: GeoJSon geometry externalDocs: url: https://tools.ietf.org/html/rfc7946#section-3.1.7 allOf: - $ref: "#/definitions/Geometry" - properties: coordinates: type: array items: type: array items: type: array items: $ref: '#/definitions/Point2D' Visibility: type: string enum: &VISIBILITY - 'PUBLIC' - 'ORGANIZATION' - 'PRIVATE' BaseModel: type: object readOnly: true properties: id: type: string description: 'unique identifier for object' format: uuid BaseCreate: type: object properties: owner: type: string description: 'Optional during object creation, owner of an object' AccessControlRuleBase: type: object properties: subjectType: type: string description: 'The target this access control rule applies to' enum: - 'ALL' - 'PLATFORM' - 'ORGANIZATION' - 'TEAM' - 'USER' subjectId: type: string description: 'The id of the subject this access control rule applies to' actionType: type: string description: 'What this access control rule authorizes subjects to do' enum: - 'VIEW' - 'EDIT' - 'DEACTIVATE' - 'DELETE' - 'ANNOTATE' ObjectAccessControlRule: $ref: '#/definitions/AccessControlRule' AccessControlRuleCreate: allOf: - $ref: '#/definitions/AccessControlRuleBase' - type: object properties: isActive: type: boolean description: 'Whether this access control rule is active' AccessControlRule: allOf: - $ref: '#/definitions/AccessControlRuleCreate' - type: object properties: id: type: string format: uuid createdAt: type: string description: 'timestamp of object creation' format: date-time createdBy: type: string description: 'user who created this object' objectType: type: string description: 'type of object this access control rule applies to' enum: - 'PROJECT' - 'SCENE' - 'DATASOURCE' - 'SHAPE' - 'WORKSPACE' - 'TEMPLATE' - 'ANALYSIS' objectId: type: string description: 'Id of the object this access control rule applies to' format: uuid MapToken: allOf: - $ref: '#/definitions/BaseModel' - $ref: '#/definitions/TimeModelMixin' - $ref: '#/definitions/UserTrackingMixin' - type: object properties: name: type: string description: 'Human friendly label for map token' project: type: string format: UUID toolRun: type: string format: UUID MapTokenPaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/MapToken' MosaicDefinition: type: object properties: sceneId: type: string format: uuid colorCorrections: $ref: '#/definitions/ColorCorrection' DropboxAuthRequest: type: object properties: authorizationCode: type: string redirectURI: type: string AOI: type: object properties: shape: type: string format: uuid filters: $ref: '#/definitions/CombinedSceneQueryParams' isActive: type: boolean approvalRequired: type: boolean startTime: type: string format: date-time ColorCorrection: type: object properties: redBand: type: number format: integer greenBand: type: number format: integer blueBand: type: number format: integer sigmoidalContrast: type: object properties: enabled: type: boolean alpha: type: number format: float beta: type: number format: float gamma: type: object properties: enabled: type: boolean redGamma: type: number format: float greenGamma: type: number format: float blueGamma: type: number format: float bandClipping: type: object properties: enabled: type: boolean redMax: type: number format: int redMin: type: number format: int greenMax: type: number format: int greenMin: type: number format: int blueMax: type: number format: int blueMin: type: number format: int tileClipping: type: object properties: enabled: type: boolean min: type: number format: int max: type: number format: int saturation: type: object properties: enabled: type: boolean saturation: type: number format: float equalize: type: object properties: enabled: type: boolean autoBalance: type: object properties: enabled: type: boolean TimeModelMixin: type: object readOnly: true properties: createdAt: type: string description: 'timestamp of object creation' format: date-time modifiedAt: type: string description: 'timestamp of object modificiation' format: date-time UserTrackingMixin: type: object properties: createdBy: type: string description: 'User who created the object' readOnly: true modifiedBy: type: string description: 'User who most recently modified the object' readOnly: true owner: type: string description: 'User who owns the object' User: allOf: - $ref: '#/definitions/TimeModelMixin' - type: object required: - id - role properties: id: type: string description: 'User ID for Raster Foundry' role: type: string description: 'User role in organization' enum: - 'USER' - 'VIEWER' - 'OWNER' dropboxCredential: type: string description: "Contains the user's dropbox credential if a connection has been configured" planetCredential: type: string description: "Contains the user's planet credential if a connection has been configured" emailNotifications: type: boolean description: 'An opt-in (defaults to false) setting to receive email notifications' UserSelf: allOf: - $ref: '#/definitions/TimeModelMixin' - type: object required: - id - role properties: id: type: string description: 'User ID for Raster Foundry' role: type: string description: 'User role in organization' enum: - 'USER' - 'VIEWER' - 'OWNER' dropboxCredential: type: string description: "Contains the user's dropbox credential if a connection has been configured" planetCredential: type: string description: "Contains the user's planet credential if a connection has been configured" emailNotifications: type: boolean description: 'An opt-in (defaults to false) setting to receive email notifications to login email address' email: type: string description: "Login email" name: type: string description: "User's name" profileImageUri: type: string description: "Link to user's avatar image" isSuperuser: type: boolean description: "User is a superuser or not. Default to false." isActive: type: boolean description: "User is an active user or not. Default to true." visibility: type: string description: "User's visibility. Default to 'PRIVATE'" enum: - 'PUBLIC' - 'PRIVATE' personalInfo: type: object $ref: '#/definitions/UserPersonalInfo' UserPersonalInfo: type: object properties: firstName: type: string description: "User's first name. Default to an empty string" lastName: type: string description: "User's laste name. Default to an empty string" email: type: string description: "User's contact email. Default to an empty string" emailNotifications: type: boolean description: 'An opt-in (defaults to false) setting to receive email notifications to contact email address' phoneNumber: type: string description: "User's phone number. Default to an empty string" organizationName: type: string description: "User's organization name. Default to an empty string" organizationType: type: string description: "User's organization type. Default to 'OTHER'" enum: - 'COMMERCIAL' - 'GOVERNMENT' - 'NON-PROFIT' - 'ACADEMIC' - 'MILITARY' - 'OTHER' organizationWebsite: type: string description: "User's organization website. Default to an empty string" profileWebsite: type: string description: "User's profile website. Default to an empty string" profileBio: type: string description: "User's profile bio. Default to an empty string" profileUrl: type: string description: "User's profile url. Default to an empty string" UserThin: type: object properties: id: type: string name: type: string profileImageUri: type: string UserSearched: allOf: - $ref: '#/definitions/UserThin' - type: object properties: email: type: string UserWithRole: allOf: - $ref: '#/definitions/UserSearched' - type: object properties: groupRole: type: string Auth0User: type: object properties: email: type: string email_verified: type: boolean username: type: string phone_number: type: string phone_verified: type: boolean user_id: type: string created_at: type: string updated_at: type: string identities: type: array items: type: string user_metadata: type: object picture: type: string name: type: string nickname: type: string given_name: type: string family_name: type: string Auth0UserProfile: type: object properties: email: type: string phone_number: type: string user_metadata: type: object username: type: string RefreshToken: type: object properties: device_name: type: string description: 'User created identifier to track refresh tokens' id: type: string description: 'Auth0 provided identifier used to delete refresh tokens' AuthToken: type: object properties: id_token: type: string description: 'Token that can be used for authenticating API requests' access_token: type: string description: 'Token that can be used for authenticating API requests' token_type: type: string description: 'Type of token returned by using the refresh token' UserRole: type: object properties: userId: type: string groupRole: type: string enum: - 'ADMIN' - 'MEMBER' UserGroupRole: type: object allOf: - $ref: '#/definitions/TimeModelMixin' - type: object properties: id: type: string format: uuid isActive: type: boolean groupType: type: string enum: - 'PLATFORM' - 'ORGANIZATION' - 'TEAM' groupId: type: string format: uuid membershipStatus: type: string enum: - 'REQUESTED' - 'INVITED' - 'APPROVED' - $ref: '#/definitions/UserRole' UserGroupRoleWithRelated: type: object allOf: - $ref: '#/definitions/UserGroupRole' - type: object properties: groupName: type: string PaginatedResponse: type: object required: - count - hasNext - hasPrevious - page - pageSize properties: count: type: integer format: int32 description: 'number of total objects matching query' hasNext: type: boolean description: 'True if more results can be fetched, otherwise false' hasPrevious: type: boolean description: 'True if previous results can be fetched, otherwise false' page: type: integer format: int32 description: 'Current page of paginated query results' pageSize: type: integer format: int32 description: 'Number of results per page' UserWithRolePaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/UserWithRole' UserPaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/UserSearched' ScenePaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/Scene' PlatformsPaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/Platform' Platform: type: object properties: id: type: string format: UUID description: 'Platform Id' name: type: string description: 'Platform display name' isActive: type: boolean defaultOrganizationId: type: string format: UUID description: "Default organization to add users to if one isn't specified" publicSettings: $ref: '#/definitions/PlatformPublicSettings' privateSettings: $ref: '#/definitions/PlatformPrivateSettings' required: - id - name - isActive - publicSettings - privateSettings PlatformPublicSettings: type: object properties: emailUser: type: string emailSmtpHost: type: string emailSmtpPort: type: integer emailSmtpEncryption: type: string emailIngestNotification: type: boolean emailAoiNotification: type: boolean emailExportNotification: type: boolean platformHost: type: string emailFrom: type: string required: - emailUser - emailSmtpHost - emailSmtpPort - emailSmtpEncryption - emailIngestNotification - emailAoiNotification - emailExportNotification PlatformPrivateSettings: type: object properties: emailPassword: type: string required: - emailPassword OrganizationsPaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/Organization' Organization: allOf: - $ref: '#/definitions/TimeModelMixin' - type: object properties: id: type: string description: 'Organization Id' name: type: string description: 'Display name for organization' status: type: string description: 'status of organization' enum: - 'INACTIVE' - 'REQUESTED' - 'ACTIVE' required: - name - id - status OrganizationCreate: type: object properties: name: type: string platformId: type: string format: UUID TeamsPaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/Team' Team: allOf: - type: object properties: createdBy: type: string description: 'User who created the object' readOnly: true modifiedBy: type: string description: 'User who most recently modified the object' readOnly: true organizationId: type: string description: 'uuid for organization' id: type: string format: UUID description: Team ID - $ref: '#/definitions/TimeModelMixin' - $ref: '#/definitions/TeamCreate' TeamCreate: type: object properties: organizationId: type: string format: UUID description: 'uuid for organization' name: type: string description: 'name of a team' settings: type: object description: 'settings for a team, default to {}' Composite: type: object description: 'mapping of bands to RGB' properties: label: type: string description: 'Human readable label for color composite to describe what it is useful for (e.g. natural color)' value: type: object properties: redBand: type: integer greenBand: type: integer blueBand: type: integer DatasourceToCreate: type: object description: 'Datasource to be created' allOf: - $ref: '#/definitions/DatasourceCreated' - $ref: '#/definitions/DatasourceBands' DatasourceBands: type: object description: 'Band definitions of a datasource' allOf: - type: object properties: bands: type: array items: type: object properties: name: type: string number: type: string wavelength: type: number format: float DatasourceCreated: type: object description: 'Grouping of imagery by creation source' allOf: - type: object properties: visibility: type: string description: 'Level of restriction on viewing' enum: - 'PUBLIC' - 'ORGANIZATION' - 'PRIVATE' name: type: string description: 'human label name for datasource' extras: type: object description: 'additional related information for a datasource' composites: $ref: '#/definitions/Composite' Datasource: allOf: - $ref: '#/definitions/BaseModel' - $ref: '#/definitions/UserTrackingMixin' - $ref: '#/definitions/TimeModelMixin' - $ref: '#/definitions/DatasourceCreated' DatasourceThin: type: object description: 'A datasource with a reduced set of fields' properties: name: type: string description: 'The name of this datasource' id: type: string format: uuid description: 'The id of this datasource' bands: type: array items: type: object properties: name: type: string number: type: string wavelength: type: number format: float DatasourcePaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/Datasource' License: type: object description: 'A record of license' properties: name: type: string description: 'Name of a license' osiApproved: type: boolean description: 'If a license is OSI approved' shortName: type: string description: 'Short name of a license' url: type: string description: 'URL to details of a license' LicensesPaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/License' SceneBase: allOf: - $ref: '#/definitions/BaseModel' - type: object properties: visibility: type: string description: 'Level of restriction on viewing' enum: - 'PUBLIC' - 'ORGANIZATION' - 'PRIVATE' tags: type: array description: 'Tags associated with image' items: type: string sceneMetadata: type: object description: | Metadata about the scene -- some aspects we will eventually want to nail down that will be fairly common and/or required for scenes name: type: string description: 'Identifying name for the scene' owner: type: string description: 'User ID to set as owner of the scene.' datafootprint: $ref: '#/definitions/MultiPolygon' tilefootprint: $ref: '#/definitions/MultiPolygon' metadataFiles: type: array description: | Metadata files that should be present for processing all images in a scene (e.g. relevant .mtl files or .xml) items: type: string ingestLocation: type: string description: 'Where scene is ingested (pyramided/tiled)' filterFields: $ref: '#/definitions/FilterFields' statusFields: $ref: '#/definitions/StatusFields' sceneType: type: string description: 'How to produce tiles of this scene' enum: - 'AVRO' - 'COG' Scene: allOf: - $ref: '#/definitions/SceneBase' - $ref: '#/definitions/UserTrackingMixin' - $ref: '#/definitions/TimeModelMixin' - type: object properties: images: type: array items: $ref: '#/definitions/Image' thumbnails: type: array items: $ref: '#/definitions/Thumbnail' datasource: $ref: '#/definitions/DatasourceThin' SceneOrdered: allOf: - $ref: '#/definitions/SceneBase' - $ref: '#/definitions/UserTrackingMixin' - $ref: '#/definitions/TimeModelMixin' - type: object properties: thumbnails: type: array items: $ref: '#/definitions/Thumbnail' datasource: $ref: '#/definitions/DatasourceThin' sceneOrder: type: number format: int SceneBrowse: allOf: - $ref: '#/definitions/SceneBase' - $ref: '#/definitions/UserTrackingMixin' - $ref: '#/definitions/TimeModelMixin' - type: object properties: datasource: $ref: '#/definitions/DatasourceThin' thumbnails: type: array items: $ref: '#/definitions/Thumbnail' inProject: type: boolean description: 'Whether the scene is already added to a given project' inLayer: type: boolean description: 'Whether the scene is already added to a given project layer' SceneBrowsePaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/SceneBrowse' SceneOrderedPaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/SceneOrdered' FilterFields: type: object properties: cloudCover: type: number format: float32 description: 'Proportion of cloud coverage for scene' acquisitionDate: type: string format: datetime description: 'Date scene was acquired from instrument (e.g. satellite, drone)' sunAzimuth: type: number format: float32 description: 'Azimuth of the sun' sunElevation: type: number format: float32 description: 'Elevation of the sun' StatusFields: type: object properties: thumbnailStatus: type: string description: 'status of thumbnail generation' enum: - 'SUCCESS' - 'FAILURE' - 'PARTIALFAILURE' - 'QUEUED' - 'PROCESSING' footprintStatus: type: string description: 'status of footprint generation' enum: - 'SUCCESS' - 'FAILURE' - 'PARTIALFAILURE' - 'QUEUED' - 'PROCESSING' ingestStatus: type: string description: 'status of ingest' enum: - 'NOTINGESTED' - 'TOBEINGESTED' - 'INGESTING' - 'INGESTED' - 'FAILED' SingleBandOptions: type: object properties: band: type: integer description: 'Band number to render' dataType: type: string description: 'Type of data' enum: - DIVERGING - SEQUENTIAL - CATEGORICAL colorBins: type: integer description: | Limit to this number of colors, using interpolation. Defaults to 0, which corresponds to the maximum of 255 (one per normalized pixel value) colorScheme: description: | An array of color hex codes, or an object of breakpoints and their corresponding colors Eg: ["#000000", "#111111", "#222222"] Eg: {"0": "#000000", "10": "#111111", "11": "#222222" } type: array items: type: string legendOrientation: type: string description: 'Currently unused' extraNoData: description: 'Values to treat as NODATA for categorical color schemes - Not currently respected' type: array items: type: integer ProjectCreate: type: object required: - name - visibility - tileVisibility - tags - description properties: name: type: string description: 'The display name of the project' description: type: string description: 'Long-form description of the project' visibility: description: 'Level of restriction on viewing' type: string enum: *VISIBILITY tileVisibility: description: 'Level of restriction on viewing' type: string enum: *VISIBILITY isAOIProject: type: boolean description: 'Is true if project is an area-of-interest project' aoiCadenceMillis: type: number format: int64 owner: type: string description: 'User who owns the project' tags: type: array items: type: string isSingleBand: type: boolean description: 'Use single band options to render instead of bands' singleBandOptions: $ref: '#/definitions/SingleBandOptions' extras: type: object description: 'Optional additional json metadata' Project: allOf: - $ref: '#/definitions/BaseModel' - $ref: '#/definitions/UserTrackingMixin' - $ref: '#/definitions/TimeModelMixin' - type: object properties: name: type: string description: 'The display name of the project' slugLabel: type: string description: 'URL-safe version of name' readOnly: true description: type: string description: 'Long-form description of the project' visibility: description: 'Level of restriction on viewing' type: string enum: *VISIBILITY tileVisibility: description: 'Level of restriction on viewing' type: string enum: *VISIBILITY isAOIProject: type: boolean description: 'Is true if project is an area-of-interest project' aoiCadenceMillis: type: number format: int64 aoisLastChecked: type: string format: datetime tags: type: array items: type: string extent: $ref: '#/definitions/Polygon' manualOrder: type: boolean description: 'Is true if project scenes are manually ordered' isSingleBand: type: boolean description: 'Use single band options to render instead of bands' singleBandOptions: $ref: '#/definitions/SingleBandOptions' defaultAnnotationGroup: type: string format: uuid description: 'Default group to add annotations to when they are created' extras: type: object description: 'Optional additional json metadata' defaultLayerId: type: string format: uuid description: 'Default project layer to interact with' Image: allOf: - $ref: '#/definitions/BaseModel' - $ref: '#/definitions/TimeModelMixin' - $ref: '#/definitions/UserTrackingMixin' - type: object required: - filename - sourceUri properties: bands: type: array description: 'list of band types for image; a single band denotes a single band image, multiple bands should be listed in order (e.g if it is an RGB tiff then bands should be [red, green blue])' items: $ref: '#/definitions/Band' filename: type: string description: 'The basename of the file holding this image' sourceUri: type: string description: 'An absolute location for accessing this image somewhere in the universe' ImageWithDownloadUri: allOf: - $ref: '#/definitions/Image' - type: object properties: downloadUri: type: string description: 'URI to downloadable resource. This is not always the same as `sourceUri`.' ProjectPaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/Project' AoiPaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/AOI' BandCreate: type: object properties: name: type: string description: 'String representation of band name' number: type: integer description: 'Band number for image' wavelength: type: array items: type: integer Band: allOf: - $ref: '#/definitions/BandCreate' - $ref: '#/definitions/BaseModel' - type: object properties: image: type: string format: UUID ThumbnailIdentified: allOf: - $ref: '#/definitions/BaseModel' - type: object properties: thumbnailSize: type: string description: 'Summary of size' enum: - 'SMALL' - 'LARGE' - 'SQUARE' widthPx: type: integer format: int32 description: 'The width of the thumbnail, in pixels' heightPx: type: integer format: int32 description: 'The height of the thumbnail, in pixels' sceneId: type: string format: uuid description: 'Scene that image is associated with' url: type: string format: uri description: 'A client-accessible URL pointing to the image file' Thumbnail: allOf: - $ref: '#/definitions/BaseModel' - $ref: '#/definitions/TimeModelMixin' - $ref: '#/definitions/ThumbnailIdentified' Tool: allOf: - $ref: '#/definitions/BaseModel' - $ref: '#/definitions/UserTrackingMixin' - type: object properties: title: type: string description: 'Title of tool displayed to users' description: type: string description: | A long description of the tool, including is use-cases, purpose, and any potential references organization: description: 'The owning organization of the Tool' items: $ref: '#/definitions/Organization' requirements: type: string description: 'A brief description of requirements, including any relevant band requirements' tags: type: array description: 'Tool tags associated with a tool' items: type: string categories: type: array description: 'Category of geoprocessing tool' items: type: string license: type: string description: 'Usage license of tool' compatibleDatasources: type: array description: 'Datasources that can be used with this geoprocessing tool' items: type: string stars: type: number description: 'User rating of geoprocessing tool' visibility: type: string description: 'Level of restriction on viewing' enum: - 'PUBLIC' - 'ORGANIZATION' - 'PRIVATE' ToolPaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/Tool' ToolTag: allOf: - $ref: '#/definitions/BaseModel' - $ref: '#/definitions/UserTrackingMixin' - type: object properties: label: type: string description: 'User displayed label' ToolTagPaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/ToolTag' ToolCategory: allOf: - $ref: '#/definitions/BaseModel' - type: object properties: category: type: string description: 'User displayed label for category' slugLabel: type: string description: 'Slug label for use in urls' ToolCategoryPaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/ToolCategory' ToolRun: allOf: - $ref: '#/definitions/BaseModel' - $ref: '#/definitions/UserTrackingMixin' - type: object properties: executionParameters: type: object description: 'Parameters for running the tool' name: type: string visibility: type: string description: 'Level of restriction on viewing' enum: - 'PUBLIC' - 'ORGANIZATION' - 'PRIVATE' ToolRunPaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/ToolRun' ToolRunWithRelated: allOf: - $ref: '#/definitions/ToolRun' - type: object properties: templateTitle: type: string description: 'Title of the template used to create this analysis' layerColorGroupHex: type: string layerGeometry: $ref: "#/definitions/Geometry" ToolRunWithRelatedPaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/ToolRunWithRelated' Error: type: object properties: code: type: integer format: int32 message: type: string OrgParams: type: object description: 'Organization parameters to filter scenes' properties: organizations: type: array items: type: string format: uuid UserParams: type: object description: 'User parameters to filter scenes' properties: createdBy: type: string modifiedBy: type: string owner: type: string TimestampParams: type: object description: 'Timestamp parameters to filter scenes' properties: minCreateDatetime: type: string format: datetime maxCreateDateTime: type: string format: datetime minModifiedDatetime: type: string format: datetime maxModifiedDatetime: type: string format: datetime UploadCreate: type: object allOf: - $ref: '#/definitions/BaseCreate' - type: object properties: uploadStatus: type: string description: 'Status of upload' enum: - 'CREATED' - 'UPLOADING' - 'UPLOADED' - 'QUEUED' - 'PROCESSING' - 'COMPLETE' - 'FAILED' - 'ABORTED' files: type: array items: type: string description: 'An array of strings of file locations. If a source is provided, this can be empty' uploadType: type: string description: 'Source of files and uploads' enum: - 'DROPBOX' - 'S3' - 'LOCAL' - 'PLANET' - 'MODIS_USGS' fileType: type: string description: 'type of data being uploaded, limited to two options right now' enum: - 'GEOTIFF' - 'GEOTIFF_WITH_METADATA' datasource: type: string description: 'datasource of tiffs being uploaded' format: uuid visibility: type: string description: 'Level of restriction on viewing' enum: - 'PUBLIC' - 'ORGANIZATION' - 'PRIVATE' projectId: type: string format: uuid description: 'during the import process, add scenes to a project if specified' source: type: string description: 'for uploads of type S3 and Dropbox, the location of the files to import. If files are specified, this field is ignored' metadata: $ref: '#/definitions/UploadMetadata' Upload: allOf: - $ref: '#/definitions/BaseModel' - $ref: '#/definitions/UserTrackingMixin' - $ref: '#/definitions/UploadCreate' - type: object properties: files: type: array items: type: string metadata: type: object UploadMetadata: type: object properties: sceneCloudCover: type: number format: float32 sceneAcquisitionDate: type: string format: datetime UploadPaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/Upload' UploadCredentials: type: object properties: AccessKeyId: type: string SecretAccessKey: type: string SessionToken: type: string Expiration: type: string format: datetime UploadCredentialsResponse: type: object properties: credentials: $ref: '#/definitions/UploadCredentials' bucketPath: type: string SceneParams: type: object description: 'scene params' properties: maxCloudCover: type: number format: float32 minCloudCover: type: number format: float32 minAcquisitionDatetime: type: string format: datetime maxAcquisitionDatetime: type: string format: datetime datasource: type: array items: type: string format: uuid month: type: array items: type: number format: int minDayOfMonth: type: number format: int maxDayOfMonth: type: number format: int maxSunAzimuth: type: number format: float32 minSunAzimuth: type: number format: float32 maxSunElevation: type: number format: float32 minSunElevation: type: number format: float32 bbox: type: string project: type: string format: uuid ingested: type: boolean ingestStatus: type: string enum: - 'NOTINGESTED' - 'TOBEINGESTED' - 'INGESTING' - 'INGESTED' - 'FAILED' ImageParams: type: object description: 'image params' properties: minRawDataBytes: type: number format: int maxRawDataBytes: type: number format: int minResolution: type: number format: float32 maxResolution: type: number format: float32 scene: type: array items: type: string format: uuid CombinedSceneQueryParams: type: object description: 'Combined query parameters for filtering scenes' properties: orgParams: $ref: '#/definitions/OrgParams' userParams: $ref: '#/definitions/UserParams' timestampParams: $ref: '#/definitions/TimestampParams' sceneParams: $ref: '#/definitions/SceneParams' imageParams: $ref: '#/definitions/ImageParams' SceneCorrectionParam: type: object description: 'A paired scene ID and color correction parameter list' properties: sceneId: type: string format: uuid params: $ref: '#/definitions/ColorCorrection' CombinedSceneCorrectionParams: type: object description: 'Combined color correction parameters for multiple scenes' properties: items: type: array items: $ref: '#/definitions/SceneCorrectionParam' ExportCreate: type: object allOf: - $ref: '#/definitions/BaseCreate' - type: object properties: projectId: type: string format: uuid sceneIds: type: array items: type: string format: uuid exportStatus: type: string description: 'Status of export' enum: - 'CREATED' - 'EXPORTING' - 'EXPORTED' - 'QUEUED' - 'PROCESSING' - 'COMPLETE' - 'FAILED' - 'ABORTED' exportType: type: string description: 'Source of exports' enum: - 'DROPBOX' - 'S3' - 'LOCAL' visibility: type: string description: 'Level of restriction on viewing' enum: - 'PUBLIC' - 'ORGANIZATION' - 'PRIVATE' toolRunId: type: string format: uuid description: 'Optional id of a ToolRun. Specifying this will perform an RDD-AST-based export job.' exportOptions: $ref: '#/definitions/ExportOptions' Export: allOf: - $ref: '#/definitions/BaseModel' - $ref: '#/definitions/UserTrackingMixin' - $ref: '#/definitions/ExportCreate' - type: object properties: exportStatus: type: string description: 'Status of export' enum: - 'CREATED' - 'EXPORTING' - 'EXPORTED' - 'QUEUED' - 'PROCESSING' - 'COMPLETE' - 'FAILED' - 'ABORTED' ExportPaginated: allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/definitions/Export' ExportOptions: type: object description: 'export params' properties: operation: type: string description: 'currently a not supported flag, describes a render operation, "id" by defaut.' bands: type: array description: 'bands in the exported geotiffs' items: type: integer rasterSize: type: integer description: 'desired tiff size after export' crs: type: integer description: 'epsg projection code' mask: type: object description: 'GeoJSON multipolygon' stitch: type: boolean description: 'stitch tiles into a single geotiff if possible' crop: type: boolean description: 'crop stitched raster by provided mask if possible' raw: type: boolean description: 'make a raw export skipping all color correction steps' ExportDefinition: type: object properties: exportStatus: type: string description: 'Status of export' enum: - 'NOTEXPORTED' - 'TOBEEXPORTED' - 'EXPORTING' - 'EXPORTED' - 'FAILED' input: $ref: '#/definitions/InputExportDefinition' output: $ref: '#/definitions/OutputExportDefinition' InputExportDefinition: type: object properties: projectId: type: string format: uuid resolution: type: integer description: "required resolution (currently it's zoom level)" mask: type: object description: 'GeoJSON multipolygon' layers: type: object properties: layerId: type: string format: uuid ingestLocation: type: string format: uuid colorCorrections: $ref: '#/definitions/ColorCorrection' OutputExportDefinition: type: object properties: rasterSize: type: integer description: 'desired tiff size after export' crs: type: integer description: 'epsg projection code' stitch: type: boolean description: 'stitch tiles into a single geotiff if possible' crop: type: boolean description: 'crop stitched raster by provided mask if possible' source: type: string format: uuid description: 'output export path' render: $ref: '#/definitions/Render' dropboxCredential: type: string description: 'Dropbox token' Render: type: object properties: operation: type: string description: 'currently useless Field' bands: type: array description: 'bands in the exported geotiffs' items: type: integer BulkAcceptParams: type: object description: 'bulk accept params' properties: sceneIds: type: array items: type: string format: uuid AnnotationFeature: type: object properties: type: type: string properties: allOf: - $ref: '#/definitions/BaseModel' - $ref: '#/definitions/TimeModelMixin' - $ref: '#/definitions/UserTrackingMixin' - type: object properties: label: type: string description: type: string machineGenerated: type: boolean confidence: type: number format: float quality: type: string enum: - 'YES' - 'NO' - 'MISS' - 'MATCH' projectId: type: string format: uuid annotationGroup: type: string format: uuid geometry: $ref: "#/definitions/Geometry" AnnotationFeatureUpdate: type: object properties: type: type: string properties: type: object properties: label: type: string description: type: string machineGenerated: type: boolean confidence: type: number format: float quality: type: string enum: - 'YES' - 'NO' - 'MISS' - 'MATCH' annotationGroup: type: string format: uuid geometry: $ref: "#/definitions/Geometry" AnnotationFeatureCreate: type: object properties: type: type: string properties: allOf: - $ref: '#/definitions/BaseCreate' - type: object properties: label: type: string description: type: string machineGenerated: type: boolean confidence: type: number format: float quality: type: string enum: - 'YES' - 'NO' - 'MISS' - 'MATCH' annotationGroup: type: string format: uuid geometry: $ref: "#/definitions/Geometry" AnnotationFeatureCollection: type: object properties: type: type: string features: type: array items: $ref: '#/definitions/AnnotationFeature' AnnotationFeatureCollectionPaginated: type: object allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: type: type: string features: type: array items: $ref: '#/definitions/AnnotationFeature' AnnotationFeatureCollectionCreate: type: object properties: type: type: string features: type: array items: $ref: '#/definitions/AnnotationFeatureCreate' ShapeFeature: type: object properties: type: type: string properties: allOf: - $ref: '#/definitions/BaseModel' - $ref: '#/definitions/TimeModelMixin' - $ref: '#/definitions/UserTrackingMixin' - type: object properties: name: type: string description: type: string geometry: $ref: "#/definitions/Geometry" ShapeFeatureUpdate: type: object properties: type: type: string properties: type: object properties: name: type: string description: type: string geometry: $ref: "#/definitions/Geometry" ShapeFeatureCreate: type: object properties: type: type: string properties: allOf: - $ref: '#/definitions/BaseCreate' - type: object properties: name: type: string description: type: string geometry: $ref: "#/definitions/Geometry" ShapeFeatureCollection: type: object properties: type: type: string features: type: array items: $ref: '#/definitions/ShapeFeature' ShapeFeatureCollectionPaginated: type: object allOf: - $ref: '#/definitions/PaginatedResponse' - type: object properties: type: type: string features: type: array items: $ref: '#/definitions/ShapeFeature' ShapeFeatureCollectionCreate: type: object properties: type: type: string features: type: array items: $ref: '#/definitions/ShapeFeatureCreate' AnnotationGroupCreate: type: object required: - name properties: name: type: string projectId: type: string format: uuid defaultStyle: type: object AnnotationGroup: type: object allOf: - $ref: '#/definitions/BaseModel' - $ref: '#/definitions/TimeModelMixin' - $ref: '#/definitions/UserTrackingMixin' properties: name: type: string projectId: type: string format: uuid defaultStyle: type: object ProjectColorMode: type: object properties: redBand: type: integer description: 'Red channel band mapping' greenBand: type: integer description: 'Green channel band mapping' blueBand: type: integer description: 'Blue channel band mapping' LabelSummary: type: object properties: label: type: string counts: type: object