From f1c98d1a8ad17c52397785d6f6ebdb747f40ed06 Mon Sep 17 00:00:00 2001 From: Andrew Reddish Date: Fri, 12 Jul 2019 16:59:44 -0700 Subject: [PATCH 1/7] Copy v3.0 -> v3.1 for easy diffing --- .../Training/stable/v3.1/Training.json | 4518 +++++++++++++++++ 1 file changed, 4518 insertions(+) create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json new file mode 100644 index 000000000000..f9d9fd805f94 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json @@ -0,0 +1,4518 @@ +{ + "swagger": "2.0", + "info": { + "version": "3.0", + "title": "Custom Vision Training Client" + }, + "host": "southcentralus.api.cognitive.microsoft.com", + "basePath": "/customvision/v3.0/training", + "schemes": [ + "https" + ], + "paths": { + "/domains": { + "get": { + "tags": [ + "DomainsApi" + ], + "summary": "Get a list of the available domains.", + "operationId": "GetDomains", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Domain" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetDomains request": { + "$ref": "./examples/GetDomains.json" + } + } + } + }, + "/domains/{domainId}": { + "get": { + "tags": [ + "DomainsApi" + ], + "summary": "Get information about a specific domain.", + "operationId": "GetDomain", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "domainId", + "in": "path", + "description": "The id of the domain to get information about.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Domain" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetDomain request": { + "$ref": "./examples/GetDomain.json" + } + } + } + }, + "/projects/{projectId}/images/tagged/count": { + "get": { + "tags": [ + "ImageApi" + ], + "summary": "Gets the number of images tagged with the provided {tagIds}.", + "description": "The filtering is on an and/or relationship. For example, if the provided tag ids are for the \"Dog\" and\r\n\"Cat\" tags, then only images tagged with Dog and/or Cat will be returned", + "operationId": "GetTaggedImageCount", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "query", + "description": "The iteration id. Defaults to workspace.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "name": "tagIds", + "in": "query", + "description": "A list of tags ids to filter the images to count. Defaults to all tags when null.", + "required": false, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "format": "int32", + "type": "integer" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetTaggedImageCount request": { + "$ref": "./examples/GetTaggedImageCount.json" + } + } + } + }, + "/projects/{projectId}/images/untagged/count": { + "get": { + "tags": [ + "ImageApi" + ], + "summary": "Gets the number of untagged images.", + "description": "This API returns the images which have no tags for a given project and optionally an iteration. If no iteration is specified the\r\ncurrent workspace is used.", + "operationId": "GetUntaggedImageCount", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "query", + "description": "The iteration id. Defaults to workspace.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "format": "int32", + "type": "integer" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetUntaggedImageCount request": { + "$ref": "./examples/GetUntaggedImageCount.json" + } + } + } + }, + "/projects/{projectId}/images/tags": { + "post": { + "tags": [ + "ImageApi" + ], + "summary": "Associate a set of images with a set of tags.", + "operationId": "CreateImageTags", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "batch", + "in": "body", + "description": "Batch of image tags. Limited to 128 tags per batch.", + "required": true, + "schema": { + "$ref": "#/definitions/ImageTagCreateBatch" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImageTagCreateSummary" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful CreateImageTags request": { + "$ref": "./examples/CreateImageTags.json" + } + } + }, + "delete": { + "tags": [ + "ImageApi" + ], + "summary": "Remove a set of tags from a set of images.", + "operationId": "DeleteImageTags", + "consumes": [], + "produces": [], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "imageIds", + "in": "query", + "description": "Image ids. Limited to 64 images.", + "required": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 64, + "minItems": 0 + }, + { + "name": "tagIds", + "in": "query", + "description": "Tags to be deleted from the specified images. Limited to 20 tags.", + "required": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 20, + "minItems": 0 + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful DeleteImageTags request": { + "$ref": "./examples/DeleteImageTags.json" + } + } + } + }, + "/projects/{projectId}/images/regions": { + "post": { + "tags": [ + "ImageApi" + ], + "summary": "Create a set of image regions.", + "description": "This API accepts a batch of image regions, and optionally tags, to update existing images with region information.\r\nThere is a limit of 64 entries in the batch.", + "operationId": "CreateImageRegions", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "batch", + "in": "body", + "description": "Batch of image regions which include a tag and bounding box. Limited to 64.", + "required": true, + "schema": { + "$ref": "#/definitions/ImageRegionCreateBatch" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImageRegionCreateSummary" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful CreateImageRegions request": { + "$ref": "./examples/CreateImageRegions.json" + } + } + }, + "delete": { + "tags": [ + "ImageApi" + ], + "summary": "Delete a set of image regions.", + "operationId": "DeleteImageRegions", + "consumes": [], + "produces": [], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "regionIds", + "in": "query", + "description": "Regions to delete. Limited to 64.", + "required": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 64, + "minItems": 0 + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful DeleteImageRegions request": { + "$ref": "./examples/DeleteImageRegions.json" + } + } + } + }, + "/projects/{projectId}/images/tagged": { + "get": { + "tags": [ + "ImageApi" + ], + "summary": "Get tagged images for a given project iteration.", + "description": "This API supports batching and range selection. By default it will only return first 50 images matching images.\r\nUse the {take} and {skip} parameters to control how many images to return in a given batch.\r\nThe filtering is on an and/or relationship. For example, if the provided tag ids are for the \"Dog\" and\r\n\"Cat\" tags, then only images tagged with Dog and/or Cat will be returned", + "operationId": "GetTaggedImages", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "query", + "description": "The iteration id. Defaults to workspace.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "name": "tagIds", + "in": "query", + "description": "A list of tags ids to filter the images. Defaults to all tagged images when null. Limited to 20.", + "required": false, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 20, + "minItems": 0 + }, + { + "name": "orderBy", + "in": "query", + "description": "The ordering. Defaults to newest.", + "required": false, + "type": "string", + "enum": [ + "Newest", + "Oldest" + ] + }, + { + "name": "take", + "in": "query", + "description": "Maximum number of images to return. Defaults to 50, limited to 256.", + "required": false, + "type": "integer", + "format": "int32", + "default": 50, + "maximum": 256, + "minimum": 0 + }, + { + "name": "skip", + "in": "query", + "description": "Number of images to skip before beginning the image batch. Defaults to 0.", + "required": false, + "type": "integer", + "format": "int32", + "default": 0 + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Image" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetTaggedImages request": { + "$ref": "./examples/GetTaggedImages.json" + } + } + } + }, + "/projects/{projectId}/images/untagged": { + "get": { + "tags": [ + "ImageApi" + ], + "summary": "Get untagged images for a given project iteration.", + "description": "This API supports batching and range selection. By default it will only return first 50 images matching images.\r\nUse the {take} and {skip} parameters to control how many images to return in a given batch.", + "operationId": "GetUntaggedImages", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "query", + "description": "The iteration id. Defaults to workspace.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "name": "orderBy", + "in": "query", + "description": "The ordering. Defaults to newest.", + "required": false, + "type": "string", + "enum": [ + "Newest", + "Oldest" + ] + }, + { + "name": "take", + "in": "query", + "description": "Maximum number of images to return. Defaults to 50, limited to 256.", + "required": false, + "type": "integer", + "format": "int32", + "default": 50, + "maximum": 256, + "minimum": 0 + }, + { + "name": "skip", + "in": "query", + "description": "Number of images to skip before beginning the image batch. Defaults to 0.", + "required": false, + "type": "integer", + "format": "int32", + "default": 0 + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Image" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetUntaggedImages request": { + "$ref": "./examples/GetUntaggedImages.json" + } + } + } + }, + "/projects/{projectId}/images/id": { + "get": { + "tags": [ + "ImageApi" + ], + "summary": "Get images by id for a given project iteration.", + "description": "This API will return a set of Images for the specified tags and optionally iteration. If no iteration is specified the\r\ncurrent workspace is used.", + "operationId": "GetImagesByIds", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "imageIds", + "in": "query", + "description": "The list of image ids to retrieve. Limited to 256.", + "required": false, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 256, + "minItems": 0 + }, + { + "name": "iterationId", + "in": "query", + "description": "The iteration id. Defaults to workspace.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Image" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetImagesByIds request": { + "$ref": "./examples/GetImagesByIds.json" + } + } + } + }, + "/projects/{projectId}/images": { + "post": { + "tags": [ + "ImageApi" + ], + "summary": "Add the provided images to the set of training images.", + "description": "This API accepts body content as multipart/form-data and application/octet-stream. When using multipart\r\nmultiple image files can be sent at once, with a maximum of 64 files", + "operationId": "CreateImagesFromData", + "consumes": [ + "multipart/form-data", + "application/octet-stream" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "tagIds", + "in": "query", + "description": "The tags ids with which to tag each image. Limited to 20.", + "required": false, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 20, + "minItems": 0 + }, + { + "name": "imageData", + "in": "formData", + "description": "Binary image data. Supported formats are JPEG, GIF, PNG, and BMP. Supports images up to 6MB.", + "required": true, + "type": "file" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImageCreateSummary" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful CreateImagesFromData request": { + "$ref": "./examples/CreateImagesFromData.json" + } + } + }, + "delete": { + "tags": [ + "ImageApi" + ], + "summary": "Delete images from the set of training images.", + "operationId": "DeleteImages", + "consumes": [], + "produces": [], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "imageIds", + "in": "query", + "description": "Ids of the images to be deleted. Limited to 256 images per batch.", + "required": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 256, + "minItems": 0 + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful DeleteImages request": { + "$ref": "./examples/DeleteImages.json" + } + } + } + }, + "/projects/{projectId}/images/files": { + "post": { + "tags": [ + "ImageApi" + ], + "summary": "Add the provided batch of images to the set of training images.", + "description": "This API accepts a batch of files, and optionally tags, to create images. There is a limit of 64 images and 20 tags.", + "operationId": "CreateImagesFromFiles", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "batch", + "in": "body", + "description": "The batch of image files to add. Limited to 64 images and 20 tags per batch.", + "required": true, + "schema": { + "$ref": "#/definitions/ImageFileCreateBatch" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImageCreateSummary" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful CreateImagesFromFiles request": { + "$ref": "./examples/CreateImagesFromFiles.json" + } + } + } + }, + "/projects/{projectId}/images/urls": { + "post": { + "tags": [ + "ImageApi" + ], + "summary": "Add the provided images urls to the set of training images.", + "description": "This API accepts a batch of urls, and optionally tags, to create images. There is a limit of 64 images and 20 tags.", + "operationId": "CreateImagesFromUrls", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "batch", + "in": "body", + "description": "Image urls and tag ids. Limited to 64 images and 20 tags per batch.", + "required": true, + "schema": { + "$ref": "#/definitions/ImageUrlCreateBatch" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImageCreateSummary" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful CreateImagesFromUrls request": { + "$ref": "./examples/CreateImagesFromUrls.json" + } + } + } + }, + "/projects/{projectId}/images/predictions": { + "post": { + "tags": [ + "ImageApi" + ], + "summary": "Add the specified predicted images to the set of training images.", + "description": "This API creates a batch of images from predicted images specified. There is a limit of 64 images and 20 tags.", + "operationId": "CreateImagesFromPredictions", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "batch", + "in": "body", + "description": "Image and tag ids. Limited to 64 images and 20 tags per batch.", + "required": true, + "schema": { + "$ref": "#/definitions/ImageIdCreateBatch" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImageCreateSummary" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful CreateImagesFromPredictions request": { + "$ref": "./examples/CreateImagesFromPredictions.json" + } + } + } + }, + "/projects/{projectId}/images/{imageId}/regionproposals": { + "post": { + "tags": [ + "ImageRegionProposalApi" + ], + "summary": "Get region proposals for an image. Returns empty array if no proposals are found.", + "description": "This API will get region proposals for an image along with confidences for the region. It returns an empty array if no proposals are found.", + "operationId": "GetImageRegionProposals", + "consumes": [], + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "imageId", + "in": "path", + "description": "The image id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImageRegionProposal" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetImageRegionProposals request": { + "$ref": "./examples/GetImageRegionProposals.json" + } + } + } + }, + "/projects/{projectId}/predictions": { + "delete": { + "tags": [ + "PredictionsApi" + ], + "summary": "Delete a set of predicted images and their associated prediction results.", + "operationId": "DeletePrediction", + "consumes": [], + "produces": [], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "ids", + "in": "query", + "description": "The prediction ids. Limited to 64.", + "required": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 64, + "minItems": 0 + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful DeletePrediction request": { + "$ref": "./examples/DeletePrediction.json" + } + } + } + }, + "/projects/{projectId}/quicktest/url": { + "post": { + "tags": [ + "PredictionsApi" + ], + "summary": "Quick test an image url.", + "operationId": "QuickTestImageUrl", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project to evaluate against.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "imageUrl", + "in": "body", + "description": "An ImageUrl that contains the url of the image to be evaluated.", + "required": true, + "schema": { + "$ref": "#/definitions/ImageUrl" + } + }, + { + "name": "iterationId", + "in": "query", + "description": "Optional. Specifies the id of a particular iteration to evaluate against.\r\n The default iteration for the project will be used when not specified.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImagePrediction" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful QuickTestImageUrl request": { + "$ref": "./examples/QuickTestImageUrl.json" + } + } + } + }, + "/projects/{projectId}/quicktest/image": { + "post": { + "tags": [ + "PredictionsApi" + ], + "summary": "Quick test an image.", + "operationId": "QuickTestImage", + "consumes": [ + "multipart/form-data", + "application/octet-stream" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "query", + "description": "Optional. Specifies the id of a particular iteration to evaluate against.\r\n The default iteration for the project will be used when not specified.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "name": "imageData", + "in": "formData", + "description": "Binary image data. Supported formats are JPEG, GIF, PNG, and BMP. Supports images up to 6MB.", + "required": true, + "type": "file" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImagePrediction" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful QuickTestImage request": { + "$ref": "./examples/QuickTestImage.json" + } + } + } + }, + "/projects/{projectId}/predictions/query": { + "post": { + "tags": [ + "PredictionsApi" + ], + "summary": "Get images that were sent to your prediction endpoint.", + "operationId": "QueryPredictions", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "query", + "in": "body", + "description": "Parameters used to query the predictions. Limited to combining 2 tags.", + "required": true, + "schema": { + "$ref": "#/definitions/PredictionQueryToken" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/PredictionQueryResult" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful QueryPredictions request": { + "$ref": "./examples/QueryPredictions.json" + } + } + } + }, + "/projects/{projectId}/iterations/{iterationId}/performance": { + "get": { + "tags": [ + "ProjectApi" + ], + "summary": "Get detailed performance information about an iteration.", + "operationId": "GetIterationPerformance", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The id of the project the iteration belongs to.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "The id of the iteration to get.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "threshold", + "in": "query", + "description": "The threshold used to determine true predictions.", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "overlapThreshold", + "in": "query", + "description": "If applicable, the bounding box overlap threshold used to determine true predictions.", + "required": false, + "type": "number", + "format": "float" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/IterationPerformance" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetIterationPerformance request": { + "$ref": "./examples/GetIterationPerformance.json" + } + } + } + }, + "/projects/{projectId}/iterations/{iterationId}/performance/images": { + "get": { + "tags": [ + "ProjectApi" + ], + "summary": "Get image with its prediction for a given project iteration.", + "description": "This API supports batching and range selection. By default it will only return first 50 images matching images.\r\nUse the {take} and {skip} parameters to control how many images to return in a given batch.\r\nThe filtering is on an and/or relationship. For example, if the provided tag ids are for the \"Dog\" and\r\n\"Cat\" tags, then only images tagged with Dog and/or Cat will be returned", + "operationId": "GetImagePerformances", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "The iteration id. Defaults to workspace.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "tagIds", + "in": "query", + "description": "A list of tags ids to filter the images. Defaults to all tagged images when null. Limited to 20.", + "required": false, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 20, + "minItems": 0 + }, + { + "name": "orderBy", + "in": "query", + "description": "The ordering. Defaults to newest.", + "required": false, + "type": "string", + "enum": [ + "Newest", + "Oldest" + ] + }, + { + "name": "take", + "in": "query", + "description": "Maximum number of images to return. Defaults to 50, limited to 256.", + "required": false, + "type": "integer", + "format": "int32", + "default": 50, + "maximum": 256, + "minimum": 0 + }, + { + "name": "skip", + "in": "query", + "description": "Number of images to skip before beginning the image batch. Defaults to 0.", + "required": false, + "type": "integer", + "format": "int32", + "default": 0 + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/ImagePerformance" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetImagePerformances request": { + "$ref": "./examples/GetImagePerformances.json" + } + } + } + }, + "/projects/{projectId}/iterations/{iterationId}/performance/images/count": { + "get": { + "tags": [ + "ProjectApi" + ], + "summary": "Gets the number of images tagged with the provided {tagIds} that have prediction results from\r\ntraining for the provided iteration {iterationId}.", + "description": "The filtering is on an and/or relationship. For example, if the provided tag ids are for the \"Dog\" and\r\n\"Cat\" tags, then only images tagged with Dog and/or Cat will be returned", + "operationId": "GetImagePerformanceCount", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "The iteration id. Defaults to workspace.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "tagIds", + "in": "query", + "description": "A list of tags ids to filter the images to count. Defaults to all tags when null.", + "required": false, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "format": "int32", + "type": "integer" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetImagePerformanceCount request": { + "$ref": "./examples/GetImagePerformanceCount.json" + } + } + } + }, + "/projects": { + "get": { + "tags": [ + "ProjectApi" + ], + "summary": "Get your projects.", + "operationId": "GetProjects", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Project" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetProjects request": { + "$ref": "./examples/GetProjects.json" + } + } + }, + "post": { + "tags": [ + "ProjectApi" + ], + "summary": "Create a project.", + "operationId": "CreateProject", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "name", + "in": "query", + "description": "Name of the project.", + "required": true, + "type": "string" + }, + { + "name": "description", + "in": "query", + "description": "The description of the project.", + "required": false, + "type": "string" + }, + { + "name": "domainId", + "in": "query", + "description": "The id of the domain to use for this project. Defaults to General.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "name": "classificationType", + "in": "query", + "description": "The type of classifier to create for this project.", + "required": false, + "type": "string", + "enum": [ + "Multiclass", + "Multilabel" + ] + }, + { + "name": "targetExportPlatforms", + "in": "query", + "description": "List of platforms the trained model is intending exporting to.", + "required": false, + "type": "array", + "items": { + "type": "string", + "enum": [ + "CoreML", + "TensorFlow", + "DockerFile", + "ONNX", + "VAIDK" + ] + }, + "collectionFormat": "csv" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Project" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful CreateProject request": { + "$ref": "./examples/CreateProject.json" + } + } + } + }, + "/projects/{projectId}": { + "get": { + "tags": [ + "ProjectApi" + ], + "summary": "Get a specific project.", + "operationId": "GetProject", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The id of the project to get.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Project" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetProject request": { + "$ref": "./examples/GetProject.json" + } + } + }, + "delete": { + "tags": [ + "ProjectApi" + ], + "summary": "Delete a specific project.", + "operationId": "DeleteProject", + "consumes": [], + "produces": [], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful DeleteProject request": { + "$ref": "./examples/DeleteProject.json" + } + } + }, + "patch": { + "tags": [ + "ProjectApi" + ], + "summary": "Update a specific project.", + "operationId": "UpdateProject", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The id of the project to update.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "updatedProject", + "in": "body", + "description": "The updated project model.", + "required": true, + "schema": { + "$ref": "#/definitions/Project" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Project" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful UpdateProject request": { + "$ref": "./examples/UpdateProject.json" + } + } + } + }, + "/projects/{projectId}/train": { + "post": { + "tags": [ + "ProjectApi" + ], + "summary": "Queues project for training.", + "operationId": "TrainProject", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "trainingType", + "in": "query", + "description": "The type of training to use to train the project (default: Regular).", + "required": false, + "type": "string", + "enum": [ + "Regular", + "Advanced" + ] + }, + { + "name": "reservedBudgetInHours", + "in": "query", + "description": "The number of hours reserved as budget for training (if applicable).", + "required": false, + "type": "integer", + "format": "int32", + "default": 0 + }, + { + "name": "forceTrain", + "in": "query", + "description": "Whether to force train even if dataset and configuration does not change (default: false).", + "required": false, + "type": "boolean", + "default": false + }, + { + "name": "notificationEmailAddress", + "in": "query", + "description": "The email address to send notification to when training finishes (default: null).", + "required": false, + "type": "string" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Iteration" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful TrainProject request": { + "$ref": "./examples/TrainProject.json" + } + } + } + }, + "/projects/{projectId}/iterations": { + "get": { + "tags": [ + "ProjectApi" + ], + "summary": "Get iterations for the project.", + "operationId": "GetIterations", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Iteration" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetIterations request": { + "$ref": "./examples/GetIterations.json" + } + } + } + }, + "/projects/{projectId}/iterations/{iterationId}": { + "get": { + "tags": [ + "ProjectApi" + ], + "summary": "Get a specific iteration.", + "operationId": "GetIteration", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The id of the project the iteration belongs to.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "The id of the iteration to get.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Iteration" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetIteration request": { + "$ref": "./examples/GetIteration.json" + } + } + }, + "delete": { + "tags": [ + "ProjectApi" + ], + "summary": "Delete a specific iteration of a project.", + "operationId": "DeleteIteration", + "consumes": [], + "produces": [], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "The iteration id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful DeleteIteration request": { + "$ref": "./examples/DeleteIteration.json" + } + } + }, + "patch": { + "tags": [ + "ProjectApi" + ], + "summary": "Update a specific iteration.", + "operationId": "UpdateIteration", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "Project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "Iteration id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "updatedIteration", + "in": "body", + "description": "The updated iteration model.", + "required": true, + "schema": { + "$ref": "#/definitions/Iteration" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Iteration" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful UpdateIteration request": { + "$ref": "./examples/UpdateIteration.json" + } + } + } + }, + "/projects/{projectId}/iterations/{iterationId}/publish": { + "post": { + "tags": [ + "ProjectApi" + ], + "summary": "Publish a specific iteration.", + "operationId": "PublishIteration", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "The iteration id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "publishName", + "in": "query", + "description": "The name to give the published iteration.", + "required": true, + "type": "string" + }, + { + "name": "predictionId", + "in": "query", + "description": "The id of the prediction resource to publish to.", + "required": true, + "type": "string" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "boolean" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful PublishIteration request": { + "$ref": "./examples/PublishIteration.json" + } + } + }, + "delete": { + "tags": [ + "ProjectApi" + ], + "summary": "Unpublish a specific iteration.", + "operationId": "UnpublishIteration", + "consumes": [], + "produces": [], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "The iteration id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful UnpublishIteration request": { + "$ref": "./examples/UnpublishIteration.json" + } + } + } + }, + "/projects/{projectId}/iterations/{iterationId}/export": { + "get": { + "tags": [ + "ProjectApi" + ], + "summary": "Get the list of exports for a specific iteration.", + "operationId": "GetExports", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "The iteration id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Export" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetExports request": { + "$ref": "./examples/GetExports.json" + } + } + }, + "post": { + "tags": [ + "ProjectApi" + ], + "summary": "Export a trained iteration.", + "operationId": "ExportIteration", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "The iteration id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "platform", + "in": "query", + "description": "The target platform.", + "required": true, + "type": "string", + "enum": [ + "CoreML", + "TensorFlow", + "DockerFile", + "ONNX", + "VAIDK" + ] + }, + { + "name": "flavor", + "in": "query", + "description": "The flavor of the target platform.", + "required": false, + "type": "string", + "enum": [ + "Linux", + "Windows", + "ONNX10", + "ONNX12", + "ARM" + ] + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Export" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful ExportIteration request": { + "$ref": "./examples/ExportIteration.json" + } + } + } + }, + "/projects/{projectId}/tags/{tagId}": { + "get": { + "tags": [ + "TagsApi" + ], + "summary": "Get information about a specific tag.", + "operationId": "GetTag", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project this tag belongs to.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "tagId", + "in": "path", + "description": "The tag id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "query", + "description": "The iteration to retrieve this tag from. Optional, defaults to current training set.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Tag" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetTag request": { + "$ref": "./examples/GetTag.json" + } + } + }, + "delete": { + "tags": [ + "TagsApi" + ], + "summary": "Delete a tag from the project.", + "operationId": "DeleteTag", + "consumes": [], + "produces": [], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "tagId", + "in": "path", + "description": "Id of the tag to be deleted.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful DeleteTag request": { + "$ref": "./examples/DeleteTag.json" + } + } + }, + "patch": { + "tags": [ + "TagsApi" + ], + "summary": "Update a tag.", + "operationId": "UpdateTag", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "tagId", + "in": "path", + "description": "The id of the target tag.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "updatedTag", + "in": "body", + "description": "The updated tag model.", + "required": true, + "schema": { + "$ref": "#/definitions/Tag" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Tag" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful UpdateTag request": { + "$ref": "./examples/UpdateTag.json" + } + } + } + }, + "/projects/{projectId}/tags": { + "get": { + "tags": [ + "TagsApi" + ], + "summary": "Get the tags for a given project and iteration.", + "operationId": "GetTags", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "query", + "description": "The iteration id. Defaults to workspace.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Tag" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetTags request": { + "$ref": "./examples/GetTags.json" + } + } + }, + "post": { + "tags": [ + "TagsApi" + ], + "summary": "Create a tag for the project.", + "operationId": "CreateTag", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "name", + "in": "query", + "description": "The tag name.", + "required": true, + "type": "string" + }, + { + "name": "description", + "in": "query", + "description": "Optional description for the tag.", + "required": false, + "type": "string" + }, + { + "name": "type", + "in": "query", + "description": "Optional type for the tag.", + "required": false, + "type": "string", + "enum": [ + "Regular", + "Negative" + ] + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Tag" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful CreateTag request": { + "$ref": "./examples/CreateTag.json" + } + } + } + } + }, + "definitions": { + "Domain": { + "type": "object", + "properties": { + "id": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "name": { + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "type": { + "enum": [ + "Classification", + "ObjectDetection" + ], + "type": "string", + "readOnly": true, + "x-nullable": false, + "x-ms-enum": { + "name": "DomainType", + "modelAsString": true + } + }, + "exportable": { + "type": "boolean", + "readOnly": true, + "x-nullable": false + }, + "enabled": { + "type": "boolean", + "readOnly": true, + "x-nullable": false + } + } + }, + "ImageTagCreateBatch": { + "description": "Batch of image tags.", + "type": "object", + "properties": { + "tags": { + "description": "Image Tag entries to include in this batch.", + "type": "array", + "items": { + "$ref": "#/definitions/ImageTagCreateEntry", + "x-nullable": false + }, + "readOnly": false + } + } + }, + "ImageTagCreateEntry": { + "description": "Entry associating a tag to an image.", + "type": "object", + "properties": { + "imageId": { + "format": "uuid", + "description": "Id of the image.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "tagId": { + "format": "uuid", + "description": "Id of the tag.", + "type": "string", + "readOnly": false, + "x-nullable": false + } + } + }, + "ImageTagCreateSummary": { + "type": "object", + "properties": { + "created": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageTagCreateEntry" + }, + "readOnly": false, + "x-nullable": true + }, + "duplicated": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageTagCreateEntry" + }, + "readOnly": false, + "x-nullable": true + }, + "exceeded": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageTagCreateEntry" + }, + "readOnly": false, + "x-nullable": true + } + } + }, + "ImageRegionCreateBatch": { + "description": "Batch of image region information to create.", + "type": "object", + "properties": { + "regions": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageRegionCreateEntry", + "x-nullable": false + }, + "readOnly": false + } + } + }, + "ImageRegionCreateEntry": { + "description": "Entry associating a region to an image.", + "required": [ + "imageId", + "tagId", + "left", + "top", + "width", + "height" + ], + "type": "object", + "properties": { + "imageId": { + "format": "uuid", + "description": "Id of the image.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "tagId": { + "format": "uuid", + "description": "Id of the tag associated with this region.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "left": { + "format": "float", + "description": "Coordinate of the left boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "top": { + "format": "float", + "description": "Coordinate of the top boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "width": { + "format": "float", + "description": "Width.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "height": { + "format": "float", + "description": "Height.", + "type": "number", + "readOnly": false, + "x-nullable": false + } + } + }, + "ImageRegionCreateSummary": { + "type": "object", + "properties": { + "created": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageRegionCreateResult" + }, + "readOnly": false, + "x-nullable": true + }, + "duplicated": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageRegionCreateEntry" + }, + "readOnly": false, + "x-nullable": true + }, + "exceeded": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageRegionCreateEntry" + }, + "readOnly": false, + "x-nullable": true + } + } + }, + "ImageRegionCreateResult": { + "required": [ + "tagId", + "left", + "top", + "width", + "height" + ], + "type": "object", + "properties": { + "imageId": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "regionId": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "tagName": { + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "created": { + "format": "date-time", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "tagId": { + "format": "uuid", + "description": "Id of the tag associated with this region.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "left": { + "format": "float", + "description": "Coordinate of the left boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "top": { + "format": "float", + "description": "Coordinate of the top boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "width": { + "format": "float", + "description": "Width.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "height": { + "format": "float", + "description": "Height.", + "type": "number", + "readOnly": false, + "x-nullable": false + } + } + }, + "Image": { + "description": "Image model to be sent as JSON.", + "type": "object", + "properties": { + "id": { + "format": "uuid", + "description": "Id of the image.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "created": { + "format": "date-time", + "description": "Date the image was created.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "width": { + "format": "int32", + "description": "Width of the image.", + "type": "integer", + "readOnly": true, + "x-nullable": false + }, + "height": { + "format": "int32", + "description": "Height of the image.", + "type": "integer", + "readOnly": true, + "x-nullable": false + }, + "resizedImageUri": { + "description": "The URI to the (resized) image used for training.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "thumbnailUri": { + "description": "The URI to the thumbnail of the original image.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "originalImageUri": { + "description": "The URI to the original uploaded image.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "tags": { + "description": "Tags associated with this image.", + "type": "array", + "items": { + "$ref": "#/definitions/ImageTag" + }, + "readOnly": true, + "x-nullable": true + }, + "regions": { + "description": "Regions associated with this image.", + "type": "array", + "items": { + "$ref": "#/definitions/ImageRegion" + }, + "readOnly": true, + "x-nullable": true + } + } + }, + "ImageTag": { + "type": "object", + "properties": { + "tagId": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "tagName": { + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "created": { + "format": "date-time", + "type": "string", + "readOnly": true, + "x-nullable": false + } + } + }, + "ImageRegion": { + "required": [ + "tagId", + "left", + "top", + "width", + "height" + ], + "type": "object", + "properties": { + "regionId": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "tagName": { + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "created": { + "format": "date-time", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "tagId": { + "format": "uuid", + "description": "Id of the tag associated with this region.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "left": { + "format": "float", + "description": "Coordinate of the left boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "top": { + "format": "float", + "description": "Coordinate of the top boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "width": { + "format": "float", + "description": "Width.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "height": { + "format": "float", + "description": "Height.", + "type": "number", + "readOnly": false, + "x-nullable": false + } + } + }, + "ImageCreateSummary": { + "type": "object", + "properties": { + "isBatchSuccessful": { + "description": "True if all of the images in the batch were created successfully, otherwise false.", + "type": "boolean", + "readOnly": true, + "x-nullable": false + }, + "images": { + "description": "List of the image creation results.", + "type": "array", + "items": { + "$ref": "#/definitions/ImageCreateResult", + "x-nullable": false + }, + "readOnly": true + } + } + }, + "ImageCreateResult": { + "type": "object", + "properties": { + "sourceUrl": { + "description": "Source URL of the image.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "status": { + "description": "Status of the image creation.", + "enum": [ + "OK", + "OKDuplicate", + "ErrorSource", + "ErrorImageFormat", + "ErrorImageSize", + "ErrorStorage", + "ErrorLimitExceed", + "ErrorTagLimitExceed", + "ErrorRegionLimitExceed", + "ErrorUnknown", + "ErrorNegativeAndRegularTagOnSameImage" + ], + "type": "string", + "readOnly": true, + "x-nullable": false, + "x-ms-enum": { + "name": "ImageCreateStatus", + "modelAsString": true + } + }, + "image": { + "$ref": "#/definitions/Image", + "description": "The image.", + "readOnly": true, + "x-nullable": false + } + } + }, + "ImageFileCreateBatch": { + "type": "object", + "properties": { + "images": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageFileCreateEntry", + "x-nullable": false + }, + "readOnly": false + }, + "tagIds": { + "type": "array", + "items": { + "format": "uuid", + "type": "string", + "x-nullable": false + }, + "readOnly": false + } + } + }, + "ImageFileCreateEntry": { + "type": "object", + "properties": { + "name": { + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "contents": { + "format": "byte", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "tagIds": { + "type": "array", + "items": { + "format": "uuid", + "type": "string", + "x-nullable": false + }, + "readOnly": false + }, + "regions": { + "type": "array", + "items": { + "$ref": "#/definitions/Region", + "x-nullable": false + }, + "readOnly": false + } + } + }, + "Region": { + "required": [ + "tagId", + "left", + "top", + "width", + "height" + ], + "type": "object", + "properties": { + "tagId": { + "format": "uuid", + "description": "Id of the tag associated with this region.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "left": { + "format": "float", + "description": "Coordinate of the left boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "top": { + "format": "float", + "description": "Coordinate of the top boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "width": { + "format": "float", + "description": "Width.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "height": { + "format": "float", + "description": "Height.", + "type": "number", + "readOnly": false, + "x-nullable": false + } + } + }, + "ImageUrlCreateBatch": { + "type": "object", + "properties": { + "images": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageUrlCreateEntry", + "x-nullable": false + }, + "readOnly": false + }, + "tagIds": { + "type": "array", + "items": { + "format": "uuid", + "type": "string", + "x-nullable": false + }, + "readOnly": false + } + } + }, + "ImageUrlCreateEntry": { + "required": [ + "url" + ], + "type": "object", + "properties": { + "url": { + "description": "Url of the image.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "tagIds": { + "type": "array", + "items": { + "format": "uuid", + "type": "string", + "x-nullable": false + }, + "readOnly": false + }, + "regions": { + "type": "array", + "items": { + "$ref": "#/definitions/Region", + "x-nullable": false + }, + "readOnly": false + } + } + }, + "ImageIdCreateBatch": { + "type": "object", + "properties": { + "images": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageIdCreateEntry", + "x-nullable": false + }, + "readOnly": false + }, + "tagIds": { + "type": "array", + "items": { + "format": "uuid", + "type": "string", + "x-nullable": false + }, + "readOnly": false + } + } + }, + "ImageIdCreateEntry": { + "type": "object", + "properties": { + "id": { + "format": "uuid", + "description": "Id of the image.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "tagIds": { + "type": "array", + "items": { + "format": "uuid", + "type": "string", + "x-nullable": false + }, + "readOnly": false + }, + "regions": { + "type": "array", + "items": { + "$ref": "#/definitions/Region", + "x-nullable": false + }, + "readOnly": false + } + } + }, + "ImageRegionProposal": { + "type": "object", + "properties": { + "projectId": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "imageId": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "proposals": { + "type": "array", + "items": { + "$ref": "#/definitions/RegionProposal", + "x-nullable": false + }, + "readOnly": true + } + } + }, + "RegionProposal": { + "type": "object", + "properties": { + "confidence": { + "format": "float", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "boundingBox": { + "$ref": "#/definitions/BoundingBox", + "readOnly": true, + "x-nullable": false + } + } + }, + "BoundingBox": { + "description": "Bounding box that defines a region of an image.", + "required": [ + "left", + "top", + "width", + "height" + ], + "type": "object", + "properties": { + "left": { + "format": "float", + "description": "Coordinate of the left boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "top": { + "format": "float", + "description": "Coordinate of the top boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "width": { + "format": "float", + "description": "Width.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "height": { + "format": "float", + "description": "Height.", + "type": "number", + "readOnly": false, + "x-nullable": false + } + } + }, + "ImageUrl": { + "description": "Image url.", + "required": [ + "url" + ], + "type": "object", + "properties": { + "url": { + "description": "Url of the image.", + "type": "string", + "readOnly": false, + "x-nullable": false + } + } + }, + "ImagePrediction": { + "description": "Result of an image prediction request.", + "type": "object", + "properties": { + "id": { + "format": "uuid", + "description": "Prediction Id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "project": { + "format": "uuid", + "description": "Project Id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "iteration": { + "format": "uuid", + "description": "Iteration Id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "created": { + "format": "date-time", + "description": "Date this prediction was created.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "predictions": { + "description": "List of predictions.", + "type": "array", + "items": { + "$ref": "#/definitions/Prediction", + "x-nullable": false + }, + "readOnly": true + } + } + }, + "Prediction": { + "description": "Prediction result.", + "type": "object", + "properties": { + "probability": { + "format": "float", + "description": "Probability of the tag.", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "tagId": { + "format": "uuid", + "description": "Id of the predicted tag.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "tagName": { + "description": "Name of the predicted tag.", + "type": "string", + "readOnly": true, + "x-nullable": true + }, + "boundingBox": { + "$ref": "#/definitions/BoundingBox", + "description": "Bounding box of the prediction.", + "readOnly": true, + "x-nullable": true + } + } + }, + "PredictionQueryToken": { + "type": "object", + "properties": { + "session": { + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "continuation": { + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "maxCount": { + "format": "int32", + "type": "integer", + "readOnly": false, + "x-nullable": false + }, + "orderBy": { + "enum": [ + "Newest", + "Oldest", + "Suggested" + ], + "type": "string", + "readOnly": false, + "x-nullable": false, + "x-ms-enum": { + "name": "OrderBy", + "modelAsString": true + } + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/definitions/PredictionQueryTag", + "x-nullable": false + }, + "readOnly": false + }, + "iterationId": { + "format": "uuid", + "type": "string", + "readOnly": false, + "x-nullable": true + }, + "startTime": { + "format": "date-time", + "type": "string", + "readOnly": false, + "x-nullable": true + }, + "endTime": { + "format": "date-time", + "type": "string", + "readOnly": false, + "x-nullable": true + }, + "application": { + "type": "string", + "readOnly": false, + "x-nullable": false + } + } + }, + "PredictionQueryTag": { + "type": "object", + "properties": { + "id": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "minThreshold": { + "format": "float", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "maxThreshold": { + "format": "float", + "type": "number", + "readOnly": true, + "x-nullable": false + } + } + }, + "PredictionQueryResult": { + "type": "object", + "properties": { + "token": { + "$ref": "#/definitions/PredictionQueryToken", + "readOnly": true, + "x-nullable": false + }, + "results": { + "type": "array", + "items": { + "$ref": "#/definitions/StoredImagePrediction", + "x-nullable": false + }, + "readOnly": true + } + } + }, + "StoredImagePrediction": { + "description": "result of an image classification request.", + "type": "object", + "properties": { + "resizedImageUri": { + "description": "The URI to the (resized) prediction image.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "thumbnailUri": { + "description": "The URI to the thumbnail of the original prediction image.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "originalImageUri": { + "description": "The URI to the original prediction image.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "domain": { + "format": "uuid", + "description": "Domain used for the prediction.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "id": { + "format": "uuid", + "description": "Prediction Id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "project": { + "format": "uuid", + "description": "Project Id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "iteration": { + "format": "uuid", + "description": "Iteration Id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "created": { + "format": "date-time", + "description": "Date this prediction was created.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "predictions": { + "description": "List of predictions.", + "type": "array", + "items": { + "$ref": "#/definitions/Prediction", + "x-nullable": false + }, + "readOnly": true + } + } + }, + "IterationPerformance": { + "description": "Represents the detailed performance data for a trained iteration.", + "type": "object", + "properties": { + "perTagPerformance": { + "description": "Gets the per-tag performance details for this iteration.", + "type": "array", + "items": { + "$ref": "#/definitions/TagPerformance", + "x-nullable": false + }, + "readOnly": true + }, + "precision": { + "format": "float", + "description": "Gets the precision.", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "precisionStdDeviation": { + "format": "float", + "description": "Gets the standard deviation for the precision.", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "recall": { + "format": "float", + "description": "Gets the recall.", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "recallStdDeviation": { + "format": "float", + "description": "Gets the standard deviation for the recall.", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "averagePrecision": { + "format": "float", + "description": "Gets the average precision when applicable.", + "type": "number", + "readOnly": true, + "x-nullable": true + } + } + }, + "TagPerformance": { + "description": "Represents performance data for a particular tag in a trained iteration.", + "type": "object", + "properties": { + "id": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "name": { + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "precision": { + "format": "float", + "description": "Gets the precision.", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "precisionStdDeviation": { + "format": "float", + "description": "Gets the standard deviation for the precision.", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "recall": { + "format": "float", + "description": "Gets the recall.", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "recallStdDeviation": { + "format": "float", + "description": "Gets the standard deviation for the recall.", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "averagePrecision": { + "format": "float", + "description": "Gets the average precision when applicable.", + "type": "number", + "readOnly": true, + "x-nullable": true + } + } + }, + "ImagePerformance": { + "description": "Image performance model.", + "type": "object", + "properties": { + "predictions": { + "type": "array", + "items": { + "$ref": "#/definitions/Prediction" + }, + "readOnly": true, + "x-nullable": true + }, + "id": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "created": { + "format": "date-time", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "width": { + "format": "int32", + "type": "integer", + "readOnly": true, + "x-nullable": false + }, + "height": { + "format": "int32", + "type": "integer", + "readOnly": true, + "x-nullable": false + }, + "imageUri": { + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "thumbnailUri": { + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageTag" + }, + "readOnly": true, + "x-nullable": true + }, + "regions": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageRegion" + }, + "readOnly": true, + "x-nullable": true + } + } + }, + "Project": { + "description": "Represents a project.", + "required": [ + "name", + "description", + "settings" + ], + "type": "object", + "properties": { + "id": { + "format": "uuid", + "description": "Gets the project id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "name": { + "description": "Gets or sets the name of the project.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "description": { + "description": "Gets or sets the description of the project.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "settings": { + "$ref": "#/definitions/ProjectSettings", + "description": "Gets or sets the project settings.", + "readOnly": false, + "x-nullable": false + }, + "created": { + "format": "date-time", + "description": "Gets the date this project was created.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "lastModified": { + "format": "date-time", + "description": "Gets the date this project was last modified.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "thumbnailUri": { + "description": "Gets the thumbnail url representing the image.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "drModeEnabled": { + "description": "Gets if the DR mode is on.", + "type": "boolean", + "readOnly": true, + "x-nullable": true + } + } + }, + "ProjectSettings": { + "description": "Represents settings associated with a project.", + "type": "object", + "properties": { + "domainId": { + "format": "uuid", + "description": "Gets or sets the id of the Domain to use with this project.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "classificationType": { + "description": "Gets or sets the classification type of the project.", + "enum": [ + "Multiclass", + "Multilabel" + ], + "type": "string", + "readOnly": false, + "x-nullable": true, + "x-ms-enum": { + "name": "Classifier", + "modelAsString": true + } + }, + "targetExportPlatforms": { + "description": "A list of ExportPlatform that the trained model should be able to support.", + "type": "array", + "items": { + "enum": [ + "CoreML", + "TensorFlow", + "DockerFile", + "ONNX", + "VAIDK" + ], + "type": "string", + "x-nullable": false + }, + "readOnly": false + } + } + }, + "Iteration": { + "description": "Iteration model to be sent over JSON.", + "required": [ + "name" + ], + "type": "object", + "properties": { + "id": { + "format": "uuid", + "description": "Gets the id of the iteration.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "name": { + "description": "Gets or sets the name of the iteration.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "status": { + "description": "Gets the current iteration status.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "created": { + "format": "date-time", + "description": "Gets the time this iteration was completed.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "lastModified": { + "format": "date-time", + "description": "Gets the time this iteration was last modified.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "trainedAt": { + "format": "date-time", + "description": "Gets the time this iteration was last modified.", + "type": "string", + "readOnly": true, + "x-nullable": true + }, + "projectId": { + "format": "uuid", + "description": "Gets the project id of the iteration.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "exportable": { + "description": "Whether the iteration can be exported to another format for download.", + "type": "boolean", + "readOnly": true, + "x-nullable": false + }, + "exportableTo": { + "description": "A set of platforms this iteration can export to.", + "type": "array", + "items": { + "enum": [ + "CoreML", + "TensorFlow", + "DockerFile", + "ONNX", + "VAIDK" + ], + "type": "string", + "x-nullable": false + }, + "readOnly": true + }, + "domainId": { + "format": "uuid", + "description": "Get or sets a guid of the domain the iteration has been trained on.", + "type": "string", + "readOnly": true, + "x-nullable": true + }, + "classificationType": { + "description": "Gets the classification type of the project.", + "enum": [ + "Multiclass", + "Multilabel" + ], + "type": "string", + "readOnly": true, + "x-nullable": true, + "x-ms-enum": { + "name": "Classifier", + "modelAsString": true + } + }, + "trainingType": { + "description": "Gets the training type of the iteration.", + "enum": [ + "Regular", + "Advanced" + ], + "type": "string", + "readOnly": true, + "x-nullable": false, + "x-ms-enum": { + "name": "TrainingType", + "modelAsString": true + } + }, + "reservedBudgetInHours": { + "format": "int32", + "description": "Gets the reserved advanced training budget for the iteration.", + "type": "integer", + "readOnly": true, + "x-nullable": false + }, + "publishName": { + "description": "Name of the published model.", + "type": "string", + "readOnly": true, + "x-nullable": true + }, + "originalPublishResourceId": { + "description": "Resource Provider Id this iteration was originally published to.", + "type": "string", + "readOnly": true, + "x-nullable": true + } + } + }, + "Export": { + "type": "object", + "properties": { + "platform": { + "description": "Platform of the export.", + "enum": [ + "CoreML", + "TensorFlow", + "DockerFile", + "ONNX", + "VAIDK" + ], + "type": "string", + "readOnly": true, + "x-nullable": false, + "x-ms-enum": { + "name": "ExportPlatform", + "modelAsString": true + } + }, + "status": { + "description": "Status of the export.", + "enum": [ + "Exporting", + "Failed", + "Done" + ], + "type": "string", + "readOnly": true, + "x-nullable": false, + "x-ms-enum": { + "name": "ExportStatus", + "modelAsString": true + } + }, + "downloadUri": { + "description": "URI used to download the model.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "flavor": { + "description": "Flavor of the export.", + "enum": [ + "Linux", + "Windows", + "ONNX10", + "ONNX12", + "ARM" + ], + "type": "string", + "readOnly": true, + "x-nullable": true, + "x-ms-enum": { + "name": "ExportFlavor", + "modelAsString": true + } + }, + "newerVersionAvailable": { + "description": "Indicates an updated version of the export package is available and should be re-exported for the latest changes.", + "type": "boolean", + "readOnly": true, + "x-nullable": false + } + } + }, + "Tag": { + "description": "Represents a Tag.", + "required": [ + "name", + "description", + "type" + ], + "type": "object", + "properties": { + "id": { + "format": "uuid", + "description": "Gets the Tag ID.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "name": { + "description": "Gets or sets the name of the tag.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "description": { + "description": "Gets or sets the description of the tag.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "type": { + "description": "Gets or sets the type of the tag.", + "enum": [ + "Regular", + "Negative" + ], + "type": "string", + "readOnly": false, + "x-nullable": false, + "x-ms-enum": { + "name": "TagType", + "modelAsString": true + } + }, + "imageCount": { + "format": "int32", + "description": "Gets the number of images with this tag.", + "type": "integer", + "readOnly": true, + "x-nullable": false + } + } + }, + "CustomVisionError": { + "required": [ + "code", + "message" + ], + "type": "object", + "properties": { + "code": { + "description": "The error code.", + "enum": [ + "NoError", + "BadRequest", + "BadRequestExceededBatchSize", + "BadRequestNotSupported", + "BadRequestInvalidIds", + "BadRequestProjectName", + "BadRequestProjectNameNotUnique", + "BadRequestProjectDescription", + "BadRequestProjectUnknownDomain", + "BadRequestProjectUnknownClassification", + "BadRequestProjectUnsupportedDomainTypeChange", + "BadRequestProjectUnsupportedExportPlatform", + "BadRequestIterationName", + "BadRequestIterationNameNotUnique", + "BadRequestIterationDescription", + "BadRequestIterationIsNotTrained", + "BadRequestWorkspaceCannotBeModified", + "BadRequestWorkspaceNotDeletable", + "BadRequestTagName", + "BadRequestTagNameNotUnique", + "BadRequestTagDescription", + "BadRequestTagType", + "BadRequestMultipleNegativeTag", + "BadRequestImageTags", + "BadRequestImageRegions", + "BadRequestNegativeAndRegularTagOnSameImage", + "BadRequestRequiredParamIsNull", + "BadRequestIterationIsPublished", + "BadRequestInvalidPublishName", + "BadRequestInvalidPublishTarget", + "BadRequestUnpublishFailed", + "BadRequestIterationNotPublished", + "BadRequestSubscriptionApi", + "BadRequestExceedProjectLimit", + "BadRequestExceedIterationPerProjectLimit", + "BadRequestExceedTagPerProjectLimit", + "BadRequestExceedTagPerImageLimit", + "BadRequestExceededQuota", + "BadRequestCannotMigrateProjectWithName", + "BadRequestNotLimitedTrial", + "BadRequestImageBatch", + "BadRequestImageStream", + "BadRequestImageUrl", + "BadRequestImageFormat", + "BadRequestImageSizeBytes", + "BadRequestImageExceededCount", + "BadRequestTrainingNotNeeded", + "BadRequestTrainingNotNeededButTrainingPipelineUpdated", + "BadRequestTrainingValidationFailed", + "BadRequestClassificationTrainingValidationFailed", + "BadRequestMultiClassClassificationTrainingValidationFailed", + "BadRequestMultiLabelClassificationTrainingValidationFailed", + "BadRequestDetectionTrainingValidationFailed", + "BadRequestTrainingAlreadyInProgress", + "BadRequestDetectionTrainingNotAllowNegativeTag", + "BadRequestInvalidEmailAddress", + "BadRequestDomainNotSupportedForAdvancedTraining", + "BadRequestExportPlatformNotSupportedForAdvancedTraining", + "BadRequestReservedBudgetInHoursNotEnoughForAdvancedTraining", + "BadRequestExportValidationFailed", + "BadRequestExportAlreadyInProgress", + "BadRequestPredictionIdsMissing", + "BadRequestPredictionIdsExceededCount", + "BadRequestPredictionTagsExceededCount", + "BadRequestPredictionResultsExceededCount", + "BadRequestPredictionInvalidApplicationName", + "BadRequestPredictionInvalidQueryParameters", + "BadRequestInvalid", + "UnsupportedMediaType", + "Forbidden", + "ForbiddenUser", + "ForbiddenUserResource", + "ForbiddenUserSignupDisabled", + "ForbiddenUserSignupAllowanceExceeded", + "ForbiddenUserDoesNotExist", + "ForbiddenUserDisabled", + "ForbiddenUserInsufficientCapability", + "ForbiddenDRModeEnabled", + "ForbiddenInvalid", + "NotFound", + "NotFoundProject", + "NotFoundProjectDefaultIteration", + "NotFoundIteration", + "NotFoundIterationPerformance", + "NotFoundTag", + "NotFoundImage", + "NotFoundDomain", + "NotFoundApimSubscription", + "NotFoundInvalid", + "Conflict", + "ConflictInvalid", + "ErrorUnknown", + "ErrorProjectInvalidWorkspace", + "ErrorProjectInvalidPipelineConfiguration", + "ErrorProjectInvalidDomain", + "ErrorProjectTrainingRequestFailed", + "ErrorProjectExportRequestFailed", + "ErrorFeaturizationServiceUnavailable", + "ErrorFeaturizationQueueTimeout", + "ErrorFeaturizationInvalidFeaturizer", + "ErrorFeaturizationAugmentationUnavailable", + "ErrorFeaturizationUnrecognizedJob", + "ErrorFeaturizationAugmentationError", + "ErrorExporterInvalidPlatform", + "ErrorExporterInvalidFeaturizer", + "ErrorExporterInvalidClassifier", + "ErrorPredictionServiceUnavailable", + "ErrorPredictionModelNotFound", + "ErrorPredictionModelNotCached", + "ErrorPrediction", + "ErrorPredictionStorage", + "ErrorRegionProposal", + "ErrorInvalid" + ], + "type": "string", + "x-ms-enum": { + "name": "CustomVisionErrorCodes", + "modelAsString": true + } + }, + "message": { + "description": "A message explaining the error reported by the service.", + "type": "string" + } + } + } + }, + "parameters": { + "ApiKey": { + "name": "Training-Key", + "in": "header", + "description": "API key.", + "required": true, + "type": "string", + "x-ms-client-name": "ApiKey", + "x-ms-parameter-location": "client" + }, + "Endpoint": { + "name": "Endpoint", + "in": "path", + "description": "Supported Cognitive Services endpoints.", + "required": true, + "type": "string", + "x-ms-parameter-location": "client", + "x-ms-skip-url-encoding": true + } + }, + "x-ms-parameterized-host": { + "hostTemplate": "{Endpoint}", + "useSchemePrefix": false, + "parameters": [ + { + "$ref": "#/parameters/Endpoint" + } + ] + } +} From b349d336cec324e06231ba3ccdacaf8016dad08a Mon Sep 17 00:00:00 2001 From: Andrew Reddish Date: Fri, 12 Jul 2019 21:40:40 -0700 Subject: [PATCH 2/7] Sort paths and definitions --- .../Training/stable/v3.1/Training.json | 8792 ++++++++--------- 1 file changed, 4396 insertions(+), 4396 deletions(-) diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json index f9d9fd805f94..0526b777b789 100644 --- a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json @@ -1,4518 +1,4518 @@ { - "swagger": "2.0", - "info": { - "version": "3.0", - "title": "Custom Vision Training Client" - }, - "host": "southcentralus.api.cognitive.microsoft.com", - "basePath": "/customvision/v3.0/training", - "schemes": [ - "https" - ], - "paths": { - "/domains": { - "get": { - "tags": [ - "DomainsApi" - ], - "summary": "Get a list of the available domains.", - "operationId": "GetDomains", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/Domain" - } + "swagger": "2.0", + "info": { + "version": "3.0", + "title": "Custom Vision Training Client" + }, + "host": "southcentralus.api.cognitive.microsoft.com", + "basePath": "/customvision/v3.0/training", + "schemes": [ + "https" + ], + "paths": { + "/domains": { + "get": { + "tags": [ + "DomainsApi" + ], + "summary": "Get a list of the available domains.", + "operationId": "GetDomains", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Domain" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetDomains request": { + "$ref": "./examples/GetDomains.json" + } + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "/domains/{domainId}": { + "get": { + "tags": [ + "DomainsApi" + ], + "summary": "Get information about a specific domain.", + "operationId": "GetDomain", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "domainId", + "in": "path", + "description": "The id of the domain to get information about.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Domain" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetDomain request": { + "$ref": "./examples/GetDomain.json" + } + } } - } }, - "x-ms-examples": { - "Successful GetDomains request": { - "$ref": "./examples/GetDomains.json" - } - } - } - }, - "/domains/{domainId}": { - "get": { - "tags": [ - "DomainsApi" - ], - "summary": "Get information about a specific domain.", - "operationId": "GetDomain", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "domainId", - "in": "path", - "description": "The id of the domain to get information about.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/Domain" + "/projects": { + "get": { + "tags": [ + "ProjectApi" + ], + "summary": "Get your projects.", + "operationId": "GetProjects", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Project" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetProjects request": { + "$ref": "./examples/GetProjects.json" + } + } + }, + "post": { + "tags": [ + "ProjectApi" + ], + "summary": "Create a project.", + "operationId": "CreateProject", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "name", + "in": "query", + "description": "Name of the project.", + "required": true, + "type": "string" + }, + { + "name": "description", + "in": "query", + "description": "The description of the project.", + "required": false, + "type": "string" + }, + { + "name": "domainId", + "in": "query", + "description": "The id of the domain to use for this project. Defaults to General.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "name": "classificationType", + "in": "query", + "description": "The type of classifier to create for this project.", + "required": false, + "type": "string", + "enum": [ + "Multiclass", + "Multilabel" + ] + }, + { + "name": "targetExportPlatforms", + "in": "query", + "description": "List of platforms the trained model is intending exporting to.", + "required": false, + "type": "array", + "items": { + "type": "string", + "enum": [ + "CoreML", + "TensorFlow", + "DockerFile", + "ONNX", + "VAIDK" + ] + }, + "collectionFormat": "csv" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Project" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful CreateProject request": { + "$ref": "./examples/CreateProject.json" + } + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "/projects/{projectId}": { + "get": { + "tags": [ + "ProjectApi" + ], + "summary": "Get a specific project.", + "operationId": "GetProject", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The id of the project to get.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Project" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetProject request": { + "$ref": "./examples/GetProject.json" + } + } + }, + "delete": { + "tags": [ + "ProjectApi" + ], + "summary": "Delete a specific project.", + "operationId": "DeleteProject", + "consumes": [], + "produces": [], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful DeleteProject request": { + "$ref": "./examples/DeleteProject.json" + } + } + }, + "patch": { + "tags": [ + "ProjectApi" + ], + "summary": "Update a specific project.", + "operationId": "UpdateProject", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The id of the project to update.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "updatedProject", + "in": "body", + "description": "The updated project model.", + "required": true, + "schema": { + "$ref": "#/definitions/Project" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Project" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful UpdateProject request": { + "$ref": "./examples/UpdateProject.json" + } + } } - } }, - "x-ms-examples": { - "Successful GetDomain request": { - "$ref": "./examples/GetDomain.json" - } - } - } - }, - "/projects/{projectId}/images/tagged/count": { - "get": { - "tags": [ - "ImageApi" - ], - "summary": "Gets the number of images tagged with the provided {tagIds}.", - "description": "The filtering is on an and/or relationship. For example, if the provided tag ids are for the \"Dog\" and\r\n\"Cat\" tags, then only images tagged with Dog and/or Cat will be returned", - "operationId": "GetTaggedImageCount", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "iterationId", - "in": "query", - "description": "The iteration id. Defaults to workspace.", - "required": false, - "type": "string", - "format": "uuid" - }, - { - "name": "tagIds", - "in": "query", - "description": "A list of tags ids to filter the images to count. Defaults to all tags when null.", - "required": false, - "type": "array", - "items": { - "type": "string", - "format": "uuid", - "x-nullable": false + "/projects/{projectId}/images": { + "post": { + "tags": [ + "ImageApi" + ], + "summary": "Add the provided images to the set of training images.", + "description": "This API accepts body content as multipart/form-data and application/octet-stream. When using multipart\r\nmultiple image files can be sent at once, with a maximum of 64 files", + "operationId": "CreateImagesFromData", + "consumes": [ + "multipart/form-data", + "application/octet-stream" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "tagIds", + "in": "query", + "description": "The tags ids with which to tag each image. Limited to 20.", + "required": false, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 20, + "minItems": 0 + }, + { + "name": "imageData", + "in": "formData", + "description": "Binary image data. Supported formats are JPEG, GIF, PNG, and BMP. Supports images up to 6MB.", + "required": true, + "type": "file" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImageCreateSummary" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful CreateImagesFromData request": { + "$ref": "./examples/CreateImagesFromData.json" + } + } }, - "collectionFormat": "csv" - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "format": "int32", - "type": "integer" + "delete": { + "tags": [ + "ImageApi" + ], + "summary": "Delete images from the set of training images.", + "operationId": "DeleteImages", + "consumes": [], + "produces": [], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "imageIds", + "in": "query", + "description": "Ids of the images to be deleted. Limited to 256 images per batch.", + "required": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 256, + "minItems": 0 + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful DeleteImages request": { + "$ref": "./examples/DeleteImages.json" + } + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "/projects/{projectId}/images/files": { + "post": { + "tags": [ + "ImageApi" + ], + "summary": "Add the provided batch of images to the set of training images.", + "description": "This API accepts a batch of files, and optionally tags, to create images. There is a limit of 64 images and 20 tags.", + "operationId": "CreateImagesFromFiles", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "batch", + "in": "body", + "description": "The batch of image files to add. Limited to 64 images and 20 tags per batch.", + "required": true, + "schema": { + "$ref": "#/definitions/ImageFileCreateBatch" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImageCreateSummary" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful CreateImagesFromFiles request": { + "$ref": "./examples/CreateImagesFromFiles.json" + } + } } - } }, - "x-ms-examples": { - "Successful GetTaggedImageCount request": { - "$ref": "./examples/GetTaggedImageCount.json" - } - } - } - }, - "/projects/{projectId}/images/untagged/count": { - "get": { - "tags": [ - "ImageApi" - ], - "summary": "Gets the number of untagged images.", - "description": "This API returns the images which have no tags for a given project and optionally an iteration. If no iteration is specified the\r\ncurrent workspace is used.", - "operationId": "GetUntaggedImageCount", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "iterationId", - "in": "query", - "description": "The iteration id. Defaults to workspace.", - "required": false, - "type": "string", - "format": "uuid" - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "format": "int32", - "type": "integer" + "/projects/{projectId}/images/id": { + "get": { + "tags": [ + "ImageApi" + ], + "summary": "Get images by id for a given project iteration.", + "description": "This API will return a set of Images for the specified tags and optionally iteration. If no iteration is specified the\r\ncurrent workspace is used.", + "operationId": "GetImagesByIds", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "imageIds", + "in": "query", + "description": "The list of image ids to retrieve. Limited to 256.", + "required": false, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 256, + "minItems": 0 + }, + { + "name": "iterationId", + "in": "query", + "description": "The iteration id. Defaults to workspace.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Image" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetImagesByIds request": { + "$ref": "./examples/GetImagesByIds.json" + } + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "/projects/{projectId}/images/predictions": { + "post": { + "tags": [ + "ImageApi" + ], + "summary": "Add the specified predicted images to the set of training images.", + "description": "This API creates a batch of images from predicted images specified. There is a limit of 64 images and 20 tags.", + "operationId": "CreateImagesFromPredictions", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "batch", + "in": "body", + "description": "Image and tag ids. Limited to 64 images and 20 tags per batch.", + "required": true, + "schema": { + "$ref": "#/definitions/ImageIdCreateBatch" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImageCreateSummary" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful CreateImagesFromPredictions request": { + "$ref": "./examples/CreateImagesFromPredictions.json" + } + } } - } }, - "x-ms-examples": { - "Successful GetUntaggedImageCount request": { - "$ref": "./examples/GetUntaggedImageCount.json" - } - } - } - }, - "/projects/{projectId}/images/tags": { - "post": { - "tags": [ - "ImageApi" - ], - "summary": "Associate a set of images with a set of tags.", - "operationId": "CreateImageTags", - "consumes": [ - "application/json", - "application/xml", - "text/xml", - "application/x-www-form-urlencoded" - ], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "batch", - "in": "body", - "description": "Batch of image tags. Limited to 128 tags per batch.", - "required": true, - "schema": { - "$ref": "#/definitions/ImageTagCreateBatch" + "/projects/{projectId}/images/regions": { + "post": { + "tags": [ + "ImageApi" + ], + "summary": "Create a set of image regions.", + "description": "This API accepts a batch of image regions, and optionally tags, to update existing images with region information.\r\nThere is a limit of 64 entries in the batch.", + "operationId": "CreateImageRegions", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "batch", + "in": "body", + "description": "Batch of image regions which include a tag and bounding box. Limited to 64.", + "required": true, + "schema": { + "$ref": "#/definitions/ImageRegionCreateBatch" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImageRegionCreateSummary" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful CreateImageRegions request": { + "$ref": "./examples/CreateImageRegions.json" + } + } + }, + "delete": { + "tags": [ + "ImageApi" + ], + "summary": "Delete a set of image regions.", + "operationId": "DeleteImageRegions", + "consumes": [], + "produces": [], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "regionIds", + "in": "query", + "description": "Regions to delete. Limited to 64.", + "required": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 64, + "minItems": 0 + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful DeleteImageRegions request": { + "$ref": "./examples/DeleteImageRegions.json" + } + } } - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/ImageTagCreateSummary" + }, + "/projects/{projectId}/images/tagged": { + "get": { + "tags": [ + "ImageApi" + ], + "summary": "Get tagged images for a given project iteration.", + "description": "This API supports batching and range selection. By default it will only return first 50 images matching images.\r\nUse the {take} and {skip} parameters to control how many images to return in a given batch.\r\nThe filtering is on an and/or relationship. For example, if the provided tag ids are for the \"Dog\" and\r\n\"Cat\" tags, then only images tagged with Dog and/or Cat will be returned", + "operationId": "GetTaggedImages", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "query", + "description": "The iteration id. Defaults to workspace.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "name": "tagIds", + "in": "query", + "description": "A list of tags ids to filter the images. Defaults to all tagged images when null. Limited to 20.", + "required": false, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 20, + "minItems": 0 + }, + { + "name": "orderBy", + "in": "query", + "description": "The ordering. Defaults to newest.", + "required": false, + "type": "string", + "enum": [ + "Newest", + "Oldest" + ] + }, + { + "name": "take", + "in": "query", + "description": "Maximum number of images to return. Defaults to 50, limited to 256.", + "required": false, + "type": "integer", + "format": "int32", + "default": 50, + "maximum": 256, + "minimum": 0 + }, + { + "name": "skip", + "in": "query", + "description": "Number of images to skip before beginning the image batch. Defaults to 0.", + "required": false, + "type": "integer", + "format": "int32", + "default": 0 + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Image" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetTaggedImages request": { + "$ref": "./examples/GetTaggedImages.json" + } + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "/projects/{projectId}/images/tagged/count": { + "get": { + "tags": [ + "ImageApi" + ], + "summary": "Gets the number of images tagged with the provided {tagIds}.", + "description": "The filtering is on an and/or relationship. For example, if the provided tag ids are for the \"Dog\" and\r\n\"Cat\" tags, then only images tagged with Dog and/or Cat will be returned", + "operationId": "GetTaggedImageCount", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "query", + "description": "The iteration id. Defaults to workspace.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "name": "tagIds", + "in": "query", + "description": "A list of tags ids to filter the images to count. Defaults to all tags when null.", + "required": false, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "format": "int32", + "type": "integer" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetTaggedImageCount request": { + "$ref": "./examples/GetTaggedImageCount.json" + } + } } - } }, - "x-ms-examples": { - "Successful CreateImageTags request": { - "$ref": "./examples/CreateImageTags.json" - } - } - }, - "delete": { - "tags": [ - "ImageApi" - ], - "summary": "Remove a set of tags from a set of images.", - "operationId": "DeleteImageTags", - "consumes": [], - "produces": [], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "imageIds", - "in": "query", - "description": "Image ids. Limited to 64 images.", - "required": true, - "type": "array", - "items": { - "type": "string", - "format": "uuid", - "x-nullable": false - }, - "collectionFormat": "csv", - "maxItems": 64, - "minItems": 0 - }, - { - "name": "tagIds", - "in": "query", - "description": "Tags to be deleted from the specified images. Limited to 20 tags.", - "required": true, - "type": "array", - "items": { - "type": "string", - "format": "uuid", - "x-nullable": false + "/projects/{projectId}/images/tags": { + "post": { + "tags": [ + "ImageApi" + ], + "summary": "Associate a set of images with a set of tags.", + "operationId": "CreateImageTags", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "batch", + "in": "body", + "description": "Batch of image tags. Limited to 128 tags per batch.", + "required": true, + "schema": { + "$ref": "#/definitions/ImageTagCreateBatch" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImageTagCreateSummary" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful CreateImageTags request": { + "$ref": "./examples/CreateImageTags.json" + } + } }, - "collectionFormat": "csv", - "maxItems": 20, - "minItems": 0 - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "204": { - "description": "No Content" - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + "delete": { + "tags": [ + "ImageApi" + ], + "summary": "Remove a set of tags from a set of images.", + "operationId": "DeleteImageTags", + "consumes": [], + "produces": [], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "imageIds", + "in": "query", + "description": "Image ids. Limited to 64 images.", + "required": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 64, + "minItems": 0 + }, + { + "name": "tagIds", + "in": "query", + "description": "Tags to be deleted from the specified images. Limited to 20 tags.", + "required": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 20, + "minItems": 0 + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful DeleteImageTags request": { + "$ref": "./examples/DeleteImageTags.json" + } + } } - } }, - "x-ms-examples": { - "Successful DeleteImageTags request": { - "$ref": "./examples/DeleteImageTags.json" - } - } - } - }, - "/projects/{projectId}/images/regions": { - "post": { - "tags": [ - "ImageApi" - ], - "summary": "Create a set of image regions.", - "description": "This API accepts a batch of image regions, and optionally tags, to update existing images with region information.\r\nThere is a limit of 64 entries in the batch.", - "operationId": "CreateImageRegions", - "consumes": [ - "application/json", - "application/xml", - "text/xml", - "application/x-www-form-urlencoded" - ], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "batch", - "in": "body", - "description": "Batch of image regions which include a tag and bounding box. Limited to 64.", - "required": true, - "schema": { - "$ref": "#/definitions/ImageRegionCreateBatch" + "/projects/{projectId}/images/untagged": { + "get": { + "tags": [ + "ImageApi" + ], + "summary": "Get untagged images for a given project iteration.", + "description": "This API supports batching and range selection. By default it will only return first 50 images matching images.\r\nUse the {take} and {skip} parameters to control how many images to return in a given batch.", + "operationId": "GetUntaggedImages", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "query", + "description": "The iteration id. Defaults to workspace.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "name": "orderBy", + "in": "query", + "description": "The ordering. Defaults to newest.", + "required": false, + "type": "string", + "enum": [ + "Newest", + "Oldest" + ] + }, + { + "name": "take", + "in": "query", + "description": "Maximum number of images to return. Defaults to 50, limited to 256.", + "required": false, + "type": "integer", + "format": "int32", + "default": 50, + "maximum": 256, + "minimum": 0 + }, + { + "name": "skip", + "in": "query", + "description": "Number of images to skip before beginning the image batch. Defaults to 0.", + "required": false, + "type": "integer", + "format": "int32", + "default": 0 + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Image" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetUntaggedImages request": { + "$ref": "./examples/GetUntaggedImages.json" + } + } + } + }, + "/projects/{projectId}/images/untagged/count": { + "get": { + "tags": [ + "ImageApi" + ], + "summary": "Gets the number of untagged images.", + "description": "This API returns the images which have no tags for a given project and optionally an iteration. If no iteration is specified the\r\ncurrent workspace is used.", + "operationId": "GetUntaggedImageCount", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "query", + "description": "The iteration id. Defaults to workspace.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "format": "int32", + "type": "integer" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetUntaggedImageCount request": { + "$ref": "./examples/GetUntaggedImageCount.json" + } + } } - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/ImageRegionCreateSummary" + }, + "/projects/{projectId}/images/urls": { + "post": { + "tags": [ + "ImageApi" + ], + "summary": "Add the provided images urls to the set of training images.", + "description": "This API accepts a batch of urls, and optionally tags, to create images. There is a limit of 64 images and 20 tags.", + "operationId": "CreateImagesFromUrls", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "batch", + "in": "body", + "description": "Image urls and tag ids. Limited to 64 images and 20 tags per batch.", + "required": true, + "schema": { + "$ref": "#/definitions/ImageUrlCreateBatch" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImageCreateSummary" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful CreateImagesFromUrls request": { + "$ref": "./examples/CreateImagesFromUrls.json" + } + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "/projects/{projectId}/images/{imageId}/regionproposals": { + "post": { + "tags": [ + "ImageRegionProposalApi" + ], + "summary": "Get region proposals for an image. Returns empty array if no proposals are found.", + "description": "This API will get region proposals for an image along with confidences for the region. It returns an empty array if no proposals are found.", + "operationId": "GetImageRegionProposals", + "consumes": [], + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "imageId", + "in": "path", + "description": "The image id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImageRegionProposal" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetImageRegionProposals request": { + "$ref": "./examples/GetImageRegionProposals.json" + } + } } - } }, - "x-ms-examples": { - "Successful CreateImageRegions request": { - "$ref": "./examples/CreateImageRegions.json" - } - } - }, - "delete": { - "tags": [ - "ImageApi" - ], - "summary": "Delete a set of image regions.", - "operationId": "DeleteImageRegions", - "consumes": [], - "produces": [], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "regionIds", - "in": "query", - "description": "Regions to delete. Limited to 64.", - "required": true, - "type": "array", - "items": { - "type": "string", - "format": "uuid", - "x-nullable": false + "/projects/{projectId}/iterations": { + "get": { + "tags": [ + "ProjectApi" + ], + "summary": "Get iterations for the project.", + "operationId": "GetIterations", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Iteration" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetIterations request": { + "$ref": "./examples/GetIterations.json" + } + } + } + }, + "/projects/{projectId}/iterations/{iterationId}": { + "get": { + "tags": [ + "ProjectApi" + ], + "summary": "Get a specific iteration.", + "operationId": "GetIteration", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The id of the project the iteration belongs to.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "The id of the iteration to get.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Iteration" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetIteration request": { + "$ref": "./examples/GetIteration.json" + } + } }, - "collectionFormat": "csv", - "maxItems": 64, - "minItems": 0 - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "204": { - "description": "No Content" - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + "delete": { + "tags": [ + "ProjectApi" + ], + "summary": "Delete a specific iteration of a project.", + "operationId": "DeleteIteration", + "consumes": [], + "produces": [], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "The iteration id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful DeleteIteration request": { + "$ref": "./examples/DeleteIteration.json" + } + } + }, + "patch": { + "tags": [ + "ProjectApi" + ], + "summary": "Update a specific iteration.", + "operationId": "UpdateIteration", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "Project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "Iteration id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "updatedIteration", + "in": "body", + "description": "The updated iteration model.", + "required": true, + "schema": { + "$ref": "#/definitions/Iteration" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Iteration" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful UpdateIteration request": { + "$ref": "./examples/UpdateIteration.json" + } + } } - } }, - "x-ms-examples": { - "Successful DeleteImageRegions request": { - "$ref": "./examples/DeleteImageRegions.json" - } - } - } - }, - "/projects/{projectId}/images/tagged": { - "get": { - "tags": [ - "ImageApi" - ], - "summary": "Get tagged images for a given project iteration.", - "description": "This API supports batching and range selection. By default it will only return first 50 images matching images.\r\nUse the {take} and {skip} parameters to control how many images to return in a given batch.\r\nThe filtering is on an and/or relationship. For example, if the provided tag ids are for the \"Dog\" and\r\n\"Cat\" tags, then only images tagged with Dog and/or Cat will be returned", - "operationId": "GetTaggedImages", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "iterationId", - "in": "query", - "description": "The iteration id. Defaults to workspace.", - "required": false, - "type": "string", - "format": "uuid" - }, - { - "name": "tagIds", - "in": "query", - "description": "A list of tags ids to filter the images. Defaults to all tagged images when null. Limited to 20.", - "required": false, - "type": "array", - "items": { - "type": "string", - "format": "uuid", - "x-nullable": false + "/projects/{projectId}/iterations/{iterationId}/export": { + "get": { + "tags": [ + "ProjectApi" + ], + "summary": "Get the list of exports for a specific iteration.", + "operationId": "GetExports", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "The iteration id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Export" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetExports request": { + "$ref": "./examples/GetExports.json" + } + } }, - "collectionFormat": "csv", - "maxItems": 20, - "minItems": 0 - }, - { - "name": "orderBy", - "in": "query", - "description": "The ordering. Defaults to newest.", - "required": false, - "type": "string", - "enum": [ - "Newest", - "Oldest" - ] - }, - { - "name": "take", - "in": "query", - "description": "Maximum number of images to return. Defaults to 50, limited to 256.", - "required": false, - "type": "integer", - "format": "int32", - "default": 50, - "maximum": 256, - "minimum": 0 - }, - { - "name": "skip", - "in": "query", - "description": "Number of images to skip before beginning the image batch. Defaults to 0.", - "required": false, - "type": "integer", - "format": "int32", - "default": 0 - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/Image" - } + "post": { + "tags": [ + "ProjectApi" + ], + "summary": "Export a trained iteration.", + "operationId": "ExportIteration", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "The iteration id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "platform", + "in": "query", + "description": "The target platform.", + "required": true, + "type": "string", + "enum": [ + "CoreML", + "TensorFlow", + "DockerFile", + "ONNX", + "VAIDK" + ] + }, + { + "name": "flavor", + "in": "query", + "description": "The flavor of the target platform.", + "required": false, + "type": "string", + "enum": [ + "Linux", + "Windows", + "ONNX10", + "ONNX12", + "ARM" + ] + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Export" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful ExportIteration request": { + "$ref": "./examples/ExportIteration.json" + } + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "/projects/{projectId}/iterations/{iterationId}/performance": { + "get": { + "tags": [ + "ProjectApi" + ], + "summary": "Get detailed performance information about an iteration.", + "operationId": "GetIterationPerformance", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The id of the project the iteration belongs to.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "The id of the iteration to get.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "threshold", + "in": "query", + "description": "The threshold used to determine true predictions.", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "overlapThreshold", + "in": "query", + "description": "If applicable, the bounding box overlap threshold used to determine true predictions.", + "required": false, + "type": "number", + "format": "float" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/IterationPerformance" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetIterationPerformance request": { + "$ref": "./examples/GetIterationPerformance.json" + } + } } - } }, - "x-ms-examples": { - "Successful GetTaggedImages request": { - "$ref": "./examples/GetTaggedImages.json" - } - } - } - }, - "/projects/{projectId}/images/untagged": { - "get": { - "tags": [ - "ImageApi" - ], - "summary": "Get untagged images for a given project iteration.", - "description": "This API supports batching and range selection. By default it will only return first 50 images matching images.\r\nUse the {take} and {skip} parameters to control how many images to return in a given batch.", - "operationId": "GetUntaggedImages", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "iterationId", - "in": "query", - "description": "The iteration id. Defaults to workspace.", - "required": false, - "type": "string", - "format": "uuid" - }, - { - "name": "orderBy", - "in": "query", - "description": "The ordering. Defaults to newest.", - "required": false, - "type": "string", - "enum": [ - "Newest", - "Oldest" - ] - }, - { - "name": "take", - "in": "query", - "description": "Maximum number of images to return. Defaults to 50, limited to 256.", - "required": false, - "type": "integer", - "format": "int32", - "default": 50, - "maximum": 256, - "minimum": 0 - }, - { - "name": "skip", - "in": "query", - "description": "Number of images to skip before beginning the image batch. Defaults to 0.", - "required": false, - "type": "integer", - "format": "int32", - "default": 0 - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/Image" - } + "/projects/{projectId}/iterations/{iterationId}/performance/images": { + "get": { + "tags": [ + "ProjectApi" + ], + "summary": "Get image with its prediction for a given project iteration.", + "description": "This API supports batching and range selection. By default it will only return first 50 images matching images.\r\nUse the {take} and {skip} parameters to control how many images to return in a given batch.\r\nThe filtering is on an and/or relationship. For example, if the provided tag ids are for the \"Dog\" and\r\n\"Cat\" tags, then only images tagged with Dog and/or Cat will be returned", + "operationId": "GetImagePerformances", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "The iteration id. Defaults to workspace.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "tagIds", + "in": "query", + "description": "A list of tags ids to filter the images. Defaults to all tagged images when null. Limited to 20.", + "required": false, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 20, + "minItems": 0 + }, + { + "name": "orderBy", + "in": "query", + "description": "The ordering. Defaults to newest.", + "required": false, + "type": "string", + "enum": [ + "Newest", + "Oldest" + ] + }, + { + "name": "take", + "in": "query", + "description": "Maximum number of images to return. Defaults to 50, limited to 256.", + "required": false, + "type": "integer", + "format": "int32", + "default": 50, + "maximum": 256, + "minimum": 0 + }, + { + "name": "skip", + "in": "query", + "description": "Number of images to skip before beginning the image batch. Defaults to 0.", + "required": false, + "type": "integer", + "format": "int32", + "default": 0 + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/ImagePerformance" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetImagePerformances request": { + "$ref": "./examples/GetImagePerformances.json" + } + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "/projects/{projectId}/iterations/{iterationId}/performance/images/count": { + "get": { + "tags": [ + "ProjectApi" + ], + "summary": "Gets the number of images tagged with the provided {tagIds} that have prediction results from\r\ntraining for the provided iteration {iterationId}.", + "description": "The filtering is on an and/or relationship. For example, if the provided tag ids are for the \"Dog\" and\r\n\"Cat\" tags, then only images tagged with Dog and/or Cat will be returned", + "operationId": "GetImagePerformanceCount", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "The iteration id. Defaults to workspace.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "tagIds", + "in": "query", + "description": "A list of tags ids to filter the images to count. Defaults to all tags when null.", + "required": false, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "format": "int32", + "type": "integer" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetImagePerformanceCount request": { + "$ref": "./examples/GetImagePerformanceCount.json" + } + } } - } }, - "x-ms-examples": { - "Successful GetUntaggedImages request": { - "$ref": "./examples/GetUntaggedImages.json" - } - } - } - }, - "/projects/{projectId}/images/id": { - "get": { - "tags": [ - "ImageApi" - ], - "summary": "Get images by id for a given project iteration.", - "description": "This API will return a set of Images for the specified tags and optionally iteration. If no iteration is specified the\r\ncurrent workspace is used.", - "operationId": "GetImagesByIds", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "imageIds", - "in": "query", - "description": "The list of image ids to retrieve. Limited to 256.", - "required": false, - "type": "array", - "items": { - "type": "string", - "format": "uuid", - "x-nullable": false + "/projects/{projectId}/iterations/{iterationId}/publish": { + "post": { + "tags": [ + "ProjectApi" + ], + "summary": "Publish a specific iteration.", + "operationId": "PublishIteration", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "The iteration id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "publishName", + "in": "query", + "description": "The name to give the published iteration.", + "required": true, + "type": "string" + }, + { + "name": "predictionId", + "in": "query", + "description": "The id of the prediction resource to publish to.", + "required": true, + "type": "string" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "boolean" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful PublishIteration request": { + "$ref": "./examples/PublishIteration.json" + } + } }, - "collectionFormat": "csv", - "maxItems": 256, - "minItems": 0 - }, - { - "name": "iterationId", - "in": "query", - "description": "The iteration id. Defaults to workspace.", - "required": false, - "type": "string", - "format": "uuid" - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/Image" - } + "delete": { + "tags": [ + "ProjectApi" + ], + "summary": "Unpublish a specific iteration.", + "operationId": "UnpublishIteration", + "consumes": [], + "produces": [], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "path", + "description": "The iteration id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful UnpublishIteration request": { + "$ref": "./examples/UnpublishIteration.json" + } + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" - } - } }, - "x-ms-examples": { - "Successful GetImagesByIds request": { - "$ref": "./examples/GetImagesByIds.json" - } - } - } - }, - "/projects/{projectId}/images": { - "post": { - "tags": [ - "ImageApi" - ], - "summary": "Add the provided images to the set of training images.", - "description": "This API accepts body content as multipart/form-data and application/octet-stream. When using multipart\r\nmultiple image files can be sent at once, with a maximum of 64 files", - "operationId": "CreateImagesFromData", - "consumes": [ - "multipart/form-data", - "application/octet-stream" - ], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "tagIds", - "in": "query", - "description": "The tags ids with which to tag each image. Limited to 20.", - "required": false, - "type": "array", - "items": { - "type": "string", - "format": "uuid", - "x-nullable": false - }, - "collectionFormat": "csv", - "maxItems": 20, - "minItems": 0 - }, - { - "name": "imageData", - "in": "formData", - "description": "Binary image data. Supported formats are JPEG, GIF, PNG, and BMP. Supports images up to 6MB.", - "required": true, - "type": "file" - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/ImageCreateSummary" + "/projects/{projectId}/predictions": { + "delete": { + "tags": [ + "PredictionsApi" + ], + "summary": "Delete a set of predicted images and their associated prediction results.", + "operationId": "DeletePrediction", + "consumes": [], + "produces": [], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "ids", + "in": "query", + "description": "The prediction ids. Limited to 64.", + "required": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 64, + "minItems": 0 + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful DeletePrediction request": { + "$ref": "./examples/DeletePrediction.json" + } + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "/projects/{projectId}/predictions/query": { + "post": { + "tags": [ + "PredictionsApi" + ], + "summary": "Get images that were sent to your prediction endpoint.", + "operationId": "QueryPredictions", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "query", + "in": "body", + "description": "Parameters used to query the predictions. Limited to combining 2 tags.", + "required": true, + "schema": { + "$ref": "#/definitions/PredictionQueryToken" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/PredictionQueryResult" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful QueryPredictions request": { + "$ref": "./examples/QueryPredictions.json" + } + } } - } }, - "x-ms-examples": { - "Successful CreateImagesFromData request": { - "$ref": "./examples/CreateImagesFromData.json" - } - } - }, - "delete": { - "tags": [ - "ImageApi" - ], - "summary": "Delete images from the set of training images.", - "operationId": "DeleteImages", - "consumes": [], - "produces": [], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "imageIds", - "in": "query", - "description": "Ids of the images to be deleted. Limited to 256 images per batch.", - "required": true, - "type": "array", - "items": { - "type": "string", - "format": "uuid", - "x-nullable": false - }, - "collectionFormat": "csv", - "maxItems": 256, - "minItems": 0 - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "204": { - "description": "No Content" - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + "/projects/{projectId}/quicktest/image": { + "post": { + "tags": [ + "PredictionsApi" + ], + "summary": "Quick test an image.", + "operationId": "QuickTestImage", + "consumes": [ + "multipart/form-data", + "application/octet-stream" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "query", + "description": "Optional. Specifies the id of a particular iteration to evaluate against.\r\n The default iteration for the project will be used when not specified.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "name": "imageData", + "in": "formData", + "description": "Binary image data. Supported formats are JPEG, GIF, PNG, and BMP. Supports images up to 6MB.", + "required": true, + "type": "file" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImagePrediction" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful QuickTestImage request": { + "$ref": "./examples/QuickTestImage.json" + } + } } - } }, - "x-ms-examples": { - "Successful DeleteImages request": { - "$ref": "./examples/DeleteImages.json" - } - } - } - }, - "/projects/{projectId}/images/files": { - "post": { - "tags": [ - "ImageApi" - ], - "summary": "Add the provided batch of images to the set of training images.", - "description": "This API accepts a batch of files, and optionally tags, to create images. There is a limit of 64 images and 20 tags.", - "operationId": "CreateImagesFromFiles", - "consumes": [ - "application/json", - "application/xml", - "text/xml", - "application/x-www-form-urlencoded" - ], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "batch", - "in": "body", - "description": "The batch of image files to add. Limited to 64 images and 20 tags per batch.", - "required": true, - "schema": { - "$ref": "#/definitions/ImageFileCreateBatch" + "/projects/{projectId}/quicktest/url": { + "post": { + "tags": [ + "PredictionsApi" + ], + "summary": "Quick test an image url.", + "operationId": "QuickTestImageUrl", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project to evaluate against.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "imageUrl", + "in": "body", + "description": "An ImageUrl that contains the url of the image to be evaluated.", + "required": true, + "schema": { + "$ref": "#/definitions/ImageUrl" + } + }, + { + "name": "iterationId", + "in": "query", + "description": "Optional. Specifies the id of a particular iteration to evaluate against.\r\n The default iteration for the project will be used when not specified.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImagePrediction" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful QuickTestImageUrl request": { + "$ref": "./examples/QuickTestImageUrl.json" + } + } } - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/ImageCreateSummary" + }, + "/projects/{projectId}/tags": { + "get": { + "tags": [ + "TagsApi" + ], + "summary": "Get the tags for a given project and iteration.", + "operationId": "GetTags", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "query", + "description": "The iteration id. Defaults to workspace.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Tag" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetTags request": { + "$ref": "./examples/GetTags.json" + } + } + }, + "post": { + "tags": [ + "TagsApi" + ], + "summary": "Create a tag for the project.", + "operationId": "CreateTag", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "name", + "in": "query", + "description": "The tag name.", + "required": true, + "type": "string" + }, + { + "name": "description", + "in": "query", + "description": "Optional description for the tag.", + "required": false, + "type": "string" + }, + { + "name": "type", + "in": "query", + "description": "Optional type for the tag.", + "required": false, + "type": "string", + "enum": [ + "Regular", + "Negative" + ] + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Tag" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful CreateTag request": { + "$ref": "./examples/CreateTag.json" + } + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "/projects/{projectId}/tags/{tagId}": { + "get": { + "tags": [ + "TagsApi" + ], + "summary": "Get information about a specific tag.", + "operationId": "GetTag", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project this tag belongs to.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "tagId", + "in": "path", + "description": "The tag id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "query", + "description": "The iteration to retrieve this tag from. Optional, defaults to current training set.", + "required": false, + "type": "string", + "format": "uuid" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Tag" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetTag request": { + "$ref": "./examples/GetTag.json" + } + } + }, + "delete": { + "tags": [ + "TagsApi" + ], + "summary": "Delete a tag from the project.", + "operationId": "DeleteTag", + "consumes": [], + "produces": [], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "tagId", + "in": "path", + "description": "Id of the tag to be deleted.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful DeleteTag request": { + "$ref": "./examples/DeleteTag.json" + } + } + }, + "patch": { + "tags": [ + "TagsApi" + ], + "summary": "Update a tag.", + "operationId": "UpdateTag", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "tagId", + "in": "path", + "description": "The id of the target tag.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "updatedTag", + "in": "body", + "description": "The updated tag model.", + "required": true, + "schema": { + "$ref": "#/definitions/Tag" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Tag" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful UpdateTag request": { + "$ref": "./examples/UpdateTag.json" + } + } } - } }, - "x-ms-examples": { - "Successful CreateImagesFromFiles request": { - "$ref": "./examples/CreateImagesFromFiles.json" - } + "/projects/{projectId}/train": { + "post": { + "tags": [ + "ProjectApi" + ], + "summary": "Queues project for training.", + "operationId": "TrainProject", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "trainingType", + "in": "query", + "description": "The type of training to use to train the project (default: Regular).", + "required": false, + "type": "string", + "enum": [ + "Regular", + "Advanced" + ] + }, + { + "name": "reservedBudgetInHours", + "in": "query", + "description": "The number of hours reserved as budget for training (if applicable).", + "required": false, + "type": "integer", + "format": "int32", + "default": 0 + }, + { + "name": "forceTrain", + "in": "query", + "description": "Whether to force train even if dataset and configuration does not change (default: false).", + "required": false, + "type": "boolean", + "default": false + }, + { + "name": "notificationEmailAddress", + "in": "query", + "description": "The email address to send notification to when training finishes (default: null).", + "required": false, + "type": "string" + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Iteration" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful TrainProject request": { + "$ref": "./examples/TrainProject.json" + } + } + } } - } }, - "/projects/{projectId}/images/urls": { - "post": { - "tags": [ - "ImageApi" - ], - "summary": "Add the provided images urls to the set of training images.", - "description": "This API accepts a batch of urls, and optionally tags, to create images. There is a limit of 64 images and 20 tags.", - "operationId": "CreateImagesFromUrls", - "consumes": [ - "application/json", - "application/xml", - "text/xml", - "application/x-www-form-urlencoded" - ], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "batch", - "in": "body", - "description": "Image urls and tag ids. Limited to 64 images and 20 tags per batch.", - "required": true, - "schema": { - "$ref": "#/definitions/ImageUrlCreateBatch" - } - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/ImageCreateSummary" + "definitions": { + "BoundingBox": { + "description": "Bounding box that defines a region of an image.", + "required": [ + "left", + "top", + "width", + "height" + ], + "type": "object", + "properties": { + "left": { + "format": "float", + "description": "Coordinate of the left boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "top": { + "format": "float", + "description": "Coordinate of the top boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "width": { + "format": "float", + "description": "Width.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "height": { + "format": "float", + "description": "Height.", + "type": "number", + "readOnly": false, + "x-nullable": false + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "CustomVisionError": { + "required": [ + "code", + "message" + ], + "type": "object", + "properties": { + "code": { + "description": "The error code.", + "enum": [ + "NoError", + "BadRequest", + "BadRequestExceededBatchSize", + "BadRequestNotSupported", + "BadRequestInvalidIds", + "BadRequestProjectName", + "BadRequestProjectNameNotUnique", + "BadRequestProjectDescription", + "BadRequestProjectUnknownDomain", + "BadRequestProjectUnknownClassification", + "BadRequestProjectUnsupportedDomainTypeChange", + "BadRequestProjectUnsupportedExportPlatform", + "BadRequestIterationName", + "BadRequestIterationNameNotUnique", + "BadRequestIterationDescription", + "BadRequestIterationIsNotTrained", + "BadRequestWorkspaceCannotBeModified", + "BadRequestWorkspaceNotDeletable", + "BadRequestTagName", + "BadRequestTagNameNotUnique", + "BadRequestTagDescription", + "BadRequestTagType", + "BadRequestMultipleNegativeTag", + "BadRequestImageTags", + "BadRequestImageRegions", + "BadRequestNegativeAndRegularTagOnSameImage", + "BadRequestRequiredParamIsNull", + "BadRequestIterationIsPublished", + "BadRequestInvalidPublishName", + "BadRequestInvalidPublishTarget", + "BadRequestUnpublishFailed", + "BadRequestIterationNotPublished", + "BadRequestSubscriptionApi", + "BadRequestExceedProjectLimit", + "BadRequestExceedIterationPerProjectLimit", + "BadRequestExceedTagPerProjectLimit", + "BadRequestExceedTagPerImageLimit", + "BadRequestExceededQuota", + "BadRequestCannotMigrateProjectWithName", + "BadRequestNotLimitedTrial", + "BadRequestImageBatch", + "BadRequestImageStream", + "BadRequestImageUrl", + "BadRequestImageFormat", + "BadRequestImageSizeBytes", + "BadRequestImageExceededCount", + "BadRequestTrainingNotNeeded", + "BadRequestTrainingNotNeededButTrainingPipelineUpdated", + "BadRequestTrainingValidationFailed", + "BadRequestClassificationTrainingValidationFailed", + "BadRequestMultiClassClassificationTrainingValidationFailed", + "BadRequestMultiLabelClassificationTrainingValidationFailed", + "BadRequestDetectionTrainingValidationFailed", + "BadRequestTrainingAlreadyInProgress", + "BadRequestDetectionTrainingNotAllowNegativeTag", + "BadRequestInvalidEmailAddress", + "BadRequestDomainNotSupportedForAdvancedTraining", + "BadRequestExportPlatformNotSupportedForAdvancedTraining", + "BadRequestReservedBudgetInHoursNotEnoughForAdvancedTraining", + "BadRequestExportValidationFailed", + "BadRequestExportAlreadyInProgress", + "BadRequestPredictionIdsMissing", + "BadRequestPredictionIdsExceededCount", + "BadRequestPredictionTagsExceededCount", + "BadRequestPredictionResultsExceededCount", + "BadRequestPredictionInvalidApplicationName", + "BadRequestPredictionInvalidQueryParameters", + "BadRequestInvalid", + "UnsupportedMediaType", + "Forbidden", + "ForbiddenUser", + "ForbiddenUserResource", + "ForbiddenUserSignupDisabled", + "ForbiddenUserSignupAllowanceExceeded", + "ForbiddenUserDoesNotExist", + "ForbiddenUserDisabled", + "ForbiddenUserInsufficientCapability", + "ForbiddenDRModeEnabled", + "ForbiddenInvalid", + "NotFound", + "NotFoundProject", + "NotFoundProjectDefaultIteration", + "NotFoundIteration", + "NotFoundIterationPerformance", + "NotFoundTag", + "NotFoundImage", + "NotFoundDomain", + "NotFoundApimSubscription", + "NotFoundInvalid", + "Conflict", + "ConflictInvalid", + "ErrorUnknown", + "ErrorProjectInvalidWorkspace", + "ErrorProjectInvalidPipelineConfiguration", + "ErrorProjectInvalidDomain", + "ErrorProjectTrainingRequestFailed", + "ErrorProjectExportRequestFailed", + "ErrorFeaturizationServiceUnavailable", + "ErrorFeaturizationQueueTimeout", + "ErrorFeaturizationInvalidFeaturizer", + "ErrorFeaturizationAugmentationUnavailable", + "ErrorFeaturizationUnrecognizedJob", + "ErrorFeaturizationAugmentationError", + "ErrorExporterInvalidPlatform", + "ErrorExporterInvalidFeaturizer", + "ErrorExporterInvalidClassifier", + "ErrorPredictionServiceUnavailable", + "ErrorPredictionModelNotFound", + "ErrorPredictionModelNotCached", + "ErrorPrediction", + "ErrorPredictionStorage", + "ErrorRegionProposal", + "ErrorInvalid" + ], + "type": "string", + "x-ms-enum": { + "name": "CustomVisionErrorCodes", + "modelAsString": true + } + }, + "message": { + "description": "A message explaining the error reported by the service.", + "type": "string" + } } - } }, - "x-ms-examples": { - "Successful CreateImagesFromUrls request": { - "$ref": "./examples/CreateImagesFromUrls.json" - } - } - } - }, - "/projects/{projectId}/images/predictions": { - "post": { - "tags": [ - "ImageApi" - ], - "summary": "Add the specified predicted images to the set of training images.", - "description": "This API creates a batch of images from predicted images specified. There is a limit of 64 images and 20 tags.", - "operationId": "CreateImagesFromPredictions", - "consumes": [ - "application/json", - "application/xml", - "text/xml", - "application/x-www-form-urlencoded" - ], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "batch", - "in": "body", - "description": "Image and tag ids. Limited to 64 images and 20 tags per batch.", - "required": true, - "schema": { - "$ref": "#/definitions/ImageIdCreateBatch" + "Domain": { + "type": "object", + "properties": { + "id": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "name": { + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "type": { + "enum": [ + "Classification", + "ObjectDetection" + ], + "type": "string", + "readOnly": true, + "x-nullable": false, + "x-ms-enum": { + "name": "DomainType", + "modelAsString": true + } + }, + "exportable": { + "type": "boolean", + "readOnly": true, + "x-nullable": false + }, + "enabled": { + "type": "boolean", + "readOnly": true, + "x-nullable": false + } } - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/ImageCreateSummary" + }, + "Export": { + "type": "object", + "properties": { + "platform": { + "description": "Platform of the export.", + "enum": [ + "CoreML", + "TensorFlow", + "DockerFile", + "ONNX", + "VAIDK" + ], + "type": "string", + "readOnly": true, + "x-nullable": false, + "x-ms-enum": { + "name": "ExportPlatform", + "modelAsString": true + } + }, + "status": { + "description": "Status of the export.", + "enum": [ + "Exporting", + "Failed", + "Done" + ], + "type": "string", + "readOnly": true, + "x-nullable": false, + "x-ms-enum": { + "name": "ExportStatus", + "modelAsString": true + } + }, + "downloadUri": { + "description": "URI used to download the model.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "flavor": { + "description": "Flavor of the export.", + "enum": [ + "Linux", + "Windows", + "ONNX10", + "ONNX12", + "ARM" + ], + "type": "string", + "readOnly": true, + "x-nullable": true, + "x-ms-enum": { + "name": "ExportFlavor", + "modelAsString": true + } + }, + "newerVersionAvailable": { + "description": "Indicates an updated version of the export package is available and should be re-exported for the latest changes.", + "type": "boolean", + "readOnly": true, + "x-nullable": false + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "Image": { + "description": "Image model to be sent as JSON.", + "type": "object", + "properties": { + "id": { + "format": "uuid", + "description": "Id of the image.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "created": { + "format": "date-time", + "description": "Date the image was created.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "width": { + "format": "int32", + "description": "Width of the image.", + "type": "integer", + "readOnly": true, + "x-nullable": false + }, + "height": { + "format": "int32", + "description": "Height of the image.", + "type": "integer", + "readOnly": true, + "x-nullable": false + }, + "resizedImageUri": { + "description": "The URI to the (resized) image used for training.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "thumbnailUri": { + "description": "The URI to the thumbnail of the original image.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "originalImageUri": { + "description": "The URI to the original uploaded image.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "tags": { + "description": "Tags associated with this image.", + "type": "array", + "items": { + "$ref": "#/definitions/ImageTag" + }, + "readOnly": true, + "x-nullable": true + }, + "regions": { + "description": "Regions associated with this image.", + "type": "array", + "items": { + "$ref": "#/definitions/ImageRegion" + }, + "readOnly": true, + "x-nullable": true + } } - } }, - "x-ms-examples": { - "Successful CreateImagesFromPredictions request": { - "$ref": "./examples/CreateImagesFromPredictions.json" - } - } - } - }, - "/projects/{projectId}/images/{imageId}/regionproposals": { - "post": { - "tags": [ - "ImageRegionProposalApi" - ], - "summary": "Get region proposals for an image. Returns empty array if no proposals are found.", - "description": "This API will get region proposals for an image along with confidences for the region. It returns an empty array if no proposals are found.", - "operationId": "GetImageRegionProposals", - "consumes": [], - "produces": [ - "application/json" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "imageId", - "in": "path", - "description": "The image id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/ImageRegionProposal" + "ImageCreateResult": { + "type": "object", + "properties": { + "sourceUrl": { + "description": "Source URL of the image.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "status": { + "description": "Status of the image creation.", + "enum": [ + "OK", + "OKDuplicate", + "ErrorSource", + "ErrorImageFormat", + "ErrorImageSize", + "ErrorStorage", + "ErrorLimitExceed", + "ErrorTagLimitExceed", + "ErrorRegionLimitExceed", + "ErrorUnknown", + "ErrorNegativeAndRegularTagOnSameImage" + ], + "type": "string", + "readOnly": true, + "x-nullable": false, + "x-ms-enum": { + "name": "ImageCreateStatus", + "modelAsString": true + } + }, + "image": { + "$ref": "#/definitions/Image", + "description": "The image.", + "readOnly": true, + "x-nullable": false + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "ImageCreateSummary": { + "type": "object", + "properties": { + "isBatchSuccessful": { + "description": "True if all of the images in the batch were created successfully, otherwise false.", + "type": "boolean", + "readOnly": true, + "x-nullable": false + }, + "images": { + "description": "List of the image creation results.", + "type": "array", + "items": { + "$ref": "#/definitions/ImageCreateResult", + "x-nullable": false + }, + "readOnly": true + } } - } }, - "x-ms-examples": { - "Successful GetImageRegionProposals request": { - "$ref": "./examples/GetImageRegionProposals.json" - } - } - } - }, - "/projects/{projectId}/predictions": { - "delete": { - "tags": [ - "PredictionsApi" - ], - "summary": "Delete a set of predicted images and their associated prediction results.", - "operationId": "DeletePrediction", - "consumes": [], - "produces": [], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "ids", - "in": "query", - "description": "The prediction ids. Limited to 64.", - "required": true, - "type": "array", - "items": { - "type": "string", - "format": "uuid", - "x-nullable": false - }, - "collectionFormat": "csv", - "maxItems": 64, - "minItems": 0 - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "204": { - "description": "No Content" - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + "ImageFileCreateBatch": { + "type": "object", + "properties": { + "images": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageFileCreateEntry", + "x-nullable": false + }, + "readOnly": false + }, + "tagIds": { + "type": "array", + "items": { + "format": "uuid", + "type": "string", + "x-nullable": false + }, + "readOnly": false + } } - } }, - "x-ms-examples": { - "Successful DeletePrediction request": { - "$ref": "./examples/DeletePrediction.json" - } - } - } - }, - "/projects/{projectId}/quicktest/url": { - "post": { - "tags": [ - "PredictionsApi" - ], - "summary": "Quick test an image url.", - "operationId": "QuickTestImageUrl", - "consumes": [ - "application/json", - "application/xml", - "text/xml", - "application/x-www-form-urlencoded" - ], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project to evaluate against.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "imageUrl", - "in": "body", - "description": "An ImageUrl that contains the url of the image to be evaluated.", - "required": true, - "schema": { - "$ref": "#/definitions/ImageUrl" + "ImageFileCreateEntry": { + "type": "object", + "properties": { + "name": { + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "contents": { + "format": "byte", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "tagIds": { + "type": "array", + "items": { + "format": "uuid", + "type": "string", + "x-nullable": false + }, + "readOnly": false + }, + "regions": { + "type": "array", + "items": { + "$ref": "#/definitions/Region", + "x-nullable": false + }, + "readOnly": false + } } - }, - { - "name": "iterationId", - "in": "query", - "description": "Optional. Specifies the id of a particular iteration to evaluate against.\r\n The default iteration for the project will be used when not specified.", - "required": false, - "type": "string", - "format": "uuid" - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/ImagePrediction" + }, + "ImageIdCreateBatch": { + "type": "object", + "properties": { + "images": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageIdCreateEntry", + "x-nullable": false + }, + "readOnly": false + }, + "tagIds": { + "type": "array", + "items": { + "format": "uuid", + "type": "string", + "x-nullable": false + }, + "readOnly": false + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "ImageIdCreateEntry": { + "type": "object", + "properties": { + "id": { + "format": "uuid", + "description": "Id of the image.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "tagIds": { + "type": "array", + "items": { + "format": "uuid", + "type": "string", + "x-nullable": false + }, + "readOnly": false + }, + "regions": { + "type": "array", + "items": { + "$ref": "#/definitions/Region", + "x-nullable": false + }, + "readOnly": false + } } - } }, - "x-ms-examples": { - "Successful QuickTestImageUrl request": { - "$ref": "./examples/QuickTestImageUrl.json" - } - } - } - }, - "/projects/{projectId}/quicktest/image": { - "post": { - "tags": [ - "PredictionsApi" - ], - "summary": "Quick test an image.", - "operationId": "QuickTestImage", - "consumes": [ - "multipart/form-data", - "application/octet-stream" - ], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "iterationId", - "in": "query", - "description": "Optional. Specifies the id of a particular iteration to evaluate against.\r\n The default iteration for the project will be used when not specified.", - "required": false, - "type": "string", - "format": "uuid" - }, - { - "name": "imageData", - "in": "formData", - "description": "Binary image data. Supported formats are JPEG, GIF, PNG, and BMP. Supports images up to 6MB.", - "required": true, - "type": "file" - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/ImagePrediction" + "ImagePerformance": { + "description": "Image performance model.", + "type": "object", + "properties": { + "predictions": { + "type": "array", + "items": { + "$ref": "#/definitions/Prediction" + }, + "readOnly": true, + "x-nullable": true + }, + "id": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "created": { + "format": "date-time", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "width": { + "format": "int32", + "type": "integer", + "readOnly": true, + "x-nullable": false + }, + "height": { + "format": "int32", + "type": "integer", + "readOnly": true, + "x-nullable": false + }, + "imageUri": { + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "thumbnailUri": { + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageTag" + }, + "readOnly": true, + "x-nullable": true + }, + "regions": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageRegion" + }, + "readOnly": true, + "x-nullable": true + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "ImagePrediction": { + "description": "Result of an image prediction request.", + "type": "object", + "properties": { + "id": { + "format": "uuid", + "description": "Prediction Id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "project": { + "format": "uuid", + "description": "Project Id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "iteration": { + "format": "uuid", + "description": "Iteration Id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "created": { + "format": "date-time", + "description": "Date this prediction was created.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "predictions": { + "description": "List of predictions.", + "type": "array", + "items": { + "$ref": "#/definitions/Prediction", + "x-nullable": false + }, + "readOnly": true + } } - } }, - "x-ms-examples": { - "Successful QuickTestImage request": { - "$ref": "./examples/QuickTestImage.json" - } - } - } - }, - "/projects/{projectId}/predictions/query": { - "post": { - "tags": [ - "PredictionsApi" - ], - "summary": "Get images that were sent to your prediction endpoint.", - "operationId": "QueryPredictions", - "consumes": [ - "application/json", - "application/xml", - "text/xml", - "application/x-www-form-urlencoded" - ], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "query", - "in": "body", - "description": "Parameters used to query the predictions. Limited to combining 2 tags.", - "required": true, - "schema": { - "$ref": "#/definitions/PredictionQueryToken" + "ImageRegion": { + "required": [ + "tagId", + "left", + "top", + "width", + "height" + ], + "type": "object", + "properties": { + "regionId": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "tagName": { + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "created": { + "format": "date-time", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "tagId": { + "format": "uuid", + "description": "Id of the tag associated with this region.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "left": { + "format": "float", + "description": "Coordinate of the left boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "top": { + "format": "float", + "description": "Coordinate of the top boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "width": { + "format": "float", + "description": "Width.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "height": { + "format": "float", + "description": "Height.", + "type": "number", + "readOnly": false, + "x-nullable": false + } } - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/PredictionQueryResult" + }, + "ImageRegionCreateBatch": { + "description": "Batch of image region information to create.", + "type": "object", + "properties": { + "regions": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageRegionCreateEntry", + "x-nullable": false + }, + "readOnly": false + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "ImageRegionCreateEntry": { + "description": "Entry associating a region to an image.", + "required": [ + "imageId", + "tagId", + "left", + "top", + "width", + "height" + ], + "type": "object", + "properties": { + "imageId": { + "format": "uuid", + "description": "Id of the image.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "tagId": { + "format": "uuid", + "description": "Id of the tag associated with this region.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "left": { + "format": "float", + "description": "Coordinate of the left boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "top": { + "format": "float", + "description": "Coordinate of the top boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "width": { + "format": "float", + "description": "Width.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "height": { + "format": "float", + "description": "Height.", + "type": "number", + "readOnly": false, + "x-nullable": false + } } - } }, - "x-ms-examples": { - "Successful QueryPredictions request": { - "$ref": "./examples/QueryPredictions.json" - } - } - } - }, - "/projects/{projectId}/iterations/{iterationId}/performance": { - "get": { - "tags": [ - "ProjectApi" - ], - "summary": "Get detailed performance information about an iteration.", - "operationId": "GetIterationPerformance", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The id of the project the iteration belongs to.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "iterationId", - "in": "path", - "description": "The id of the iteration to get.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "threshold", - "in": "query", - "description": "The threshold used to determine true predictions.", - "required": false, - "type": "number", - "format": "float" - }, - { - "name": "overlapThreshold", - "in": "query", - "description": "If applicable, the bounding box overlap threshold used to determine true predictions.", - "required": false, - "type": "number", - "format": "float" - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/IterationPerformance" + "ImageRegionCreateResult": { + "required": [ + "tagId", + "left", + "top", + "width", + "height" + ], + "type": "object", + "properties": { + "imageId": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "regionId": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "tagName": { + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "created": { + "format": "date-time", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "tagId": { + "format": "uuid", + "description": "Id of the tag associated with this region.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "left": { + "format": "float", + "description": "Coordinate of the left boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "top": { + "format": "float", + "description": "Coordinate of the top boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "width": { + "format": "float", + "description": "Width.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "height": { + "format": "float", + "description": "Height.", + "type": "number", + "readOnly": false, + "x-nullable": false + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "ImageRegionCreateSummary": { + "type": "object", + "properties": { + "created": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageRegionCreateResult" + }, + "readOnly": false, + "x-nullable": true + }, + "duplicated": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageRegionCreateEntry" + }, + "readOnly": false, + "x-nullable": true + }, + "exceeded": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageRegionCreateEntry" + }, + "readOnly": false, + "x-nullable": true + } } - } }, - "x-ms-examples": { - "Successful GetIterationPerformance request": { - "$ref": "./examples/GetIterationPerformance.json" - } - } - } - }, - "/projects/{projectId}/iterations/{iterationId}/performance/images": { - "get": { - "tags": [ - "ProjectApi" - ], - "summary": "Get image with its prediction for a given project iteration.", - "description": "This API supports batching and range selection. By default it will only return first 50 images matching images.\r\nUse the {take} and {skip} parameters to control how many images to return in a given batch.\r\nThe filtering is on an and/or relationship. For example, if the provided tag ids are for the \"Dog\" and\r\n\"Cat\" tags, then only images tagged with Dog and/or Cat will be returned", - "operationId": "GetImagePerformances", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "iterationId", - "in": "path", - "description": "The iteration id. Defaults to workspace.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "tagIds", - "in": "query", - "description": "A list of tags ids to filter the images. Defaults to all tagged images when null. Limited to 20.", - "required": false, - "type": "array", - "items": { - "type": "string", - "format": "uuid", - "x-nullable": false - }, - "collectionFormat": "csv", - "maxItems": 20, - "minItems": 0 - }, - { - "name": "orderBy", - "in": "query", - "description": "The ordering. Defaults to newest.", - "required": false, - "type": "string", - "enum": [ - "Newest", - "Oldest" - ] - }, - { - "name": "take", - "in": "query", - "description": "Maximum number of images to return. Defaults to 50, limited to 256.", - "required": false, - "type": "integer", - "format": "int32", - "default": 50, - "maximum": 256, - "minimum": 0 - }, - { - "name": "skip", - "in": "query", - "description": "Number of images to skip before beginning the image batch. Defaults to 0.", - "required": false, - "type": "integer", - "format": "int32", - "default": 0 - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/ImagePerformance" - } + "ImageRegionProposal": { + "type": "object", + "properties": { + "projectId": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "imageId": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "proposals": { + "type": "array", + "items": { + "$ref": "#/definitions/RegionProposal", + "x-nullable": false + }, + "readOnly": true + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "ImageTag": { + "type": "object", + "properties": { + "tagId": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "tagName": { + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "created": { + "format": "date-time", + "type": "string", + "readOnly": true, + "x-nullable": false + } } - } }, - "x-ms-examples": { - "Successful GetImagePerformances request": { - "$ref": "./examples/GetImagePerformances.json" - } - } - } - }, - "/projects/{projectId}/iterations/{iterationId}/performance/images/count": { - "get": { - "tags": [ - "ProjectApi" - ], - "summary": "Gets the number of images tagged with the provided {tagIds} that have prediction results from\r\ntraining for the provided iteration {iterationId}.", - "description": "The filtering is on an and/or relationship. For example, if the provided tag ids are for the \"Dog\" and\r\n\"Cat\" tags, then only images tagged with Dog and/or Cat will be returned", - "operationId": "GetImagePerformanceCount", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "iterationId", - "in": "path", - "description": "The iteration id. Defaults to workspace.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "tagIds", - "in": "query", - "description": "A list of tags ids to filter the images to count. Defaults to all tags when null.", - "required": false, - "type": "array", - "items": { - "type": "string", - "format": "uuid", - "x-nullable": false - }, - "collectionFormat": "csv" - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "format": "int32", - "type": "integer" + "ImageTagCreateBatch": { + "description": "Batch of image tags.", + "type": "object", + "properties": { + "tags": { + "description": "Image Tag entries to include in this batch.", + "type": "array", + "items": { + "$ref": "#/definitions/ImageTagCreateEntry", + "x-nullable": false + }, + "readOnly": false + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "ImageTagCreateEntry": { + "description": "Entry associating a tag to an image.", + "type": "object", + "properties": { + "imageId": { + "format": "uuid", + "description": "Id of the image.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "tagId": { + "format": "uuid", + "description": "Id of the tag.", + "type": "string", + "readOnly": false, + "x-nullable": false + } } - } }, - "x-ms-examples": { - "Successful GetImagePerformanceCount request": { - "$ref": "./examples/GetImagePerformanceCount.json" - } - } - } - }, - "/projects": { - "get": { - "tags": [ - "ProjectApi" - ], - "summary": "Get your projects.", - "operationId": "GetProjects", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/Project" - } + "ImageTagCreateSummary": { + "type": "object", + "properties": { + "created": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageTagCreateEntry" + }, + "readOnly": false, + "x-nullable": true + }, + "duplicated": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageTagCreateEntry" + }, + "readOnly": false, + "x-nullable": true + }, + "exceeded": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageTagCreateEntry" + }, + "readOnly": false, + "x-nullable": true + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "ImageUrl": { + "description": "Image url.", + "required": [ + "url" + ], + "type": "object", + "properties": { + "url": { + "description": "Url of the image.", + "type": "string", + "readOnly": false, + "x-nullable": false + } } - } }, - "x-ms-examples": { - "Successful GetProjects request": { - "$ref": "./examples/GetProjects.json" - } - } - }, - "post": { - "tags": [ - "ProjectApi" - ], - "summary": "Create a project.", - "operationId": "CreateProject", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "name", - "in": "query", - "description": "Name of the project.", - "required": true, - "type": "string" - }, - { - "name": "description", - "in": "query", - "description": "The description of the project.", - "required": false, - "type": "string" - }, - { - "name": "domainId", - "in": "query", - "description": "The id of the domain to use for this project. Defaults to General.", - "required": false, - "type": "string", - "format": "uuid" - }, - { - "name": "classificationType", - "in": "query", - "description": "The type of classifier to create for this project.", - "required": false, - "type": "string", - "enum": [ - "Multiclass", - "Multilabel" - ] - }, - { - "name": "targetExportPlatforms", - "in": "query", - "description": "List of platforms the trained model is intending exporting to.", - "required": false, - "type": "array", - "items": { - "type": "string", - "enum": [ - "CoreML", - "TensorFlow", - "DockerFile", - "ONNX", - "VAIDK" - ] - }, - "collectionFormat": "csv" - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/Project" + "ImageUrlCreateBatch": { + "type": "object", + "properties": { + "images": { + "type": "array", + "items": { + "$ref": "#/definitions/ImageUrlCreateEntry", + "x-nullable": false + }, + "readOnly": false + }, + "tagIds": { + "type": "array", + "items": { + "format": "uuid", + "type": "string", + "x-nullable": false + }, + "readOnly": false + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "ImageUrlCreateEntry": { + "required": [ + "url" + ], + "type": "object", + "properties": { + "url": { + "description": "Url of the image.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "tagIds": { + "type": "array", + "items": { + "format": "uuid", + "type": "string", + "x-nullable": false + }, + "readOnly": false + }, + "regions": { + "type": "array", + "items": { + "$ref": "#/definitions/Region", + "x-nullable": false + }, + "readOnly": false + } } - } }, - "x-ms-examples": { - "Successful CreateProject request": { - "$ref": "./examples/CreateProject.json" - } - } - } - }, - "/projects/{projectId}": { - "get": { - "tags": [ - "ProjectApi" - ], - "summary": "Get a specific project.", - "operationId": "GetProject", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The id of the project to get.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/Project" + "Iteration": { + "description": "Iteration model to be sent over JSON.", + "required": [ + "name" + ], + "type": "object", + "properties": { + "id": { + "format": "uuid", + "description": "Gets the id of the iteration.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "name": { + "description": "Gets or sets the name of the iteration.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "status": { + "description": "Gets the current iteration status.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "created": { + "format": "date-time", + "description": "Gets the time this iteration was completed.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "lastModified": { + "format": "date-time", + "description": "Gets the time this iteration was last modified.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "trainedAt": { + "format": "date-time", + "description": "Gets the time this iteration was last modified.", + "type": "string", + "readOnly": true, + "x-nullable": true + }, + "projectId": { + "format": "uuid", + "description": "Gets the project id of the iteration.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "exportable": { + "description": "Whether the iteration can be exported to another format for download.", + "type": "boolean", + "readOnly": true, + "x-nullable": false + }, + "exportableTo": { + "description": "A set of platforms this iteration can export to.", + "type": "array", + "items": { + "enum": [ + "CoreML", + "TensorFlow", + "DockerFile", + "ONNX", + "VAIDK" + ], + "type": "string", + "x-nullable": false + }, + "readOnly": true + }, + "domainId": { + "format": "uuid", + "description": "Get or sets a guid of the domain the iteration has been trained on.", + "type": "string", + "readOnly": true, + "x-nullable": true + }, + "classificationType": { + "description": "Gets the classification type of the project.", + "enum": [ + "Multiclass", + "Multilabel" + ], + "type": "string", + "readOnly": true, + "x-nullable": true, + "x-ms-enum": { + "name": "Classifier", + "modelAsString": true + } + }, + "trainingType": { + "description": "Gets the training type of the iteration.", + "enum": [ + "Regular", + "Advanced" + ], + "type": "string", + "readOnly": true, + "x-nullable": false, + "x-ms-enum": { + "name": "TrainingType", + "modelAsString": true + } + }, + "reservedBudgetInHours": { + "format": "int32", + "description": "Gets the reserved advanced training budget for the iteration.", + "type": "integer", + "readOnly": true, + "x-nullable": false + }, + "publishName": { + "description": "Name of the published model.", + "type": "string", + "readOnly": true, + "x-nullable": true + }, + "originalPublishResourceId": { + "description": "Resource Provider Id this iteration was originally published to.", + "type": "string", + "readOnly": true, + "x-nullable": true + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "IterationPerformance": { + "description": "Represents the detailed performance data for a trained iteration.", + "type": "object", + "properties": { + "perTagPerformance": { + "description": "Gets the per-tag performance details for this iteration.", + "type": "array", + "items": { + "$ref": "#/definitions/TagPerformance", + "x-nullable": false + }, + "readOnly": true + }, + "precision": { + "format": "float", + "description": "Gets the precision.", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "precisionStdDeviation": { + "format": "float", + "description": "Gets the standard deviation for the precision.", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "recall": { + "format": "float", + "description": "Gets the recall.", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "recallStdDeviation": { + "format": "float", + "description": "Gets the standard deviation for the recall.", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "averagePrecision": { + "format": "float", + "description": "Gets the average precision when applicable.", + "type": "number", + "readOnly": true, + "x-nullable": true + } } - } }, - "x-ms-examples": { - "Successful GetProject request": { - "$ref": "./examples/GetProject.json" - } - } - }, - "delete": { - "tags": [ - "ProjectApi" - ], - "summary": "Delete a specific project.", - "operationId": "DeleteProject", - "consumes": [], - "produces": [], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "204": { - "description": "No Content" - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + "Prediction": { + "description": "Prediction result.", + "type": "object", + "properties": { + "probability": { + "format": "float", + "description": "Probability of the tag.", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "tagId": { + "format": "uuid", + "description": "Id of the predicted tag.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "tagName": { + "description": "Name of the predicted tag.", + "type": "string", + "readOnly": true, + "x-nullable": true + }, + "boundingBox": { + "$ref": "#/definitions/BoundingBox", + "description": "Bounding box of the prediction.", + "readOnly": true, + "x-nullable": true + } } - } }, - "x-ms-examples": { - "Successful DeleteProject request": { - "$ref": "./examples/DeleteProject.json" - } - } - }, - "patch": { - "tags": [ - "ProjectApi" - ], - "summary": "Update a specific project.", - "operationId": "UpdateProject", - "consumes": [ - "application/json", - "application/xml", - "text/xml", - "application/x-www-form-urlencoded" - ], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The id of the project to update.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "updatedProject", - "in": "body", - "description": "The updated project model.", - "required": true, - "schema": { - "$ref": "#/definitions/Project" + "PredictionQueryResult": { + "type": "object", + "properties": { + "token": { + "$ref": "#/definitions/PredictionQueryToken", + "readOnly": true, + "x-nullable": false + }, + "results": { + "type": "array", + "items": { + "$ref": "#/definitions/StoredImagePrediction", + "x-nullable": false + }, + "readOnly": true + } } - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/Project" + }, + "PredictionQueryTag": { + "type": "object", + "properties": { + "id": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "minThreshold": { + "format": "float", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "maxThreshold": { + "format": "float", + "type": "number", + "readOnly": true, + "x-nullable": false + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + }, + "PredictionQueryToken": { + "type": "object", + "properties": { + "session": { + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "continuation": { + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "maxCount": { + "format": "int32", + "type": "integer", + "readOnly": false, + "x-nullable": false + }, + "orderBy": { + "enum": [ + "Newest", + "Oldest", + "Suggested" + ], + "type": "string", + "readOnly": false, + "x-nullable": false, + "x-ms-enum": { + "name": "OrderBy", + "modelAsString": true + } + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/definitions/PredictionQueryTag", + "x-nullable": false + }, + "readOnly": false + }, + "iterationId": { + "format": "uuid", + "type": "string", + "readOnly": false, + "x-nullable": true + }, + "startTime": { + "format": "date-time", + "type": "string", + "readOnly": false, + "x-nullable": true + }, + "endTime": { + "format": "date-time", + "type": "string", + "readOnly": false, + "x-nullable": true + }, + "application": { + "type": "string", + "readOnly": false, + "x-nullable": false + } } - } }, - "x-ms-examples": { - "Successful UpdateProject request": { - "$ref": "./examples/UpdateProject.json" - } - } - } - }, - "/projects/{projectId}/train": { - "post": { - "tags": [ - "ProjectApi" - ], - "summary": "Queues project for training.", - "operationId": "TrainProject", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "trainingType", - "in": "query", - "description": "The type of training to use to train the project (default: Regular).", - "required": false, - "type": "string", - "enum": [ - "Regular", - "Advanced" - ] - }, - { - "name": "reservedBudgetInHours", - "in": "query", - "description": "The number of hours reserved as budget for training (if applicable).", - "required": false, - "type": "integer", - "format": "int32", - "default": 0 - }, - { - "name": "forceTrain", - "in": "query", - "description": "Whether to force train even if dataset and configuration does not change (default: false).", - "required": false, - "type": "boolean", - "default": false - }, - { - "name": "notificationEmailAddress", - "in": "query", - "description": "The email address to send notification to when training finishes (default: null).", - "required": false, - "type": "string" - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/Iteration" - } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" - } - } - }, - "x-ms-examples": { - "Successful TrainProject request": { - "$ref": "./examples/TrainProject.json" - } - } - } - }, - "/projects/{projectId}/iterations": { - "get": { - "tags": [ - "ProjectApi" - ], - "summary": "Get iterations for the project.", - "operationId": "GetIterations", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/Iteration" - } - } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" - } - } - }, - "x-ms-examples": { - "Successful GetIterations request": { - "$ref": "./examples/GetIterations.json" - } - } - } - }, - "/projects/{projectId}/iterations/{iterationId}": { - "get": { - "tags": [ - "ProjectApi" - ], - "summary": "Get a specific iteration.", - "operationId": "GetIteration", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The id of the project the iteration belongs to.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "iterationId", - "in": "path", - "description": "The id of the iteration to get.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/Iteration" - } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + "Project": { + "description": "Represents a project.", + "required": [ + "name", + "description", + "settings" + ], + "type": "object", + "properties": { + "id": { + "format": "uuid", + "description": "Gets the project id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "name": { + "description": "Gets or sets the name of the project.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "description": { + "description": "Gets or sets the description of the project.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "settings": { + "$ref": "#/definitions/ProjectSettings", + "description": "Gets or sets the project settings.", + "readOnly": false, + "x-nullable": false + }, + "created": { + "format": "date-time", + "description": "Gets the date this project was created.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "lastModified": { + "format": "date-time", + "description": "Gets the date this project was last modified.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "thumbnailUri": { + "description": "Gets the thumbnail url representing the image.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "drModeEnabled": { + "description": "Gets if the DR mode is on.", + "type": "boolean", + "readOnly": true, + "x-nullable": true + } } - } }, - "x-ms-examples": { - "Successful GetIteration request": { - "$ref": "./examples/GetIteration.json" - } - } - }, - "delete": { - "tags": [ - "ProjectApi" - ], - "summary": "Delete a specific iteration of a project.", - "operationId": "DeleteIteration", - "consumes": [], - "produces": [], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "iterationId", - "in": "path", - "description": "The iteration id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "204": { - "description": "No Content" - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + "ProjectSettings": { + "description": "Represents settings associated with a project.", + "type": "object", + "properties": { + "domainId": { + "format": "uuid", + "description": "Gets or sets the id of the Domain to use with this project.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "classificationType": { + "description": "Gets or sets the classification type of the project.", + "enum": [ + "Multiclass", + "Multilabel" + ], + "type": "string", + "readOnly": false, + "x-nullable": true, + "x-ms-enum": { + "name": "Classifier", + "modelAsString": true + } + }, + "targetExportPlatforms": { + "description": "A list of ExportPlatform that the trained model should be able to support.", + "type": "array", + "items": { + "enum": [ + "CoreML", + "TensorFlow", + "DockerFile", + "ONNX", + "VAIDK" + ], + "type": "string", + "x-nullable": false + }, + "readOnly": false + } } - } }, - "x-ms-examples": { - "Successful DeleteIteration request": { - "$ref": "./examples/DeleteIteration.json" - } - } - }, - "patch": { - "tags": [ - "ProjectApi" - ], - "summary": "Update a specific iteration.", - "operationId": "UpdateIteration", - "consumes": [ - "application/json", - "application/xml", - "text/xml", - "application/x-www-form-urlencoded" - ], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "Project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "iterationId", - "in": "path", - "description": "Iteration id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "updatedIteration", - "in": "body", - "description": "The updated iteration model.", - "required": true, - "schema": { - "$ref": "#/definitions/Iteration" - } - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/Iteration" - } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + "Region": { + "required": [ + "tagId", + "left", + "top", + "width", + "height" + ], + "type": "object", + "properties": { + "tagId": { + "format": "uuid", + "description": "Id of the tag associated with this region.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "left": { + "format": "float", + "description": "Coordinate of the left boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "top": { + "format": "float", + "description": "Coordinate of the top boundary.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "width": { + "format": "float", + "description": "Width.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "height": { + "format": "float", + "description": "Height.", + "type": "number", + "readOnly": false, + "x-nullable": false + } } - } }, - "x-ms-examples": { - "Successful UpdateIteration request": { - "$ref": "./examples/UpdateIteration.json" - } - } - } - }, - "/projects/{projectId}/iterations/{iterationId}/publish": { - "post": { - "tags": [ - "ProjectApi" - ], - "summary": "Publish a specific iteration.", - "operationId": "PublishIteration", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "iterationId", - "in": "path", - "description": "The iteration id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "publishName", - "in": "query", - "description": "The name to give the published iteration.", - "required": true, - "type": "string" - }, - { - "name": "predictionId", - "in": "query", - "description": "The id of the prediction resource to publish to.", - "required": true, - "type": "string" - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "boolean" + "RegionProposal": { + "type": "object", + "properties": { + "confidence": { + "format": "float", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "boundingBox": { + "$ref": "#/definitions/BoundingBox", + "readOnly": true, + "x-nullable": false + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" - } - } }, - "x-ms-examples": { - "Successful PublishIteration request": { - "$ref": "./examples/PublishIteration.json" - } - } - }, - "delete": { - "tags": [ - "ProjectApi" - ], - "summary": "Unpublish a specific iteration.", - "operationId": "UnpublishIteration", - "consumes": [], - "produces": [], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "iterationId", - "in": "path", - "description": "The iteration id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "204": { - "description": "No Content" - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + "StoredImagePrediction": { + "description": "result of an image classification request.", + "type": "object", + "properties": { + "resizedImageUri": { + "description": "The URI to the (resized) prediction image.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "thumbnailUri": { + "description": "The URI to the thumbnail of the original prediction image.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "originalImageUri": { + "description": "The URI to the original prediction image.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "domain": { + "format": "uuid", + "description": "Domain used for the prediction.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "id": { + "format": "uuid", + "description": "Prediction Id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "project": { + "format": "uuid", + "description": "Project Id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "iteration": { + "format": "uuid", + "description": "Iteration Id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "created": { + "format": "date-time", + "description": "Date this prediction was created.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "predictions": { + "description": "List of predictions.", + "type": "array", + "items": { + "$ref": "#/definitions/Prediction", + "x-nullable": false + }, + "readOnly": true + } } - } }, - "x-ms-examples": { - "Successful UnpublishIteration request": { - "$ref": "./examples/UnpublishIteration.json" - } - } - } - }, - "/projects/{projectId}/iterations/{iterationId}/export": { - "get": { - "tags": [ - "ProjectApi" - ], - "summary": "Get the list of exports for a specific iteration.", - "operationId": "GetExports", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "iterationId", - "in": "path", - "description": "The iteration id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/Export" - } - } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + "Tag": { + "description": "Represents a Tag.", + "required": [ + "name", + "description", + "type" + ], + "type": "object", + "properties": { + "id": { + "format": "uuid", + "description": "Gets the Tag ID.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "name": { + "description": "Gets or sets the name of the tag.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "description": { + "description": "Gets or sets the description of the tag.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "type": { + "description": "Gets or sets the type of the tag.", + "enum": [ + "Regular", + "Negative" + ], + "type": "string", + "readOnly": false, + "x-nullable": false, + "x-ms-enum": { + "name": "TagType", + "modelAsString": true + } + }, + "imageCount": { + "format": "int32", + "description": "Gets the number of images with this tag.", + "type": "integer", + "readOnly": true, + "x-nullable": false + } } - } }, - "x-ms-examples": { - "Successful GetExports request": { - "$ref": "./examples/GetExports.json" - } - } - }, - "post": { - "tags": [ - "ProjectApi" - ], - "summary": "Export a trained iteration.", - "operationId": "ExportIteration", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "iterationId", - "in": "path", - "description": "The iteration id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "platform", - "in": "query", - "description": "The target platform.", - "required": true, - "type": "string", - "enum": [ - "CoreML", - "TensorFlow", - "DockerFile", - "ONNX", - "VAIDK" - ] - }, - { - "name": "flavor", - "in": "query", - "description": "The flavor of the target platform.", - "required": false, - "type": "string", - "enum": [ - "Linux", - "Windows", - "ONNX10", - "ONNX12", - "ARM" - ] - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/Export" + "TagPerformance": { + "description": "Represents performance data for a particular tag in a trained iteration.", + "type": "object", + "properties": { + "id": { + "format": "uuid", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "name": { + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "precision": { + "format": "float", + "description": "Gets the precision.", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "precisionStdDeviation": { + "format": "float", + "description": "Gets the standard deviation for the precision.", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "recall": { + "format": "float", + "description": "Gets the recall.", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "recallStdDeviation": { + "format": "float", + "description": "Gets the standard deviation for the recall.", + "type": "number", + "readOnly": true, + "x-nullable": false + }, + "averagePrecision": { + "format": "float", + "description": "Gets the average precision when applicable.", + "type": "number", + "readOnly": true, + "x-nullable": true + } } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" - } - } - }, - "x-ms-examples": { - "Successful ExportIteration request": { - "$ref": "./examples/ExportIteration.json" - } } - } }, - "/projects/{projectId}/tags/{tagId}": { - "get": { - "tags": [ - "TagsApi" - ], - "summary": "Get information about a specific tag.", - "operationId": "GetTag", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project this tag belongs to.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "tagId", - "in": "path", - "description": "The tag id.", + "parameters": { + "ApiKey": { + "name": "Training-Key", + "in": "header", + "description": "API key.", "required": true, "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "iterationId", - "in": "query", - "description": "The iteration to retrieve this tag from. Optional, defaults to current training set.", - "required": false, - "type": "string", - "format": "uuid" - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/Tag" - } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" - } - } + "x-ms-client-name": "ApiKey", + "x-ms-parameter-location": "client" }, - "x-ms-examples": { - "Successful GetTag request": { - "$ref": "./examples/GetTag.json" - } - } - }, - "delete": { - "tags": [ - "TagsApi" - ], - "summary": "Delete a tag from the project.", - "operationId": "DeleteTag", - "consumes": [], - "produces": [], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "tagId", - "in": "path", - "description": "Id of the tag to be deleted.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "204": { - "description": "No Content" - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" - } - } - }, - "x-ms-examples": { - "Successful DeleteTag request": { - "$ref": "./examples/DeleteTag.json" - } - } - }, - "patch": { - "tags": [ - "TagsApi" - ], - "summary": "Update a tag.", - "operationId": "UpdateTag", - "consumes": [ - "application/json", - "application/xml", - "text/xml", - "application/x-www-form-urlencoded" - ], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "tagId", + "Endpoint": { + "name": "Endpoint", "in": "path", - "description": "The id of the target tag.", + "description": "Supported Cognitive Services endpoints.", "required": true, "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "updatedTag", - "in": "body", - "description": "The updated tag model.", - "required": true, - "schema": { - "$ref": "#/definitions/Tag" - } - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/Tag" - } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" - } - } - }, - "x-ms-examples": { - "Successful UpdateTag request": { - "$ref": "./examples/UpdateTag.json" - } + "x-ms-parameter-location": "client", + "x-ms-skip-url-encoding": true } - } }, - "/projects/{projectId}/tags": { - "get": { - "tags": [ - "TagsApi" - ], - "summary": "Get the tags for a given project and iteration.", - "operationId": "GetTags", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], + "x-ms-parameterized-host": { + "hostTemplate": "{Endpoint}", + "useSchemePrefix": false, "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "iterationId", - "in": "query", - "description": "The iteration id. Defaults to workspace.", - "required": false, - "type": "string", - "format": "uuid" - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/Tag" - } - } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" + { + "$ref": "#/parameters/Endpoint" } - } - }, - "x-ms-examples": { - "Successful GetTags request": { - "$ref": "./examples/GetTags.json" - } - } - }, - "post": { - "tags": [ - "TagsApi" - ], - "summary": "Create a tag for the project.", - "operationId": "CreateTag", - "consumes": [], - "produces": [ - "application/json", - "application/xml", - "text/xml" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "name", - "in": "query", - "description": "The tag name.", - "required": true, - "type": "string" - }, - { - "name": "description", - "in": "query", - "description": "Optional description for the tag.", - "required": false, - "type": "string" - }, - { - "name": "type", - "in": "query", - "description": "Optional type for the tag.", - "required": false, - "type": "string", - "enum": [ - "Regular", - "Negative" - ] - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/Tag" - } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" - } - } - }, - "x-ms-examples": { - "Successful CreateTag request": { - "$ref": "./examples/CreateTag.json" - } - } - } - } - }, - "definitions": { - "Domain": { - "type": "object", - "properties": { - "id": { - "format": "uuid", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "name": { - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "type": { - "enum": [ - "Classification", - "ObjectDetection" - ], - "type": "string", - "readOnly": true, - "x-nullable": false, - "x-ms-enum": { - "name": "DomainType", - "modelAsString": true - } - }, - "exportable": { - "type": "boolean", - "readOnly": true, - "x-nullable": false - }, - "enabled": { - "type": "boolean", - "readOnly": true, - "x-nullable": false - } - } - }, - "ImageTagCreateBatch": { - "description": "Batch of image tags.", - "type": "object", - "properties": { - "tags": { - "description": "Image Tag entries to include in this batch.", - "type": "array", - "items": { - "$ref": "#/definitions/ImageTagCreateEntry", - "x-nullable": false - }, - "readOnly": false - } - } - }, - "ImageTagCreateEntry": { - "description": "Entry associating a tag to an image.", - "type": "object", - "properties": { - "imageId": { - "format": "uuid", - "description": "Id of the image.", - "type": "string", - "readOnly": false, - "x-nullable": false - }, - "tagId": { - "format": "uuid", - "description": "Id of the tag.", - "type": "string", - "readOnly": false, - "x-nullable": false - } - } - }, - "ImageTagCreateSummary": { - "type": "object", - "properties": { - "created": { - "type": "array", - "items": { - "$ref": "#/definitions/ImageTagCreateEntry" - }, - "readOnly": false, - "x-nullable": true - }, - "duplicated": { - "type": "array", - "items": { - "$ref": "#/definitions/ImageTagCreateEntry" - }, - "readOnly": false, - "x-nullable": true - }, - "exceeded": { - "type": "array", - "items": { - "$ref": "#/definitions/ImageTagCreateEntry" - }, - "readOnly": false, - "x-nullable": true - } - } - }, - "ImageRegionCreateBatch": { - "description": "Batch of image region information to create.", - "type": "object", - "properties": { - "regions": { - "type": "array", - "items": { - "$ref": "#/definitions/ImageRegionCreateEntry", - "x-nullable": false - }, - "readOnly": false - } - } - }, - "ImageRegionCreateEntry": { - "description": "Entry associating a region to an image.", - "required": [ - "imageId", - "tagId", - "left", - "top", - "width", - "height" - ], - "type": "object", - "properties": { - "imageId": { - "format": "uuid", - "description": "Id of the image.", - "type": "string", - "readOnly": false, - "x-nullable": false - }, - "tagId": { - "format": "uuid", - "description": "Id of the tag associated with this region.", - "type": "string", - "readOnly": false, - "x-nullable": false - }, - "left": { - "format": "float", - "description": "Coordinate of the left boundary.", - "type": "number", - "readOnly": false, - "x-nullable": false - }, - "top": { - "format": "float", - "description": "Coordinate of the top boundary.", - "type": "number", - "readOnly": false, - "x-nullable": false - }, - "width": { - "format": "float", - "description": "Width.", - "type": "number", - "readOnly": false, - "x-nullable": false - }, - "height": { - "format": "float", - "description": "Height.", - "type": "number", - "readOnly": false, - "x-nullable": false - } - } - }, - "ImageRegionCreateSummary": { - "type": "object", - "properties": { - "created": { - "type": "array", - "items": { - "$ref": "#/definitions/ImageRegionCreateResult" - }, - "readOnly": false, - "x-nullable": true - }, - "duplicated": { - "type": "array", - "items": { - "$ref": "#/definitions/ImageRegionCreateEntry" - }, - "readOnly": false, - "x-nullable": true - }, - "exceeded": { - "type": "array", - "items": { - "$ref": "#/definitions/ImageRegionCreateEntry" - }, - "readOnly": false, - "x-nullable": true - } - } - }, - "ImageRegionCreateResult": { - "required": [ - "tagId", - "left", - "top", - "width", - "height" - ], - "type": "object", - "properties": { - "imageId": { - "format": "uuid", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "regionId": { - "format": "uuid", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "tagName": { - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "created": { - "format": "date-time", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "tagId": { - "format": "uuid", - "description": "Id of the tag associated with this region.", - "type": "string", - "readOnly": false, - "x-nullable": false - }, - "left": { - "format": "float", - "description": "Coordinate of the left boundary.", - "type": "number", - "readOnly": false, - "x-nullable": false - }, - "top": { - "format": "float", - "description": "Coordinate of the top boundary.", - "type": "number", - "readOnly": false, - "x-nullable": false - }, - "width": { - "format": "float", - "description": "Width.", - "type": "number", - "readOnly": false, - "x-nullable": false - }, - "height": { - "format": "float", - "description": "Height.", - "type": "number", - "readOnly": false, - "x-nullable": false - } - } - }, - "Image": { - "description": "Image model to be sent as JSON.", - "type": "object", - "properties": { - "id": { - "format": "uuid", - "description": "Id of the image.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "created": { - "format": "date-time", - "description": "Date the image was created.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "width": { - "format": "int32", - "description": "Width of the image.", - "type": "integer", - "readOnly": true, - "x-nullable": false - }, - "height": { - "format": "int32", - "description": "Height of the image.", - "type": "integer", - "readOnly": true, - "x-nullable": false - }, - "resizedImageUri": { - "description": "The URI to the (resized) image used for training.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "thumbnailUri": { - "description": "The URI to the thumbnail of the original image.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "originalImageUri": { - "description": "The URI to the original uploaded image.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "tags": { - "description": "Tags associated with this image.", - "type": "array", - "items": { - "$ref": "#/definitions/ImageTag" - }, - "readOnly": true, - "x-nullable": true - }, - "regions": { - "description": "Regions associated with this image.", - "type": "array", - "items": { - "$ref": "#/definitions/ImageRegion" - }, - "readOnly": true, - "x-nullable": true - } - } - }, - "ImageTag": { - "type": "object", - "properties": { - "tagId": { - "format": "uuid", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "tagName": { - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "created": { - "format": "date-time", - "type": "string", - "readOnly": true, - "x-nullable": false - } - } - }, - "ImageRegion": { - "required": [ - "tagId", - "left", - "top", - "width", - "height" - ], - "type": "object", - "properties": { - "regionId": { - "format": "uuid", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "tagName": { - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "created": { - "format": "date-time", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "tagId": { - "format": "uuid", - "description": "Id of the tag associated with this region.", - "type": "string", - "readOnly": false, - "x-nullable": false - }, - "left": { - "format": "float", - "description": "Coordinate of the left boundary.", - "type": "number", - "readOnly": false, - "x-nullable": false - }, - "top": { - "format": "float", - "description": "Coordinate of the top boundary.", - "type": "number", - "readOnly": false, - "x-nullable": false - }, - "width": { - "format": "float", - "description": "Width.", - "type": "number", - "readOnly": false, - "x-nullable": false - }, - "height": { - "format": "float", - "description": "Height.", - "type": "number", - "readOnly": false, - "x-nullable": false - } - } - }, - "ImageCreateSummary": { - "type": "object", - "properties": { - "isBatchSuccessful": { - "description": "True if all of the images in the batch were created successfully, otherwise false.", - "type": "boolean", - "readOnly": true, - "x-nullable": false - }, - "images": { - "description": "List of the image creation results.", - "type": "array", - "items": { - "$ref": "#/definitions/ImageCreateResult", - "x-nullable": false - }, - "readOnly": true - } - } - }, - "ImageCreateResult": { - "type": "object", - "properties": { - "sourceUrl": { - "description": "Source URL of the image.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "status": { - "description": "Status of the image creation.", - "enum": [ - "OK", - "OKDuplicate", - "ErrorSource", - "ErrorImageFormat", - "ErrorImageSize", - "ErrorStorage", - "ErrorLimitExceed", - "ErrorTagLimitExceed", - "ErrorRegionLimitExceed", - "ErrorUnknown", - "ErrorNegativeAndRegularTagOnSameImage" - ], - "type": "string", - "readOnly": true, - "x-nullable": false, - "x-ms-enum": { - "name": "ImageCreateStatus", - "modelAsString": true - } - }, - "image": { - "$ref": "#/definitions/Image", - "description": "The image.", - "readOnly": true, - "x-nullable": false - } - } - }, - "ImageFileCreateBatch": { - "type": "object", - "properties": { - "images": { - "type": "array", - "items": { - "$ref": "#/definitions/ImageFileCreateEntry", - "x-nullable": false - }, - "readOnly": false - }, - "tagIds": { - "type": "array", - "items": { - "format": "uuid", - "type": "string", - "x-nullable": false - }, - "readOnly": false - } - } - }, - "ImageFileCreateEntry": { - "type": "object", - "properties": { - "name": { - "type": "string", - "readOnly": false, - "x-nullable": false - }, - "contents": { - "format": "byte", - "type": "string", - "readOnly": false, - "x-nullable": false - }, - "tagIds": { - "type": "array", - "items": { - "format": "uuid", - "type": "string", - "x-nullable": false - }, - "readOnly": false - }, - "regions": { - "type": "array", - "items": { - "$ref": "#/definitions/Region", - "x-nullable": false - }, - "readOnly": false - } - } - }, - "Region": { - "required": [ - "tagId", - "left", - "top", - "width", - "height" - ], - "type": "object", - "properties": { - "tagId": { - "format": "uuid", - "description": "Id of the tag associated with this region.", - "type": "string", - "readOnly": false, - "x-nullable": false - }, - "left": { - "format": "float", - "description": "Coordinate of the left boundary.", - "type": "number", - "readOnly": false, - "x-nullable": false - }, - "top": { - "format": "float", - "description": "Coordinate of the top boundary.", - "type": "number", - "readOnly": false, - "x-nullable": false - }, - "width": { - "format": "float", - "description": "Width.", - "type": "number", - "readOnly": false, - "x-nullable": false - }, - "height": { - "format": "float", - "description": "Height.", - "type": "number", - "readOnly": false, - "x-nullable": false - } - } - }, - "ImageUrlCreateBatch": { - "type": "object", - "properties": { - "images": { - "type": "array", - "items": { - "$ref": "#/definitions/ImageUrlCreateEntry", - "x-nullable": false - }, - "readOnly": false - }, - "tagIds": { - "type": "array", - "items": { - "format": "uuid", - "type": "string", - "x-nullable": false - }, - "readOnly": false - } - } - }, - "ImageUrlCreateEntry": { - "required": [ - "url" - ], - "type": "object", - "properties": { - "url": { - "description": "Url of the image.", - "type": "string", - "readOnly": false, - "x-nullable": false - }, - "tagIds": { - "type": "array", - "items": { - "format": "uuid", - "type": "string", - "x-nullable": false - }, - "readOnly": false - }, - "regions": { - "type": "array", - "items": { - "$ref": "#/definitions/Region", - "x-nullable": false - }, - "readOnly": false - } - } - }, - "ImageIdCreateBatch": { - "type": "object", - "properties": { - "images": { - "type": "array", - "items": { - "$ref": "#/definitions/ImageIdCreateEntry", - "x-nullable": false - }, - "readOnly": false - }, - "tagIds": { - "type": "array", - "items": { - "format": "uuid", - "type": "string", - "x-nullable": false - }, - "readOnly": false - } - } - }, - "ImageIdCreateEntry": { - "type": "object", - "properties": { - "id": { - "format": "uuid", - "description": "Id of the image.", - "type": "string", - "readOnly": false, - "x-nullable": false - }, - "tagIds": { - "type": "array", - "items": { - "format": "uuid", - "type": "string", - "x-nullable": false - }, - "readOnly": false - }, - "regions": { - "type": "array", - "items": { - "$ref": "#/definitions/Region", - "x-nullable": false - }, - "readOnly": false - } - } - }, - "ImageRegionProposal": { - "type": "object", - "properties": { - "projectId": { - "format": "uuid", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "imageId": { - "format": "uuid", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "proposals": { - "type": "array", - "items": { - "$ref": "#/definitions/RegionProposal", - "x-nullable": false - }, - "readOnly": true - } - } - }, - "RegionProposal": { - "type": "object", - "properties": { - "confidence": { - "format": "float", - "type": "number", - "readOnly": true, - "x-nullable": false - }, - "boundingBox": { - "$ref": "#/definitions/BoundingBox", - "readOnly": true, - "x-nullable": false - } - } - }, - "BoundingBox": { - "description": "Bounding box that defines a region of an image.", - "required": [ - "left", - "top", - "width", - "height" - ], - "type": "object", - "properties": { - "left": { - "format": "float", - "description": "Coordinate of the left boundary.", - "type": "number", - "readOnly": false, - "x-nullable": false - }, - "top": { - "format": "float", - "description": "Coordinate of the top boundary.", - "type": "number", - "readOnly": false, - "x-nullable": false - }, - "width": { - "format": "float", - "description": "Width.", - "type": "number", - "readOnly": false, - "x-nullable": false - }, - "height": { - "format": "float", - "description": "Height.", - "type": "number", - "readOnly": false, - "x-nullable": false - } - } - }, - "ImageUrl": { - "description": "Image url.", - "required": [ - "url" - ], - "type": "object", - "properties": { - "url": { - "description": "Url of the image.", - "type": "string", - "readOnly": false, - "x-nullable": false - } - } - }, - "ImagePrediction": { - "description": "Result of an image prediction request.", - "type": "object", - "properties": { - "id": { - "format": "uuid", - "description": "Prediction Id.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "project": { - "format": "uuid", - "description": "Project Id.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "iteration": { - "format": "uuid", - "description": "Iteration Id.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "created": { - "format": "date-time", - "description": "Date this prediction was created.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "predictions": { - "description": "List of predictions.", - "type": "array", - "items": { - "$ref": "#/definitions/Prediction", - "x-nullable": false - }, - "readOnly": true - } - } - }, - "Prediction": { - "description": "Prediction result.", - "type": "object", - "properties": { - "probability": { - "format": "float", - "description": "Probability of the tag.", - "type": "number", - "readOnly": true, - "x-nullable": false - }, - "tagId": { - "format": "uuid", - "description": "Id of the predicted tag.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "tagName": { - "description": "Name of the predicted tag.", - "type": "string", - "readOnly": true, - "x-nullable": true - }, - "boundingBox": { - "$ref": "#/definitions/BoundingBox", - "description": "Bounding box of the prediction.", - "readOnly": true, - "x-nullable": true - } - } - }, - "PredictionQueryToken": { - "type": "object", - "properties": { - "session": { - "type": "string", - "readOnly": false, - "x-nullable": false - }, - "continuation": { - "type": "string", - "readOnly": false, - "x-nullable": false - }, - "maxCount": { - "format": "int32", - "type": "integer", - "readOnly": false, - "x-nullable": false - }, - "orderBy": { - "enum": [ - "Newest", - "Oldest", - "Suggested" - ], - "type": "string", - "readOnly": false, - "x-nullable": false, - "x-ms-enum": { - "name": "OrderBy", - "modelAsString": true - } - }, - "tags": { - "type": "array", - "items": { - "$ref": "#/definitions/PredictionQueryTag", - "x-nullable": false - }, - "readOnly": false - }, - "iterationId": { - "format": "uuid", - "type": "string", - "readOnly": false, - "x-nullable": true - }, - "startTime": { - "format": "date-time", - "type": "string", - "readOnly": false, - "x-nullable": true - }, - "endTime": { - "format": "date-time", - "type": "string", - "readOnly": false, - "x-nullable": true - }, - "application": { - "type": "string", - "readOnly": false, - "x-nullable": false - } - } - }, - "PredictionQueryTag": { - "type": "object", - "properties": { - "id": { - "format": "uuid", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "minThreshold": { - "format": "float", - "type": "number", - "readOnly": true, - "x-nullable": false - }, - "maxThreshold": { - "format": "float", - "type": "number", - "readOnly": true, - "x-nullable": false - } - } - }, - "PredictionQueryResult": { - "type": "object", - "properties": { - "token": { - "$ref": "#/definitions/PredictionQueryToken", - "readOnly": true, - "x-nullable": false - }, - "results": { - "type": "array", - "items": { - "$ref": "#/definitions/StoredImagePrediction", - "x-nullable": false - }, - "readOnly": true - } - } - }, - "StoredImagePrediction": { - "description": "result of an image classification request.", - "type": "object", - "properties": { - "resizedImageUri": { - "description": "The URI to the (resized) prediction image.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "thumbnailUri": { - "description": "The URI to the thumbnail of the original prediction image.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "originalImageUri": { - "description": "The URI to the original prediction image.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "domain": { - "format": "uuid", - "description": "Domain used for the prediction.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "id": { - "format": "uuid", - "description": "Prediction Id.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "project": { - "format": "uuid", - "description": "Project Id.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "iteration": { - "format": "uuid", - "description": "Iteration Id.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "created": { - "format": "date-time", - "description": "Date this prediction was created.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "predictions": { - "description": "List of predictions.", - "type": "array", - "items": { - "$ref": "#/definitions/Prediction", - "x-nullable": false - }, - "readOnly": true - } - } - }, - "IterationPerformance": { - "description": "Represents the detailed performance data for a trained iteration.", - "type": "object", - "properties": { - "perTagPerformance": { - "description": "Gets the per-tag performance details for this iteration.", - "type": "array", - "items": { - "$ref": "#/definitions/TagPerformance", - "x-nullable": false - }, - "readOnly": true - }, - "precision": { - "format": "float", - "description": "Gets the precision.", - "type": "number", - "readOnly": true, - "x-nullable": false - }, - "precisionStdDeviation": { - "format": "float", - "description": "Gets the standard deviation for the precision.", - "type": "number", - "readOnly": true, - "x-nullable": false - }, - "recall": { - "format": "float", - "description": "Gets the recall.", - "type": "number", - "readOnly": true, - "x-nullable": false - }, - "recallStdDeviation": { - "format": "float", - "description": "Gets the standard deviation for the recall.", - "type": "number", - "readOnly": true, - "x-nullable": false - }, - "averagePrecision": { - "format": "float", - "description": "Gets the average precision when applicable.", - "type": "number", - "readOnly": true, - "x-nullable": true - } - } - }, - "TagPerformance": { - "description": "Represents performance data for a particular tag in a trained iteration.", - "type": "object", - "properties": { - "id": { - "format": "uuid", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "name": { - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "precision": { - "format": "float", - "description": "Gets the precision.", - "type": "number", - "readOnly": true, - "x-nullable": false - }, - "precisionStdDeviation": { - "format": "float", - "description": "Gets the standard deviation for the precision.", - "type": "number", - "readOnly": true, - "x-nullable": false - }, - "recall": { - "format": "float", - "description": "Gets the recall.", - "type": "number", - "readOnly": true, - "x-nullable": false - }, - "recallStdDeviation": { - "format": "float", - "description": "Gets the standard deviation for the recall.", - "type": "number", - "readOnly": true, - "x-nullable": false - }, - "averagePrecision": { - "format": "float", - "description": "Gets the average precision when applicable.", - "type": "number", - "readOnly": true, - "x-nullable": true - } - } - }, - "ImagePerformance": { - "description": "Image performance model.", - "type": "object", - "properties": { - "predictions": { - "type": "array", - "items": { - "$ref": "#/definitions/Prediction" - }, - "readOnly": true, - "x-nullable": true - }, - "id": { - "format": "uuid", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "created": { - "format": "date-time", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "width": { - "format": "int32", - "type": "integer", - "readOnly": true, - "x-nullable": false - }, - "height": { - "format": "int32", - "type": "integer", - "readOnly": true, - "x-nullable": false - }, - "imageUri": { - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "thumbnailUri": { - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "tags": { - "type": "array", - "items": { - "$ref": "#/definitions/ImageTag" - }, - "readOnly": true, - "x-nullable": true - }, - "regions": { - "type": "array", - "items": { - "$ref": "#/definitions/ImageRegion" - }, - "readOnly": true, - "x-nullable": true - } - } - }, - "Project": { - "description": "Represents a project.", - "required": [ - "name", - "description", - "settings" - ], - "type": "object", - "properties": { - "id": { - "format": "uuid", - "description": "Gets the project id.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "name": { - "description": "Gets or sets the name of the project.", - "type": "string", - "readOnly": false, - "x-nullable": false - }, - "description": { - "description": "Gets or sets the description of the project.", - "type": "string", - "readOnly": false, - "x-nullable": false - }, - "settings": { - "$ref": "#/definitions/ProjectSettings", - "description": "Gets or sets the project settings.", - "readOnly": false, - "x-nullable": false - }, - "created": { - "format": "date-time", - "description": "Gets the date this project was created.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "lastModified": { - "format": "date-time", - "description": "Gets the date this project was last modified.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "thumbnailUri": { - "description": "Gets the thumbnail url representing the image.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "drModeEnabled": { - "description": "Gets if the DR mode is on.", - "type": "boolean", - "readOnly": true, - "x-nullable": true - } - } - }, - "ProjectSettings": { - "description": "Represents settings associated with a project.", - "type": "object", - "properties": { - "domainId": { - "format": "uuid", - "description": "Gets or sets the id of the Domain to use with this project.", - "type": "string", - "readOnly": false, - "x-nullable": false - }, - "classificationType": { - "description": "Gets or sets the classification type of the project.", - "enum": [ - "Multiclass", - "Multilabel" - ], - "type": "string", - "readOnly": false, - "x-nullable": true, - "x-ms-enum": { - "name": "Classifier", - "modelAsString": true - } - }, - "targetExportPlatforms": { - "description": "A list of ExportPlatform that the trained model should be able to support.", - "type": "array", - "items": { - "enum": [ - "CoreML", - "TensorFlow", - "DockerFile", - "ONNX", - "VAIDK" - ], - "type": "string", - "x-nullable": false - }, - "readOnly": false - } - } - }, - "Iteration": { - "description": "Iteration model to be sent over JSON.", - "required": [ - "name" - ], - "type": "object", - "properties": { - "id": { - "format": "uuid", - "description": "Gets the id of the iteration.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "name": { - "description": "Gets or sets the name of the iteration.", - "type": "string", - "readOnly": false, - "x-nullable": false - }, - "status": { - "description": "Gets the current iteration status.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "created": { - "format": "date-time", - "description": "Gets the time this iteration was completed.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "lastModified": { - "format": "date-time", - "description": "Gets the time this iteration was last modified.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "trainedAt": { - "format": "date-time", - "description": "Gets the time this iteration was last modified.", - "type": "string", - "readOnly": true, - "x-nullable": true - }, - "projectId": { - "format": "uuid", - "description": "Gets the project id of the iteration.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "exportable": { - "description": "Whether the iteration can be exported to another format for download.", - "type": "boolean", - "readOnly": true, - "x-nullable": false - }, - "exportableTo": { - "description": "A set of platforms this iteration can export to.", - "type": "array", - "items": { - "enum": [ - "CoreML", - "TensorFlow", - "DockerFile", - "ONNX", - "VAIDK" - ], - "type": "string", - "x-nullable": false - }, - "readOnly": true - }, - "domainId": { - "format": "uuid", - "description": "Get or sets a guid of the domain the iteration has been trained on.", - "type": "string", - "readOnly": true, - "x-nullable": true - }, - "classificationType": { - "description": "Gets the classification type of the project.", - "enum": [ - "Multiclass", - "Multilabel" - ], - "type": "string", - "readOnly": true, - "x-nullable": true, - "x-ms-enum": { - "name": "Classifier", - "modelAsString": true - } - }, - "trainingType": { - "description": "Gets the training type of the iteration.", - "enum": [ - "Regular", - "Advanced" - ], - "type": "string", - "readOnly": true, - "x-nullable": false, - "x-ms-enum": { - "name": "TrainingType", - "modelAsString": true - } - }, - "reservedBudgetInHours": { - "format": "int32", - "description": "Gets the reserved advanced training budget for the iteration.", - "type": "integer", - "readOnly": true, - "x-nullable": false - }, - "publishName": { - "description": "Name of the published model.", - "type": "string", - "readOnly": true, - "x-nullable": true - }, - "originalPublishResourceId": { - "description": "Resource Provider Id this iteration was originally published to.", - "type": "string", - "readOnly": true, - "x-nullable": true - } - } - }, - "Export": { - "type": "object", - "properties": { - "platform": { - "description": "Platform of the export.", - "enum": [ - "CoreML", - "TensorFlow", - "DockerFile", - "ONNX", - "VAIDK" - ], - "type": "string", - "readOnly": true, - "x-nullable": false, - "x-ms-enum": { - "name": "ExportPlatform", - "modelAsString": true - } - }, - "status": { - "description": "Status of the export.", - "enum": [ - "Exporting", - "Failed", - "Done" - ], - "type": "string", - "readOnly": true, - "x-nullable": false, - "x-ms-enum": { - "name": "ExportStatus", - "modelAsString": true - } - }, - "downloadUri": { - "description": "URI used to download the model.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "flavor": { - "description": "Flavor of the export.", - "enum": [ - "Linux", - "Windows", - "ONNX10", - "ONNX12", - "ARM" - ], - "type": "string", - "readOnly": true, - "x-nullable": true, - "x-ms-enum": { - "name": "ExportFlavor", - "modelAsString": true - } - }, - "newerVersionAvailable": { - "description": "Indicates an updated version of the export package is available and should be re-exported for the latest changes.", - "type": "boolean", - "readOnly": true, - "x-nullable": false - } - } - }, - "Tag": { - "description": "Represents a Tag.", - "required": [ - "name", - "description", - "type" - ], - "type": "object", - "properties": { - "id": { - "format": "uuid", - "description": "Gets the Tag ID.", - "type": "string", - "readOnly": true, - "x-nullable": false - }, - "name": { - "description": "Gets or sets the name of the tag.", - "type": "string", - "readOnly": false, - "x-nullable": false - }, - "description": { - "description": "Gets or sets the description of the tag.", - "type": "string", - "readOnly": false, - "x-nullable": false - }, - "type": { - "description": "Gets or sets the type of the tag.", - "enum": [ - "Regular", - "Negative" - ], - "type": "string", - "readOnly": false, - "x-nullable": false, - "x-ms-enum": { - "name": "TagType", - "modelAsString": true - } - }, - "imageCount": { - "format": "int32", - "description": "Gets the number of images with this tag.", - "type": "integer", - "readOnly": true, - "x-nullable": false - } - } - }, - "CustomVisionError": { - "required": [ - "code", - "message" - ], - "type": "object", - "properties": { - "code": { - "description": "The error code.", - "enum": [ - "NoError", - "BadRequest", - "BadRequestExceededBatchSize", - "BadRequestNotSupported", - "BadRequestInvalidIds", - "BadRequestProjectName", - "BadRequestProjectNameNotUnique", - "BadRequestProjectDescription", - "BadRequestProjectUnknownDomain", - "BadRequestProjectUnknownClassification", - "BadRequestProjectUnsupportedDomainTypeChange", - "BadRequestProjectUnsupportedExportPlatform", - "BadRequestIterationName", - "BadRequestIterationNameNotUnique", - "BadRequestIterationDescription", - "BadRequestIterationIsNotTrained", - "BadRequestWorkspaceCannotBeModified", - "BadRequestWorkspaceNotDeletable", - "BadRequestTagName", - "BadRequestTagNameNotUnique", - "BadRequestTagDescription", - "BadRequestTagType", - "BadRequestMultipleNegativeTag", - "BadRequestImageTags", - "BadRequestImageRegions", - "BadRequestNegativeAndRegularTagOnSameImage", - "BadRequestRequiredParamIsNull", - "BadRequestIterationIsPublished", - "BadRequestInvalidPublishName", - "BadRequestInvalidPublishTarget", - "BadRequestUnpublishFailed", - "BadRequestIterationNotPublished", - "BadRequestSubscriptionApi", - "BadRequestExceedProjectLimit", - "BadRequestExceedIterationPerProjectLimit", - "BadRequestExceedTagPerProjectLimit", - "BadRequestExceedTagPerImageLimit", - "BadRequestExceededQuota", - "BadRequestCannotMigrateProjectWithName", - "BadRequestNotLimitedTrial", - "BadRequestImageBatch", - "BadRequestImageStream", - "BadRequestImageUrl", - "BadRequestImageFormat", - "BadRequestImageSizeBytes", - "BadRequestImageExceededCount", - "BadRequestTrainingNotNeeded", - "BadRequestTrainingNotNeededButTrainingPipelineUpdated", - "BadRequestTrainingValidationFailed", - "BadRequestClassificationTrainingValidationFailed", - "BadRequestMultiClassClassificationTrainingValidationFailed", - "BadRequestMultiLabelClassificationTrainingValidationFailed", - "BadRequestDetectionTrainingValidationFailed", - "BadRequestTrainingAlreadyInProgress", - "BadRequestDetectionTrainingNotAllowNegativeTag", - "BadRequestInvalidEmailAddress", - "BadRequestDomainNotSupportedForAdvancedTraining", - "BadRequestExportPlatformNotSupportedForAdvancedTraining", - "BadRequestReservedBudgetInHoursNotEnoughForAdvancedTraining", - "BadRequestExportValidationFailed", - "BadRequestExportAlreadyInProgress", - "BadRequestPredictionIdsMissing", - "BadRequestPredictionIdsExceededCount", - "BadRequestPredictionTagsExceededCount", - "BadRequestPredictionResultsExceededCount", - "BadRequestPredictionInvalidApplicationName", - "BadRequestPredictionInvalidQueryParameters", - "BadRequestInvalid", - "UnsupportedMediaType", - "Forbidden", - "ForbiddenUser", - "ForbiddenUserResource", - "ForbiddenUserSignupDisabled", - "ForbiddenUserSignupAllowanceExceeded", - "ForbiddenUserDoesNotExist", - "ForbiddenUserDisabled", - "ForbiddenUserInsufficientCapability", - "ForbiddenDRModeEnabled", - "ForbiddenInvalid", - "NotFound", - "NotFoundProject", - "NotFoundProjectDefaultIteration", - "NotFoundIteration", - "NotFoundIterationPerformance", - "NotFoundTag", - "NotFoundImage", - "NotFoundDomain", - "NotFoundApimSubscription", - "NotFoundInvalid", - "Conflict", - "ConflictInvalid", - "ErrorUnknown", - "ErrorProjectInvalidWorkspace", - "ErrorProjectInvalidPipelineConfiguration", - "ErrorProjectInvalidDomain", - "ErrorProjectTrainingRequestFailed", - "ErrorProjectExportRequestFailed", - "ErrorFeaturizationServiceUnavailable", - "ErrorFeaturizationQueueTimeout", - "ErrorFeaturizationInvalidFeaturizer", - "ErrorFeaturizationAugmentationUnavailable", - "ErrorFeaturizationUnrecognizedJob", - "ErrorFeaturizationAugmentationError", - "ErrorExporterInvalidPlatform", - "ErrorExporterInvalidFeaturizer", - "ErrorExporterInvalidClassifier", - "ErrorPredictionServiceUnavailable", - "ErrorPredictionModelNotFound", - "ErrorPredictionModelNotCached", - "ErrorPrediction", - "ErrorPredictionStorage", - "ErrorRegionProposal", - "ErrorInvalid" - ], - "type": "string", - "x-ms-enum": { - "name": "CustomVisionErrorCodes", - "modelAsString": true - } - }, - "message": { - "description": "A message explaining the error reported by the service.", - "type": "string" - } - } - } - }, - "parameters": { - "ApiKey": { - "name": "Training-Key", - "in": "header", - "description": "API key.", - "required": true, - "type": "string", - "x-ms-client-name": "ApiKey", - "x-ms-parameter-location": "client" - }, - "Endpoint": { - "name": "Endpoint", - "in": "path", - "description": "Supported Cognitive Services endpoints.", - "required": true, - "type": "string", - "x-ms-parameter-location": "client", - "x-ms-skip-url-encoding": true + ] } - }, - "x-ms-parameterized-host": { - "hostTemplate": "{Endpoint}", - "useSchemePrefix": false, - "parameters": [ - { - "$ref": "#/parameters/Endpoint" - } - ] - } -} +} \ No newline at end of file From 967faba9bd40bb7842aaa426aa457dcb35ba756e Mon Sep 17 00:00:00 2001 From: Andrew Reddish Date: Mon, 15 Jul 2019 04:58:04 -0700 Subject: [PATCH 3/7] Add v3.1 changes --- .../CustomVision/Training/readme.md | 10 +- .../Training/stable/v3.1/Training.json | 726 +++++++++++++++--- .../v3.1/examples/CreateImageRegions.json | 30 + .../stable/v3.1/examples/CreateImageTags.json | 31 + .../v3.1/examples/CreateImagesFromData.json | 62 ++ .../v3.1/examples/CreateImagesFromFiles.json | 50 ++ .../examples/CreateImagesFromPredictions.json | 49 ++ .../v3.1/examples/CreateImagesFromUrls.json | 49 ++ .../stable/v3.1/examples/CreateProject.json | 26 + .../stable/v3.1/examples/CreateTag.json | 23 + .../v3.1/examples/DeleteImageRegions.json | 14 + .../stable/v3.1/examples/DeleteImageTags.json | 19 + .../stable/v3.1/examples/DeleteImages.json | 15 + .../stable/v3.1/examples/DeleteIteration.json | 12 + .../v3.1/examples/DeletePrediction.json | 15 + .../stable/v3.1/examples/DeleteProject.json | 11 + .../stable/v3.1/examples/DeleteTag.json | 12 + .../stable/v3.1/examples/ExportIteration.json | 21 + .../stable/v3.1/examples/GetDomain.json | 20 + .../stable/v3.1/examples/GetDomains.json | 70 ++ .../stable/v3.1/examples/GetExports.json | 22 + .../examples/GetImagePerformanceCount.json | 18 + .../v3.1/examples/GetImagePerformances.json | 43 ++ .../examples/GetImageRegionProposals.json | 29 + .../stable/v3.1/examples/GetImagesByIds.json | 15 + .../stable/v3.1/examples/GetIteration.json | 34 + .../examples/GetIterationPerformance.json | 39 + .../stable/v3.1/examples/GetIterations.json | 74 ++ .../stable/v3.1/examples/GetProject.json | 24 + .../stable/v3.1/examples/GetProjects.json | 25 + .../Training/stable/v3.1/examples/GetTag.json | 21 + .../v3.1/examples/GetTaggedImageCount.json | 15 + .../stable/v3.1/examples/GetTaggedImages.json | 15 + .../stable/v3.1/examples/GetTags.json | 22 + .../v3.1/examples/GetUntaggedImageCount.json | 15 + .../v3.1/examples/GetUntaggedImages.json | 15 + .../v3.1/examples/PublishIteration.json | 17 + .../v3.1/examples/QueryPredictions.json | 66 ++ .../examples/QuerySuggestedImageCount.json | 20 + .../v3.1/examples/QuerySuggestedImages.json | 54 ++ .../stable/v3.1/examples/QuickTestImage.json | 33 + .../v3.1/examples/QuickTestImageUrl.json | 35 + .../v3.1/examples/SuggestTagsAndRegions.json | 39 + .../stable/v3.1/examples/TrainProject.json | 32 + .../v3.1/examples/UnpublishIteration.json | 12 + .../stable/v3.1/examples/UpdateIteration.json | 37 + .../stable/v3.1/examples/UpdateProject.json | 31 + .../stable/v3.1/examples/UpdateTag.json | 26 + .../Training/stable/v3.1/v3.1-Training.json | Bin 0 -> 396980 bytes 49 files changed, 1992 insertions(+), 101 deletions(-) create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImageRegions.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImageTags.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImagesFromData.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImagesFromFiles.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImagesFromPredictions.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImagesFromUrls.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateProject.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateTag.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteImageRegions.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteImageTags.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteImages.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteIteration.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeletePrediction.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteProject.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteTag.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/ExportIteration.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetDomain.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetDomains.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetExports.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetImagePerformanceCount.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetImagePerformances.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetImageRegionProposals.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetImagesByIds.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetIteration.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetIterationPerformance.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetIterations.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetProject.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetProjects.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetTag.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetTaggedImageCount.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetTaggedImages.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetTags.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetUntaggedImageCount.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetUntaggedImages.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/PublishIteration.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QueryPredictions.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuerySuggestedImageCount.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuerySuggestedImages.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuickTestImage.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuickTestImageUrl.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/SuggestTagsAndRegions.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/TrainProject.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/UnpublishIteration.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/UpdateIteration.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/UpdateProject.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/UpdateTag.json create mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/v3.1-Training.json diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/readme.md b/specification/cognitiveservices/data-plane/CustomVision/Training/readme.md index ce4d4504d2ab..14c1d169842f 100644 --- a/specification/cognitiveservices/data-plane/CustomVision/Training/readme.md +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/readme.md @@ -4,11 +4,11 @@ Configuration for generating Custom Vision Training SDK. -The current release is `release_3_0`. +The current release is `release_3_1`. ``` yaml -tag: release_3_0 +tag: release_3_1 openapi-type: data-plane ``` # Releases @@ -41,6 +41,12 @@ These settings apply only when `--tag=release_3_0` is specified on the command l input-file: stable/v3.0/Training.json ``` +### Release 3.1 +These settings apply only when `--tag=release_3_1` is specified on the command line. + +``` yaml $(tag) == 'release_3_1' +input-file: stable/v3.1/Training.json +``` # Validation ## Suppression diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json index 0526b777b789..339e374d40a0 100644 --- a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json @@ -1,11 +1,11 @@ -{ +{ "swagger": "2.0", "info": { - "version": "3.0", + "version": "3.1", "title": "Custom Vision Training Client" }, "host": "southcentralus.api.cognitive.microsoft.com", - "basePath": "/customvision/v3.0/training", + "basePath": "/customvision/v3.1/training", "schemes": [ "https" ], @@ -457,7 +457,11 @@ "summary": "Delete images from the set of training images.", "operationId": "DeleteImages", "consumes": [], - "produces": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], "parameters": [ { "name": "projectId", @@ -472,7 +476,7 @@ "name": "imageIds", "in": "query", "description": "Ids of the images to be deleted. Limited to 256 images per batch.", - "required": true, + "required": false, "type": "array", "items": { "type": "string", @@ -483,11 +487,28 @@ "maxItems": 256, "minItems": 0 }, + { + "name": "allImages", + "in": "query", + "description": "Flag to specify delete all images, specify this flag or a list of images. Using this flag will return a 202 response to indicate the images are being deleted.", + "required": false, + "type": "boolean" + }, + { + "name": "allIterations", + "in": "query", + "description": "Removes these images from all iterations, not just the current workspace. Using this flag will return a 202 response to indicate the images are being deleted.", + "required": false, + "type": "boolean" + }, { "$ref": "#/parameters/ApiKey" } ], "responses": { + "202": { + "description": "Accepted" + }, "204": { "description": "No Content" }, @@ -505,6 +526,62 @@ } } }, + "/projects/{projectId}/images/{imageId}/regionproposals": { + "post": { + "tags": [ + "ImageRegionProposalApi" + ], + "summary": "Get region proposals for an image. Returns empty array if no proposals are found.", + "description": "This API will get region proposals for an image along with confidences for the region. It returns an empty array if no proposals are found.", + "operationId": "GetImageRegionProposals", + "consumes": [], + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "imageId", + "in": "path", + "description": "The image id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ImageRegionProposal" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful GetImageRegionProposals request": { + "$ref": "./examples/GetImageRegionProposals.json" + } + } + } + }, "/projects/{projectId}/images/files": { "post": { "tags": [ @@ -823,6 +900,154 @@ } } }, + "/projects/{projectId}/images/suggested": { + "post": { + "tags": [ + "ImageApi" + ], + "summary": "Get untagged images whose suggested tags match given tags. Returns empty array if no images are found.", + "description": "This API will fetch untagged images filtered by suggested tags Ids. It returns an empty array if no images are found.", + "operationId": "QuerySuggestedImages", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "query", + "description": "IterationId to use for the suggested tags and regions.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "query", + "in": "body", + "description": "Contains properties we need to query suggested images.", + "required": true, + "schema": { + "$ref": "#/definitions/SuggestedTagAndRegionQueryToken" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/SuggestedTagAndRegionQuery" + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful QuerySuggestedImages request": { + "$ref": "./examples/QuerySuggestedImages.json" + } + } + } + }, + "/projects/{projectId}/images/suggested/count": { + "post": { + "tags": [ + "ImageApi" + ], + "summary": "Get count of images whose suggested tags match given tags and their probabilities are greater than or equal to the given threshold. Returns count as 0 if none found.", + "description": "This API takes in tagIds to get count of untagged images per suggested tags for a given threshold.", + "operationId": "QuerySuggestedImageCount", + "consumes": [ + "application/json", + "application/xml", + "text/xml", + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "query", + "description": "IterationId to use for the suggested tags and regions.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "query", + "in": "body", + "description": "Model that contains tagIds, threshold and projectType to query by.", + "required": true, + "schema": { + "$ref": "#/definitions/TagFilter" + } + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "additionalProperties": { + "format": "int32", + "type": "integer" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful QuerySuggestedImageCount request": { + "$ref": "./examples/QuerySuggestedImageCount.json" + } + } + } + }, "/projects/{projectId}/images/tagged": { "get": { "tags": [ @@ -1343,62 +1568,6 @@ } } }, - "/projects/{projectId}/images/{imageId}/regionproposals": { - "post": { - "tags": [ - "ImageRegionProposalApi" - ], - "summary": "Get region proposals for an image. Returns empty array if no proposals are found.", - "description": "This API will get region proposals for an image along with confidences for the region. It returns an empty array if no proposals are found.", - "operationId": "GetImageRegionProposals", - "consumes": [], - "produces": [ - "application/json" - ], - "parameters": [ - { - "name": "projectId", - "in": "path", - "description": "The project id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "name": "imageId", - "in": "path", - "description": "The image id.", - "required": true, - "type": "string", - "format": "uuid", - "x-nullable": false - }, - { - "$ref": "#/parameters/ApiKey" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/ImageRegionProposal" - } - }, - "default": { - "description": "Error response", - "schema": { - "$ref": "#/definitions/CustomVisionError" - } - } - }, - "x-ms-examples": { - "Successful GetImageRegionProposals request": { - "$ref": "./examples/GetImageRegionProposals.json" - } - } - } - }, "/projects/{projectId}/iterations": { "get": { "tags": [ @@ -1739,7 +1908,9 @@ "Windows", "ONNX10", "ONNX12", - "ARM" + "ARM", + "TensorFlowNormal", + "TensorFlowLite" ] }, { @@ -2291,8 +2462,16 @@ "format": "uuid" }, { - "name": "imageData", - "in": "formData", + "name": "store", + "in": "query", + "description": "Optional. Specifies whether or not to store the result of this prediction. The default is true, to store.", + "required": false, + "type": "boolean", + "default": true + }, + { + "name": "imageData", + "in": "formData", "description": "Binary image data. Supported formats are JPEG, GIF, PNG, and BMP. Supports images up to 6MB.", "required": true, "type": "file" @@ -2367,6 +2546,14 @@ "type": "string", "format": "uuid" }, + { + "name": "store", + "in": "query", + "description": "Optional. Specifies whether or not to store the result of this prediction. The default is true, to store.", + "required": false, + "type": "boolean", + "default": true + }, { "$ref": "#/parameters/ApiKey" } @@ -2704,6 +2891,82 @@ } } }, + "/projects/{projectId}/tagsandregions/suggestions": { + "post": { + "tags": [ + "SuggestTagsAndRegionsApi" + ], + "summary": "Suggest tags and regions for an array/batch of untagged images. Returns empty array if no tags are found.", + "description": "This API will get suggested tags and regions for an array/batch of untagged images along with confidences for the tags. It returns an empty array if no tags are found.\r\nThere is a limit of 64 images in the batch.", + "operationId": "SuggestTagsAndRegions", + "consumes": [], + "produces": [ + "application/json", + "application/xml", + "text/xml" + ], + "parameters": [ + { + "name": "projectId", + "in": "path", + "description": "The project id.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "iterationId", + "in": "query", + "description": "IterationId to use for tag and region suggestion.", + "required": true, + "type": "string", + "format": "uuid", + "x-nullable": false + }, + { + "name": "imageIds", + "in": "query", + "description": "Array of image ids tag suggestion are needed for. Use GetUntaggedImages API to get imageIds.", + "required": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "x-nullable": false + }, + "collectionFormat": "csv", + "maxItems": 64, + "minItems": 0 + }, + { + "$ref": "#/parameters/ApiKey" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/SuggestedTagAndRegion" + } + } + }, + "default": { + "description": "Error response", + "schema": { + "$ref": "#/definitions/CustomVisionError" + } + } + }, + "x-ms-examples": { + "Successful SuggestTagsAndRegions request": { + "$ref": "./examples/SuggestTagsAndRegions.json" + } + } + } + }, "/projects/{projectId}/train": { "post": { "tags": [ @@ -2851,6 +3114,7 @@ "BadRequestProjectUnknownClassification", "BadRequestProjectUnsupportedDomainTypeChange", "BadRequestProjectUnsupportedExportPlatform", + "BadRequestProjectImagePreprocessingSettings", "BadRequestIterationName", "BadRequestIterationNameNotUnique", "BadRequestIterationDescription", @@ -3042,8 +3306,7 @@ "downloadUri": { "description": "URI used to download the model.", "type": "string", - "readOnly": true, - "x-nullable": false + "readOnly": true }, "flavor": { "description": "Flavor of the export.", @@ -3052,7 +3315,9 @@ "Windows", "ONNX10", "ONNX12", - "ARM" + "ARM", + "TensorFlowNormal", + "TensorFlowLite" ], "type": "string", "readOnly": true, @@ -3105,20 +3370,17 @@ "resizedImageUri": { "description": "The URI to the (resized) image used for training.", "type": "string", - "readOnly": true, - "x-nullable": false + "readOnly": true }, "thumbnailUri": { "description": "The URI to the thumbnail of the original image.", "type": "string", - "readOnly": true, - "x-nullable": false + "readOnly": true }, "originalImageUri": { "description": "The URI to the original uploaded image.", "type": "string", - "readOnly": true, - "x-nullable": false + "readOnly": true }, "tags": { "description": "Tags associated with this image.", @@ -3175,8 +3437,7 @@ "image": { "$ref": "#/definitions/Image", "description": "The image.", - "readOnly": true, - "x-nullable": false + "readOnly": true } } }, @@ -3233,8 +3494,7 @@ "contents": { "format": "byte", "type": "string", - "readOnly": false, - "x-nullable": false + "readOnly": false }, "tagIds": { "type": "array", @@ -3344,13 +3604,11 @@ }, "imageUri": { "type": "string", - "readOnly": true, - "x-nullable": false + "readOnly": true }, "thumbnailUri": { "type": "string", - "readOnly": true, - "x-nullable": false + "readOnly": true }, "tags": { "type": "array", @@ -3413,6 +3671,21 @@ } } }, + "ImageProcessingSettings": { + "description": "Represents image preprocessing settings used by image augmentation.", + "type": "object", + "properties": { + "augmentationMethods": { + "description": "Gets or sets enabled image transforms. The key corresponds to the transform name. If value is set to true, then correspondent transform is enabled. Otherwise this transform will not be used.\r\nAugmentation will be uniformly distributed among enabled transforms.", + "type": "object", + "additionalProperties": { + "type": "boolean" + }, + "readOnly": false, + "x-nullable": true + } + } + }, "ImageRegion": { "required": [ "tagId", @@ -3943,17 +4216,24 @@ "readOnly": true, "x-nullable": false }, + "trainingTimeInMinutes": { + "format": "int32", + "description": "Gets the training time for the iteration.", + "type": "integer", + "readOnly": true, + "x-nullable": false + }, "publishName": { "description": "Name of the published model.", "type": "string", "readOnly": true, - "x-nullable": true + "x-nullable": false }, "originalPublishResourceId": { "description": "Resource Provider Id this iteration was originally published to.", "type": "string", "readOnly": true, - "x-nullable": true + "x-nullable": false } } }, @@ -4040,14 +4320,16 @@ } }, "PredictionQueryResult": { + "description": "Query result of the prediction images that were sent to your prediction endpoint.", "type": "object", "properties": { "token": { "$ref": "#/definitions/PredictionQueryToken", - "readOnly": true, - "x-nullable": false + "description": "Prediction Query Token.", + "readOnly": false }, "results": { + "description": "Result of an prediction request.", "type": "array", "items": { "$ref": "#/definitions/StoredImagePrediction", @@ -4172,13 +4454,12 @@ "description": "Gets or sets the description of the project.", "type": "string", "readOnly": false, - "x-nullable": false + "x-nullable": true }, "settings": { "$ref": "#/definitions/ProjectSettings", "description": "Gets or sets the project settings.", - "readOnly": false, - "x-nullable": false + "readOnly": false }, "created": { "format": "date-time", @@ -4197,11 +4478,10 @@ "thumbnailUri": { "description": "Gets the thumbnail url representing the image.", "type": "string", - "readOnly": true, - "x-nullable": false + "readOnly": true }, "drModeEnabled": { - "description": "Gets if the DR mode is on.", + "description": "Gets if the Disaster Recovery (DR) mode is on, indicating the project is temporarily read-only.", "type": "boolean", "readOnly": true, "x-nullable": true @@ -4248,6 +4528,23 @@ "x-nullable": false }, "readOnly": false + }, + "useNegativeSet": { + "description": "Indicates if negative set is being used.", + "type": "boolean", + "readOnly": true, + "x-nullable": true + }, + "detectionParameters": { + "description": "Detection parameters in use, if any.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "imageProcessingSettings": { + "$ref": "#/definitions/ImageProcessingSettings", + "description": "Gets or sets image preprocessing settings.", + "readOnly": false } } }, @@ -4309,33 +4606,108 @@ }, "boundingBox": { "$ref": "#/definitions/BoundingBox", - "readOnly": true, - "x-nullable": false + "readOnly": true } } }, "StoredImagePrediction": { - "description": "result of an image classification request.", + "description": "Result of an image prediction request.", "type": "object", "properties": { "resizedImageUri": { "description": "The URI to the (resized) prediction image.", "type": "string", - "readOnly": true, - "x-nullable": false + "readOnly": true }, "thumbnailUri": { "description": "The URI to the thumbnail of the original prediction image.", "type": "string", - "readOnly": true, - "x-nullable": false + "readOnly": true }, "originalImageUri": { "description": "The URI to the original prediction image.", "type": "string", + "readOnly": true + }, + "domain": { + "format": "uuid", + "description": "Domain used for the prediction.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "id": { + "format": "uuid", + "description": "Prediction Id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "project": { + "format": "uuid", + "description": "Project Id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "iteration": { + "format": "uuid", + "description": "Iteration Id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "created": { + "format": "date-time", + "description": "Date this prediction was created.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "predictions": { + "description": "List of predictions.", + "type": "array", + "items": { + "$ref": "#/definitions/Prediction", + "x-nullable": false + }, + "readOnly": true + } + } + }, + "StoredSuggestedTagAndRegion": { + "description": "Result of a suggested tags and regions request of the untagged image.", + "type": "object", + "properties": { + "width": { + "format": "int32", + "description": "Width of the resized image.", + "type": "integer", + "readOnly": true, + "x-nullable": false + }, + "height": { + "format": "int32", + "description": "Height of the resized image.", + "type": "integer", "readOnly": true, "x-nullable": false }, + "resizedImageUri": { + "description": "The URI to the (resized) prediction image.", + "type": "string", + "readOnly": true + }, + "thumbnailUri": { + "description": "The URI to the thumbnail of the original prediction image.", + "type": "string", + "readOnly": true + }, + "originalImageUri": { + "description": "The URI to the original prediction image.", + "type": "string", + "readOnly": true + }, "domain": { "format": "uuid", "description": "Domain used for the prediction.", @@ -4379,6 +4751,139 @@ "x-nullable": false }, "readOnly": true + }, + "predictionUncertainty": { + "format": "double", + "description": "Uncertainty (entropy) of suggested tags or regions per image.", + "type": "number", + "readOnly": true, + "x-nullable": false + } + } + }, + "SuggestedTagAndRegion": { + "description": "Result of a suggested tags and regions request.", + "type": "object", + "properties": { + "id": { + "format": "uuid", + "description": "Prediction Id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "project": { + "format": "uuid", + "description": "Project Id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "iteration": { + "format": "uuid", + "description": "Iteration Id.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "created": { + "format": "date-time", + "description": "Date this prediction was created.", + "type": "string", + "readOnly": true, + "x-nullable": false + }, + "predictions": { + "description": "List of predictions.", + "type": "array", + "items": { + "$ref": "#/definitions/Prediction", + "x-nullable": false + }, + "readOnly": true + }, + "predictionUncertainty": { + "format": "double", + "description": "Uncertainty (entropy) of suggested tags or regions per image.", + "type": "number", + "readOnly": true, + "x-nullable": false + } + } + }, + "SuggestedTagAndRegionQuery": { + "description": "The array of result images and token containing session and continuation Ids for the next query.", + "type": "object", + "properties": { + "token": { + "$ref": "#/definitions/SuggestedTagAndRegionQueryToken", + "description": "Contains properties we need to fetch suggested tags for.", + "readOnly": false + }, + "results": { + "description": "Result of a suggested tags and regions request of the untagged image.", + "type": "array", + "items": { + "$ref": "#/definitions/StoredSuggestedTagAndRegion", + "x-nullable": false + }, + "readOnly": true + } + } + }, + "SuggestedTagAndRegionQueryToken": { + "description": "Contains properties we need to fetch suggested tags for. For the first call, Session and continuation set to null.\r\nThen on subsequent calls, uses the session/continuation from the previous SuggestedTagAndRegionQuery result to fetch additional results.", + "type": "object", + "properties": { + "tagIds": { + "description": "Existing TagIds in project to filter suggested tags on.", + "type": "array", + "items": { + "format": "uuid", + "type": "string", + "x-nullable": false + }, + "readOnly": false + }, + "threshold": { + "format": "double", + "description": "Confidence threshold to filter suggested tags on.", + "type": "number", + "readOnly": false, + "x-nullable": false + }, + "session": { + "description": "SessionId for database query. Initially set to null but later used to paginate.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "continuation": { + "description": "Continuation Id for database pagination. Initially null but later used to paginate.", + "type": "string", + "readOnly": false, + "x-nullable": false + }, + "maxCount": { + "format": "int32", + "description": "Maximum number of results you want to be returned in the response.", + "type": "integer", + "readOnly": false, + "x-nullable": false + }, + "sortBy": { + "description": "OrderBy. Ordering mechanism for your results.", + "enum": [ + "UncertaintyAscending", + "UncertaintyDescending" + ], + "type": "string", + "readOnly": false, + "x-nullable": false, + "x-ms-enum": { + "name": "SortBy", + "modelAsString": true + } } } }, @@ -4408,7 +4913,7 @@ "description": "Gets or sets the description of the tag.", "type": "string", "readOnly": false, - "x-nullable": false + "x-nullable": true }, "type": { "description": "Gets or sets the type of the tag.", @@ -4433,6 +4938,29 @@ } } }, + "TagFilter": { + "description": "Model that query for counting of images whose suggested tags match given tags and their probability are greater than or equal to the given threshold.", + "type": "object", + "properties": { + "tagIds": { + "description": "Existing TagIds in project to get suggested tags count for.", + "type": "array", + "items": { + "format": "uuid", + "type": "string", + "x-nullable": false + }, + "readOnly": false + }, + "threshold": { + "format": "double", + "description": "Confidence threshold to filter suggested tags on.", + "type": "number", + "readOnly": false, + "x-nullable": false + } + } + }, "TagPerformance": { "description": "Represents performance data for a particular tag in a trained iteration.", "type": "object", diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImageRegions.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImageRegions.json new file mode 100644 index 000000000000..290b0cacd11a --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImageRegions.json @@ -0,0 +1,30 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "batch": { + "regions": [ + { + "imageId": "4d6eb844-42ee-42bc-bd6f-c32455ef07c9", + "tagId": "b607964f-7bd6-4a3b-a869-6791fb6aab87", + "left": 0.25, + "top": 0.25, + "width": 0.25, + "height": 0.25 + } + ] + } + }, + "responses": { + "200": { + "headers": {}, + "body": { + "created": [], + "duplicated": [], + "exceeded": [] + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImageTags.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImageTags.json new file mode 100644 index 000000000000..5b7395424693 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImageTags.json @@ -0,0 +1,31 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "batch": { + "tags": [ + { + "imageId": "e31a14ab-5d78-4f7b-a267-3a1e4fd8a758", + "tagId": "349d72ac-0948-4d51-b1e4-c14a1f9b848a" + } + ] + } + }, + "responses": { + "200": { + "headers": {}, + "body": { + "created": [ + { + "imageId": "e31a14ab-5d78-4f7b-a267-3a1e4fd8a758", + "tagId": "349d72ac-0948-4d51-b1e4-c14a1f9b848a" + } + ], + "duplicated": null, + "exceeded": null + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImagesFromData.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImagesFromData.json new file mode 100644 index 000000000000..bab109da7c54 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImagesFromData.json @@ -0,0 +1,62 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "tagIds": [ + "b607964f-7bd6-4a3b-a869-6791fb6aab87" + ], + "imageData": "multipart data" + }, + "responses": { + "200": { + "headers": {}, + "body": { + "isBatchSuccessful": true, + "images": [ + { + "sourceUrl": "\"hemlock_10.jpg\"", + "status": "OK", + "image": { + "id": "4d6eb844-42ee-42bc-bd6f-c32455ef07c9", + "created": "2017-12-19T15:56:10Z", + "width": 1095, + "height": 900, + "resizedImageUri": "{Resized Image Uri}", + "originalImageUri": "{Image Uri}", + "thumbnailUri": "{Thumbnail Uri}", + "tags": [ + { + "tagId": "b607964f-7bd6-4a3b-a869-6791fb6aab87", + "created": "2017-12-19T15:56:09Z", + "tagName": "tag 1" + } + ] + } + }, + { + "sourceUrl": "\"hemlock_6.jpg\"", + "status": "OK", + "image": { + "id": "f1855a92-b873-47e7-b513-f07a667ceda1", + "created": "2017-12-19T15:56:10Z", + "width": 900, + "height": 1531, + "resizedImageUri": "{Resized Image Uri}", + "originalImageUri": "{Image Uri}", + "thumbnailUri": "{Thumbnail Uri}", + "tags": [ + { + "tagId": "b607964f-7bd6-4a3b-a869-6791fb6aab87", + "created": "2017-12-19T15:56:09Z", + "tagName": "tag 1" + } + ] + } + } + ] + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImagesFromFiles.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImagesFromFiles.json new file mode 100644 index 000000000000..03ab3626201f --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImagesFromFiles.json @@ -0,0 +1,50 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "tagIds": "b607964f-7bd6-4a3b-a869-6791fb6aab87", + "batch": { + "images": [ + { + "name": "hemlock_10.jpg", + "contents": "{image contents}" + } + ], + "tagIds": [ + "b607964f-7bd6-4a3b-a869-6791fb6aab87" + ] + } + }, + "responses": { + "200": { + "headers": {}, + "body": { + "isBatchSuccessful": true, + "images": [ + { + "sourceUrl": "\"hemlock_10.jpg\"", + "status": "OK", + "image": { + "id": "4d6eb844-42ee-42bc-bd6f-c32455ef07c9", + "created": "2017-12-19T15:56:10Z", + "width": 1095, + "height": 900, + "resizedImageUri": "{Resized Image Uri}", + "originalImageUri": "{Image Uri}", + "thumbnailUri": "{Thumbnail Uri}", + "tags": [ + { + "tagId": "b607964f-7bd6-4a3b-a869-6791fb6aab87", + "created": "2017-12-19T15:56:09Z", + "tagName": "tag 1" + } + ] + } + } + ] + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImagesFromPredictions.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImagesFromPredictions.json new file mode 100644 index 000000000000..741545bde645 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImagesFromPredictions.json @@ -0,0 +1,49 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "tagIds": "b607964f-7bd6-4a3b-a869-6791fb6aab87", + "batch": { + "images": [ + { + "id": "4d6eb844-42ee-42bc-bd6f-c32455ef07c9" + } + ], + "tagIds": [ + "b607964f-7bd6-4a3b-a869-6791fb6aab87" + ] + } + }, + "responses": { + "200": { + "headers": {}, + "body": { + "isBatchSuccessful": true, + "images": [ + { + "sourceUrl": "\"hemlock_10.jpg\"", + "status": "OK", + "image": { + "id": "4d6eb844-42ee-42bc-bd6f-c32455ef07c9", + "created": "2017-12-19T15:56:10Z", + "width": 1095, + "height": 900, + "resizedImageUri": "{Resized Image Uri}", + "originalImageUri": "{Image Uri}", + "thumbnailUri": "{Thumbnail Uri}", + "tags": [ + { + "tagId": "b607964f-7bd6-4a3b-a869-6791fb6aab87", + "created": "2017-12-19T15:56:09Z", + "tagName": "tag 1" + } + ] + } + } + ] + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImagesFromUrls.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImagesFromUrls.json new file mode 100644 index 000000000000..f781b387b4ba --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateImagesFromUrls.json @@ -0,0 +1,49 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "tagIds": "b607964f-7bd6-4a3b-a869-6791fb6aab87", + "batch": { + "images": [ + { + "url": "{url to image}" + } + ], + "tagIds": [ + "b607964f-7bd6-4a3b-a869-6791fb6aab87" + ] + } + }, + "responses": { + "200": { + "headers": {}, + "body": { + "isBatchSuccessful": true, + "images": [ + { + "sourceUrl": "{url to image}", + "status": "OK", + "image": { + "id": "4d6eb844-42ee-42bc-bd6f-c32455ef07c9", + "created": "2017-12-19T15:56:10Z", + "width": 1095, + "height": 900, + "resizedImageUri": "{Resized Image Uri}", + "originalImageUri": "{Image Uri}", + "thumbnailUri": "{Thumbnail Uri}", + "tags": [ + { + "tagId": "b607964f-7bd6-4a3b-a869-6791fb6aab87", + "created": "2017-12-19T15:56:09Z", + "tagName": "tag name" + } + ] + } + } + ] + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateProject.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateProject.json new file mode 100644 index 000000000000..88f852ced738 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateProject.json @@ -0,0 +1,26 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "name": "My New Project", + "description": "A test project", + "domainId": "ee85a74c-405e-4adc-bb47-ffa8ca0c9f31" + }, + "responses": { + "200": { + "headers": {}, + "body": { + "id": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "name": "My New Project", + "description": "A test project", + "settings": { + "domainId": "ee85a74c-405e-4adc-bb47-ffa8ca0c9f31" + }, + "created": "2017-12-18T05:43:18Z", + "lastModified": "2017-12-18T05:43:18Z", + "thumbnailUri": "" + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateTag.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateTag.json new file mode 100644 index 000000000000..ed19817462ae --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/CreateTag.json @@ -0,0 +1,23 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "name": "Tag1", + "description": "Description of Tag1", + "body": "" + }, + "responses": { + "200": { + "headers": {}, + "body": { + "id": "9e27bc1b-7ae7-4e3b-a4e5-36153479dc01", + "name": "Tag1", + "description": "Description of Tag1", + "type": "Regular", + "imageCount": 0 + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteImageRegions.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteImageRegions.json new file mode 100644 index 000000000000..8931d4e2629e --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteImageRegions.json @@ -0,0 +1,14 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "regionIds": [ + "" + ] + }, + "responses": { + "204": {} + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteImageTags.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteImageTags.json new file mode 100644 index 000000000000..d6a188454e9b --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteImageTags.json @@ -0,0 +1,19 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "imageIds": [ + "e31a14ab-5d78-4f7b-a267-3a1e4fd8a758", + "cf0f83fb-ebaa-4b25-8e34-613a6a0b8a12" + ], + "tagIds": [ + "e31a14ab-5d78-4f7b-a267-3a1e4fd8a758", + "cf0f83fb-ebaa-4b25-8e34-613a6a0b8a12" + ] + }, + "responses": { + "204": {} + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteImages.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteImages.json new file mode 100644 index 000000000000..0797c669c1f3 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteImages.json @@ -0,0 +1,15 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "imageIds": [ + "e31a14ab-5d78-4f7b-a267-3a1e4fd8a758", + "cf0f83fb-ebaa-4b25-8e34-613a6a0b8a12" + ] + }, + "responses": { + "204": {} + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteIteration.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteIteration.json new file mode 100644 index 000000000000..d1f9b7629958 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteIteration.json @@ -0,0 +1,12 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "iterationId": "e31a14ab-5d78-4f7b-a267-3a1e4fd8a758" + }, + "responses": { + "204": {} + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeletePrediction.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeletePrediction.json new file mode 100644 index 000000000000..c6b2d5c0bc58 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeletePrediction.json @@ -0,0 +1,15 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "ids": [ + "e31a14ab-5d78-4f7b-a267-3a1e4fd8a758", + "cf0f83fb-ebaa-4b25-8e34-613a6a0b8a12" + ] + }, + "responses": { + "204": {} + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteProject.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteProject.json new file mode 100644 index 000000000000..2b4cb5723a6a --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteProject.json @@ -0,0 +1,11 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e" + }, + "responses": { + "204": {} + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteTag.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteTag.json new file mode 100644 index 000000000000..e9f802505a09 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteTag.json @@ -0,0 +1,12 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "tagId": "9e27bc1b-7ae7-4e3b-a4e5-36153479dc01" + }, + "responses": { + "204": {} + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/ExportIteration.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/ExportIteration.json new file mode 100644 index 000000000000..1bbfa05a5d86 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/ExportIteration.json @@ -0,0 +1,21 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "iterationId": "e31a14ab-5d78-4f7b-a267-3a1e4fd8a758", + "platform": "TensorFlow" + }, + "responses": { + "200": { + "headers": {}, + "body": { + "platform": "TensorFlow", + "status": "Exporting", + "downloadUri": "", + "newerVersionAvailable": false + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetDomain.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetDomain.json new file mode 100644 index 000000000000..c6702b3a8f29 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetDomain.json @@ -0,0 +1,20 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "domainId": "b30a91ae-e3c1-4f73-a81e-c270bff27c39" + }, + "responses": { + "200": { + "headers": {}, + "body": { + "id": "b30a91ae-e3c1-4f73-a81e-c270bff27c39", + "name": "Retail", + "type": "Classification", + "exportable": false, + "enabled": true + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetDomains.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetDomains.json new file mode 100644 index 000000000000..a10887726fcb --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetDomains.json @@ -0,0 +1,70 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}" + }, + "responses": { + "200": { + "headers": {}, + "body": [ + { + "id": "ee85a74c-405e-4adc-bb47-ffa8ca0c9f31", + "name": "General", + "type": "Classification", + "exportable": false, + "enabled": true + }, + { + "id": "c151d5b5-dd07-472a-acc8-15d29dea8518", + "name": "Food", + "type": "Classification", + "exportable": false, + "enabled": true + }, + { + "id": "ca455789-012d-4b50-9fec-5bb63841c793", + "name": "Landmarks", + "type": "Classification", + "exportable": false, + "enabled": true + }, + { + "id": "b30a91ae-e3c1-4f73-a81e-c270bff27c39", + "name": "Retail", + "type": "Classification", + "exportable": false, + "enabled": true + }, + { + "id": "45badf75-3591-4f26-a705-45678d3e9f5f", + "name": "Adult", + "type": "Classification", + "exportable": false, + "enabled": true + }, + { + "id": "0732100f-1a38-4e49-a514-c9b44c697ab5", + "name": "General (compact)", + "type": "Classification", + "exportable": false, + "enabled": true + }, + { + "id": "b5cfd229-2ac7-4b2b-8d0a-2b0661344894", + "name": "Landmarks (compact)", + "type": "Classification", + "exportable": false, + "enabled": true + }, + { + "id": "6b4faeda-8396-481b-9f8b-177b9fa3097f", + "name": "Retail (compact)", + "type": "Classification", + "exportable": false, + "enabled": true + } + ] + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetExports.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetExports.json new file mode 100644 index 000000000000..1267168dbb4c --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetExports.json @@ -0,0 +1,22 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "iterationId": "e31a14ab-5d78-4f7b-a267-3a1e4fd8a758" + }, + "responses": { + "200": { + "headers": {}, + "body": [ + { + "platform": "TensorFlow", + "status": "Done", + "newerVersionAvailable": false, + "downloadUri": "{Download URI}" + } + ] + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetImagePerformanceCount.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetImagePerformanceCount.json new file mode 100644 index 000000000000..c57ffd50669b --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetImagePerformanceCount.json @@ -0,0 +1,18 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "iterationId": "cf0f83fb-ebaa-4b25-8e34-613a6a0b8a12", + "tagIds": [ + "b5f7e6a2-a481-49a6-afec-a7cef1af3544" + ] + }, + "responses": { + "200": { + "headers": {}, + "body": "1" + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetImagePerformances.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetImagePerformances.json new file mode 100644 index 000000000000..dfe6eb5a7208 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetImagePerformances.json @@ -0,0 +1,43 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "iterationId": "b7b9d99c-a2c6-4658-9900-a98d2ff5bc66", + "tagIds": [ + "" + ], + "orderBy": "Newest" + }, + "responses": { + "200": { + "headers": {}, + "body": [ + { + "id": "dfd2d346-3ed5-4e1e-857d-af4e32cec042", + "created": "2018-01-31T20:18:26Z", + "predictions": [ + { + "tagId": "b5f7e6a2-a481-49a6-afec-a7cef1af3544", + "tagName": "Tag 1", + "probability": 1.0, + "boundingBox": { + "left": 0.25, + "top": 0.25, + "width": 0.25, + "height": 0.25 + } + } + ], + "width": 600, + "height": 1600, + "imageUri": "", + "thumbnailUri": "", + "tags": [], + "regions": [] + } + ] + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetImageRegionProposals.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetImageRegionProposals.json new file mode 100644 index 000000000000..7638215aae62 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetImageRegionProposals.json @@ -0,0 +1,29 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "imageId": "4d6eb844-42ee-42bc-bd6f-c32455ef07c9" + }, + "responses": { + "200": { + "headers": {}, + "body": { + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "imageId": "4d6eb844-42ee-42bc-bd6f-c32455ef07c9", + "proposals": [ + { + "confidence": 0.25, + "boundingBox": { + "left": 0.25, + "top": 0.25, + "width": 0.25, + "height": 0.25 + } + } + ] + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetImagesByIds.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetImagesByIds.json new file mode 100644 index 000000000000..037118bc9d41 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetImagesByIds.json @@ -0,0 +1,15 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "iterationId": "cf0f83fb-ebaa-4b25-8e34-613a6a0b8a12" + }, + "responses": { + "200": { + "headers": {}, + "body": [] + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetIteration.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetIteration.json new file mode 100644 index 000000000000..2383a6c6f910 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetIteration.json @@ -0,0 +1,34 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "iterationId": "e31a14ab-5d78-4f7b-a267-3a1e4fd8a758" + }, + "responses": { + "200": { + "headers": {}, + "body": { + "id": "e31a14ab-5d78-4f7b-a267-3a1e4fd8a758", + "name": "Iteration 2", + "status": "Completed", + "created": "2017-12-18T22:40:36Z", + "lastModified": "2017-12-19T15:47:02Z", + "trainedAt": "2017-12-19T15:47:02Z", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "exportable": false, + "domainId": "ee85a74c-405e-4adc-bb47-ffa8ca0c9f31", + "exportableTo": [ + "ONNX", + "DockerFile", + "TensorFlow", + "CoreML" + ], + "trainingType": "Regular", + "reservedBudgetInHours": 0, + "publishName": "" + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetIterationPerformance.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetIterationPerformance.json new file mode 100644 index 000000000000..323173c03a51 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetIterationPerformance.json @@ -0,0 +1,39 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "iterationId": "fe1e83c4-6f50-4899-9544-6bb08cf0e15a", + "threshold": 0.9 + }, + "responses": { + "200": { + "headers": {}, + "body": { + "perTagPerformance": [ + { + "id": "e31ff107-5505-4753-be42-b369b21b026c", + "name": "Hemlock", + "precision": 1.0, + "precisionStdDeviation": 0.0, + "recall": 1.0, + "recallStdDeviation": 0.0 + }, + { + "id": "349d72ac-0948-4d51-b1e4-c14a1f9b848a", + "name": "Japanese Cherry", + "precision": 1.0, + "precisionStdDeviation": 0.0, + "recall": 1.0, + "recallStdDeviation": 0.0 + } + ], + "precision": 1.0, + "precisionStdDeviation": 0.0, + "recall": 1.0, + "recallStdDeviation": 0.0 + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetIterations.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetIterations.json new file mode 100644 index 000000000000..ac0c78134a80 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetIterations.json @@ -0,0 +1,74 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c" + }, + "responses": { + "200": { + "headers": {}, + "body": [ + { + "id": "fe1e83c4-6f50-4899-9544-6bb08cf0e15a", + "name": "Iteration 1", + "status": "Completed", + "created": "2017-12-18T22:40:29Z", + "lastModified": "2017-12-18T22:40:41Z", + "trainedAt": "2017-12-18T22:40:41Z", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "exportable": false, + "domainId": "ee85a74c-405e-4adc-bb47-ffa8ca0c9f31", + "exportableTo": [ + "ONNX", + "DockerFile", + "TensorFlow", + "CoreML" + ], + "trainingType": "Regular", + "reservedBudgetInHours": 0, + "publishName": "" + }, + { + "id": "e31a14ab-5d78-4f7b-a267-3a1e4fd8a758", + "name": "Iteration 2", + "status": "Completed", + "created": "2017-12-18T22:40:36Z", + "lastModified": "2017-12-19T15:47:02Z", + "trainedAt": "2017-12-19T15:47:02Z", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "exportable": false, + "domainId": "ee85a74c-405e-4adc-bb47-ffa8ca0c9f31", + "exportableTo": [ + "ONNX", + "DockerFile", + "TensorFlow", + "CoreML" + ], + "trainingType": "Regular", + "reservedBudgetInHours": 5, + "publishName": "model1" + }, + { + "id": "3adaf7b2-18fc-4376-9da4-b5ea160a7cf5", + "name": "Iteration 3", + "status": "New", + "created": "2017-12-19T15:46:59Z", + "lastModified": "2017-12-19T15:46:59Z", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "exportable": false, + "domainId": null, + "exportableTo": [ + "ONNX", + "DockerFile", + "TensorFlow", + "CoreML" + ], + "trainingType": "Regular", + "reservedBudgetInHours": 0, + "publishName": "" + } + ] + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetProject.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetProject.json new file mode 100644 index 000000000000..4b68bf1ea390 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetProject.json @@ -0,0 +1,24 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e" + }, + "responses": { + "200": { + "headers": {}, + "body": { + "id": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "name": "My New Project", + "description": "A test project", + "settings": { + "domainId": "ee85a74c-405e-4adc-bb47-ffa8ca0c9f31" + }, + "created": "2017-12-18T05:43:18Z", + "lastModified": "2017-12-18T05:43:18Z", + "thumbnailUri": "" + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetProjects.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetProjects.json new file mode 100644 index 000000000000..b5166555936f --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetProjects.json @@ -0,0 +1,25 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}" + }, + "responses": { + "200": { + "headers": {}, + "body": [ + { + "id": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "name": "My New Project", + "description": "", + "settings": { + "domainId": "ee85a74c-405e-4adc-bb47-ffa8ca0c9f31" + }, + "created": "2017-12-18T05:43:18Z", + "lastModified": "2017-12-18T05:43:18Z", + "thumbnailUri": "" + } + ] + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetTag.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetTag.json new file mode 100644 index 000000000000..4ad3135822ae --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetTag.json @@ -0,0 +1,21 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "tagId": "9e27bc1b-7ae7-4e3b-a4e5-36153479dc01" + }, + "responses": { + "200": { + "headers": {}, + "body": { + "id": "9e27bc1b-7ae7-4e3b-a4e5-36153479dc01", + "name": "Tag1", + "description": "Description of Tag1", + "type": "Regular", + "imageCount": 0 + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetTaggedImageCount.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetTaggedImageCount.json new file mode 100644 index 000000000000..c0ed09aa6ae9 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetTaggedImageCount.json @@ -0,0 +1,15 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "iterationId": "cf0f83fb-ebaa-4b25-8e34-613a6a0b8a12" + }, + "responses": { + "200": { + "headers": {}, + "body": "10" + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetTaggedImages.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetTaggedImages.json new file mode 100644 index 000000000000..037118bc9d41 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetTaggedImages.json @@ -0,0 +1,15 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "iterationId": "cf0f83fb-ebaa-4b25-8e34-613a6a0b8a12" + }, + "responses": { + "200": { + "headers": {}, + "body": [] + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetTags.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetTags.json new file mode 100644 index 000000000000..6ad8ea76c689 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetTags.json @@ -0,0 +1,22 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e" + }, + "responses": { + "200": { + "headers": {}, + "body": [ + { + "id": "9e27bc1b-7ae7-4e3b-a4e5-36153479dc01", + "name": "Tag1", + "description": "Description of Tag1", + "type": "Regular", + "imageCount": 0 + } + ] + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetUntaggedImageCount.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetUntaggedImageCount.json new file mode 100644 index 000000000000..c0ed09aa6ae9 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetUntaggedImageCount.json @@ -0,0 +1,15 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "iterationId": "cf0f83fb-ebaa-4b25-8e34-613a6a0b8a12" + }, + "responses": { + "200": { + "headers": {}, + "body": "10" + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetUntaggedImages.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetUntaggedImages.json new file mode 100644 index 000000000000..037118bc9d41 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/GetUntaggedImages.json @@ -0,0 +1,15 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "iterationId": "cf0f83fb-ebaa-4b25-8e34-613a6a0b8a12" + }, + "responses": { + "200": { + "headers": {}, + "body": [] + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/PublishIteration.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/PublishIteration.json new file mode 100644 index 000000000000..67d6ad03e29f --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/PublishIteration.json @@ -0,0 +1,17 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "iterationId": "e31a14ab-5d78-4f7b-a267-3a1e4fd8a758", + "publishName": "Model1", + "predictionId": "/subscriptions/{subscription}/resourceGroups/{resource group name}/providers/Microsoft.CognitiveServices/accounts/{resource name}" + }, + "responses": { + "200": { + "headers": {}, + "body": true + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QueryPredictions.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QueryPredictions.json new file mode 100644 index 000000000000..0bd19d6b7980 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QueryPredictions.json @@ -0,0 +1,66 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "query": { + "orderBy": "Newest", + "tags": [ + { + "id": "b5f7e6a2-a481-49a6-afec-a7cef1af3544", + "maxThreshold": 1, + "minThreshold": 0.9 + } + ] + } + }, + "responses": { + "200": { + "headers": {}, + "body": { + "results": [ + { + "id": "dfd2d346-3ed5-4e1e-857d-af4e32cec042", + "project": "8988643a-ae70-447d-9a22-15c4255e5ecb", + "iteration": "b7b9d99c-a2c6-4658-9900-a98d2ff5bc66", + "created": "2018-01-31T20:18:26Z", + "predictions": [ + { + "tagId": "b5f7e6a2-a481-49a6-afec-a7cef1af3544", + "tagName": "Tag 1", + "probability": 1.0 + }, + { + "tagId": "45619cda-d1c9-4bc8-a3e1-87c5d81adbc3", + "tagName": "Tag 2", + "probability": 3.60627153E-12 + } + ], + "originalImageUri": "", + "thumbnailUri": "", + "resizedImageUri": "", + "domain": "b30a91ae-e3c1-4f73-a81e-c270bff27c39" + } + ], + "token": { + "session": "1:286613", + "continuation": "", + "maxCount": 0, + "orderBy": "Newest", + "tags": [ + { + "id": "b5f7e6a2-a481-49a6-afec-a7cef1af3544", + "minThreshold": 0.9, + "maxThreshold": 1.0 + } + ], + "iterationId": null, + "startTime": null, + "endTime": null, + "application": "" + } + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuerySuggestedImageCount.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuerySuggestedImageCount.json new file mode 100644 index 000000000000..eb1617b72ec8 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuerySuggestedImageCount.json @@ -0,0 +1,20 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "iterationId": "b7b9d99c-a2c6-4658-9900-a98d2ff5bc66", + "query": { + "tagIds": [ + "b5f7e6a2-a481-49a6-afec-a7cef1af3544" + ] + } + }, + "responses": { + "200": { + "headers": {}, + "body": "12" + } + } +} \ No newline at end of file diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuerySuggestedImages.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuerySuggestedImages.json new file mode 100644 index 000000000000..01233aafdede --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuerySuggestedImages.json @@ -0,0 +1,54 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "iterationId": "b7b9d99c-a2c6-4658-9900-a98d2ff5bc66", + "query": { + "tagIds": [ + "b5f7e6a2-a481-49a6-afec-a7cef1af3544" + ] + } + }, + "responses": { + "200": { + "headers": {}, + "body": { + "results": [ + { + "id": "dfd2d346-3ed5-4e1e-857d-af4e32cec042", + "project": "8988643a-ae70-447d-9a22-15c4255e5ecb", + "iteration": "b7b9d99c-a2c6-4658-9900-a98d2ff5bc66", + "created": "2018-01-31T20:18:26Z", + "predictions": [ + { + "tagId": "b5f7e6a2-a481-49a6-afec-a7cef1af3544", + "tagName": "Tag 1", + "probability": 1.0 + }, + { + "tagId": "45619cda-d1c9-4bc8-a3e1-87c5d81adbc3", + "tagName": "Tag 2", + "probability": 3.60627153E-12 + } + ], + "originalImageUri": "", + "thumbnailUri": "", + "resizedImageUri": "", + "domain": "b30a91ae-e3c1-4f73-a81e-c270bff27c39" + } + ], + "token": { + "session": "1:286613", + "continuation": "", + "maxCount": 0, + "sortBy": "Newest", + "tagIds": [ + "b5f7e6a2-a481-49a6-afec-a7cef1af3544" + ] + } + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuickTestImage.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuickTestImage.json new file mode 100644 index 000000000000..489852dc79df --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuickTestImage.json @@ -0,0 +1,33 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "iterationId": "fe1e83c4-6f50-4899-9544-6bb08cf0e15a", + "imageData": "multipart-form-data" + }, + "responses": { + "200": { + "headers": {}, + "body": { + "id": "951098b2-9b69-427b-bddb-d5cb618874e3", + "project": "64b822c5-8082-4b36-a426-27225f4aa18c", + "iteration": "fe1e83c4-6f50-4899-9544-6bb08cf0e15a", + "created": "2017-12-19T14:21:41Z", + "predictions": [ + { + "tagId": "e31ff107-5505-4753-be42-b369b21b026c", + "tagName": "Hemlock", + "probability": 0.05149666 + }, + { + "tagId": "349d72ac-0948-4d51-b1e4-c14a1f9b848a", + "tagName": "Japanese Cherry", + "probability": 0.00 + } + ] + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuickTestImageUrl.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuickTestImageUrl.json new file mode 100644 index 000000000000..dc904ef6f116 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuickTestImageUrl.json @@ -0,0 +1,35 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "iterationId": "fe1e83c4-6f50-4899-9544-6bb08cf0e15a", + "imageUrl": { + "url": "{Image URL}" + } + }, + "responses": { + "200": { + "headers": {}, + "body": { + "id": "951098b2-9b69-427b-bddb-d5cb618874e3", + "project": "64b822c5-8082-4b36-a426-27225f4aa18c", + "iteration": "fe1e83c4-6f50-4899-9544-6bb08cf0e15a", + "created": "2017-12-19T14:21:41Z", + "predictions": [ + { + "tagId": "e31ff107-5505-4753-be42-b369b21b026c", + "tagName": "Hemlock", + "probability": 0.05149666 + }, + { + "tagId": "349d72ac-0948-4d51-b1e4-c14a1f9b848a", + "tagName": "Japanese Cherry", + "probability": 0.00 + } + ] + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/SuggestTagsAndRegions.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/SuggestTagsAndRegions.json new file mode 100644 index 000000000000..34d410f7b27a --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/SuggestTagsAndRegions.json @@ -0,0 +1,39 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "iterationId": "4d6eb844-42ee-42bc-bd6f-c32455ef07c9", + "imageIds": [ + "e7f08c23-9e54-49f7-b609-69a0240ba306", + "ce632666-4b66-4adb-aa0a-ad8b7c32df06" + ] + }, + "responses": { + "200": { + "headers": {}, + "body": [ + { + "id": "8497e814-23cc-47d7-b24b-691cef0bcec9", + "project": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "iteration": "ce271ee4-cc13-460f-b66f-993f8005522d", + "created": "2019-07-08T13:43:18Z", + "predictions": [ + { + "tagId": "b5f7e6a2-a481-49a6-afec-a7cef1af3544", + "tagName": "Tag 1", + "probability": 1.0 + }, + { + "tagId": "45619cda-d1c9-4bc8-a3e1-87c5d81adbc3", + "tagName": "Tag 2", + "probability": 3.60627153E-12 + } + ], + "predictionUncertainty": 0.32 + } + ] + } + } +} \ No newline at end of file diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/TrainProject.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/TrainProject.json new file mode 100644 index 000000000000..52c20d928913 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/TrainProject.json @@ -0,0 +1,32 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c" + }, + "responses": { + "200": { + "headers": {}, + "body": { + "id": "e31a14ab-5d78-4f7b-a267-3a1e4fd8a758", + "name": "Iteration 2", + "status": "Training", + "created": "2017-12-18T22:40:36Z", + "lastModified": "2017-12-19T15:46:58Z", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "exportable": false, + "domainId": null, + "exportableTo": [ + "ONNX", + "DockerFile", + "TensorFlow", + "CoreML" + ], + "trainingType": "Regular", + "reservedBudgetInHours": 0, + "publishName": "" + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/UnpublishIteration.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/UnpublishIteration.json new file mode 100644 index 000000000000..d1f9b7629958 --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/UnpublishIteration.json @@ -0,0 +1,12 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "iterationId": "e31a14ab-5d78-4f7b-a267-3a1e4fd8a758" + }, + "responses": { + "204": {} + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/UpdateIteration.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/UpdateIteration.json new file mode 100644 index 000000000000..a965deb8aa0f --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/UpdateIteration.json @@ -0,0 +1,37 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "iterationId": "e31a14ab-5d78-4f7b-a267-3a1e4fd8a758", + "updatedIteration": { + "name": "Best Iteration" + } + }, + "responses": { + "200": { + "headers": {}, + "body": { + "id": "e31a14ab-5d78-4f7b-a267-3a1e4fd8a758", + "name": "Best Iteration", + "status": "Completed", + "created": "2017-12-18T22:40:36Z", + "lastModified": "2017-12-19T15:53:07Z", + "trainedAt": "2017-12-19T15:47:02Z", + "projectId": "64b822c5-8082-4b36-a426-27225f4aa18c", + "exportable": false, + "exportableTo": [ + "ONNX", + "DockerFile", + "TensorFlow", + "CoreML" + ], + "domainId": "ee85a74c-405e-4adc-bb47-ffa8ca0c9f31", + "trainingType": "Regular", + "reservedBudgetInHours": 0, + "publishName": "" + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/UpdateProject.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/UpdateProject.json new file mode 100644 index 000000000000..e19735364b5e --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/UpdateProject.json @@ -0,0 +1,31 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "updatedProject": { + "name": "New Project Name", + "description": "A new Description", + "settings": { + "domainId": "ee85a74c-405e-4adc-bb47-ffa8ca0c9f31" + } + } + }, + "responses": { + "200": { + "headers": {}, + "body": { + "id": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "name": "New Project Name", + "description": "A new Description", + "settings": { + "domainId": "ee85a74c-405e-4adc-bb47-ffa8ca0c9f31" + }, + "created": "2017-12-18T05:43:18Z", + "lastModified": "2017-12-18T05:43:19Z", + "thumbnailUri": "" + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/UpdateTag.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/UpdateTag.json new file mode 100644 index 000000000000..51e0ee680aab --- /dev/null +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/UpdateTag.json @@ -0,0 +1,26 @@ +{ + "parameters": { + "Endpoint": "https://westus.api.cognitive.microsoft.com", + "Content-Type": "application/json", + "Training-Key": "{API Key}", + "projectId": "bc3f7dad-5544-468c-8573-3ef04d55463e", + "tagId": "9e27bc1b-7ae7-4e3b-a4e5-36153479dc01", + "updatedTag": { + "name": "Better Tag Name", + "type": "Regular", + "description": "Better description" + } + }, + "responses": { + "200": { + "headers": {}, + "body": { + "id": "9e27bc1b-7ae7-4e3b-a4e5-36153479dc01", + "name": "Better Tag Name", + "description": "Better description", + "type": "Regular", + "imageCount": 0 + } + } + } +} diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/v3.1-Training.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/v3.1-Training.json new file mode 100644 index 0000000000000000000000000000000000000000..64f49eb71653b4a38c9742a0a9e92281718add86 GIT binary patch literal 396980 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 Date: Thu, 29 Aug 2019 11:08:30 -0700 Subject: [PATCH 4/7] Validation tool fixes --- .../CustomVision/Training/stable/v3.1/Training.json | 6 +++--- .../Training/stable/v3.1/examples/DeleteImages.json | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json index 339e374d40a0..931c409dd3bf 100644 --- a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json @@ -4345,19 +4345,19 @@ "id": { "format": "uuid", "type": "string", - "readOnly": true, + "readOnly": false, "x-nullable": false }, "minThreshold": { "format": "float", "type": "number", - "readOnly": true, + "readOnly": false, "x-nullable": false }, "maxThreshold": { "format": "float", "type": "number", - "readOnly": true, + "readOnly": false, "x-nullable": false } } diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteImages.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteImages.json index 0797c669c1f3..d07c3753f4ce 100644 --- a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteImages.json +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/DeleteImages.json @@ -10,6 +10,7 @@ ] }, "responses": { - "204": {} + "204": {}, + "202": {} } -} +} \ No newline at end of file From 90278e85252f8db2870f5486b7738de0ff329786 Mon Sep 17 00:00:00 2001 From: Andrew Reddish Date: Wed, 11 Sep 2019 07:37:49 -0700 Subject: [PATCH 5/7] Save Training.json without byte marker --- .../CustomVision/Training/stable/v3.1/Training.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json index 931c409dd3bf..504348eb799f 100644 --- a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/Training.json @@ -1,4 +1,4 @@ -{ +{ "swagger": "2.0", "info": { "version": "3.1", @@ -5043,4 +5043,4 @@ } ] } -} \ No newline at end of file +} From ced4ebb8a9642ad232d3c80e9ceaa825b1518c89 Mon Sep 17 00:00:00 2001 From: Andrew Reddish Date: Wed, 11 Sep 2019 11:45:43 -0700 Subject: [PATCH 6/7] Remove file --- .../Training/stable/v3.1/v3.1-Training.json | Bin 396980 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/v3.1-Training.json diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/v3.1-Training.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/v3.1-Training.json deleted file mode 100644 index 64f49eb71653b4a38c9742a0a9e92281718add86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396980 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 Date: Wed, 18 Sep 2019 07:33:08 -0700 Subject: [PATCH 7/7] Update custom-words Fix example --- custom-words.txt | 1 + .../stable/v3.1/examples/QuerySuggestedImageCount.json | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/custom-words.txt b/custom-words.txt index bb440d203a0c..6f585796afbd 100644 --- a/custom-words.txt +++ b/custom-words.txt @@ -1387,6 +1387,7 @@ tableservices tabletypes tablevaluedfunctions tagname +tagsandregions tagvalue taskcompletion taskcounts diff --git a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuerySuggestedImageCount.json b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuerySuggestedImageCount.json index eb1617b72ec8..68dbaff34b4c 100644 --- a/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuerySuggestedImageCount.json +++ b/specification/cognitiveservices/data-plane/CustomVision/Training/stable/v3.1/examples/QuerySuggestedImageCount.json @@ -14,7 +14,9 @@ "responses": { "200": { "headers": {}, - "body": "12" + "body": { + "b5f7e6a2-a481-49a6-afec-a7cef1af3544": 1 + } } } } \ No newline at end of file