diff --git a/specification/cognitiveservices/data-plane/Content Moderator/ImageTextReadme.md b/specification/cognitiveservices/data-plane/Content Moderator/ImageTextReadme.md
new file mode 100644
index 000000000000..8c637e770482
--- /dev/null
+++ b/specification/cognitiveservices/data-plane/Content Moderator/ImageTextReadme.md
@@ -0,0 +1,40 @@
+# Cognitive Services Content Moderator SDK
+
+> see https://aka.ms/autorest
+
+Configuration for generating Content Moderator SDK.
+
+The current release is `release_1_0`.
+
+``` yaml
+
+tag: release_1_0
+```
+# Releases
+
+### Release 1.0
+These settings apply only when `--tag=release_1_0` is specified on the command line.
+
+``` yaml $(tag) == 'release_1_0'
+input-file:
+ - v1.0/contentmoderatorImageText.swagger.json
+```
+
+## Validation
+
+``` yaml
+openapi-type: data-plane
+```
+
+## CSharp Settings
+These settings apply only when `--csharp` is specified on the command line.
+``` yaml $(csharp)
+csharp:
+ namespace: Microsoft.CognitiveServices.ContentModerator
+ output-folder: out/csharp
+```
+
+``` yaml
+directive:
+ - suppress: R2022 # the message to suppress
+```
\ No newline at end of file
diff --git a/specification/cognitiveservices/data-plane/Content Moderator/ReviewJobWorkflowReadme.md b/specification/cognitiveservices/data-plane/Content Moderator/ReviewJobWorkflowReadme.md
new file mode 100644
index 000000000000..a43031cb5b19
--- /dev/null
+++ b/specification/cognitiveservices/data-plane/Content Moderator/ReviewJobWorkflowReadme.md
@@ -0,0 +1,40 @@
+# Cognitive Services Content Moderator SDK
+
+> see https://aka.ms/autorest
+
+Configuration for generating Content Moderator SDK.
+
+The current release is `release_1_0`.
+
+``` yaml
+
+tag: release_1_0
+```
+# Releases
+
+### Release 1.0
+These settings apply only when `--tag=release_1_0` is specified on the command line.
+
+``` yaml $(tag) == 'release_1_0'
+input-file:
+ - v1.0/contentmoderatorReviewJobsWorkflows.swagger.json
+```
+
+## Validation
+
+``` yaml
+openapi-type: data-plane
+```
+
+## CSharp Settings
+These settings apply only when `--csharp` is specified on the command line.
+``` yaml $(csharp)
+csharp:
+ namespace: Microsoft.CognitiveServices.ContentModerator
+ output-folder: out/csharp
+```
+
+``` yaml
+directive:
+ - suppress: R2022 # the message to suppress
+```
\ No newline at end of file
diff --git a/specification/cognitiveservices/data-plane/Content Moderator/v1.0/contentmoderatorImageText.swagger.json b/specification/cognitiveservices/data-plane/Content Moderator/v1.0/contentmoderatorImageText.swagger.json
new file mode 100644
index 000000000000..284903e2552c
--- /dev/null
+++ b/specification/cognitiveservices/data-plane/Content Moderator/v1.0/contentmoderatorImageText.swagger.json
@@ -0,0 +1,592 @@
+{
+ "swagger": "2.0",
+ "info": {
+ "title": "Content Moderator Image Text Client",
+ "version": "1.0",
+ "description": "You use the API to scan your content as it is generated. Content Moderator then processes your content and sends the results along with relevant information either back to your systems or to the built-in review tool. You can use this information to take decisions e.g. take it down, send to human judge, etc.\r\n\r\nWhen using the API, images need to have a minimum of 128 pixels and a maximum file size of 4MB. \r\nText can be at most 1024 characters long. \r\nIf the content passed to the text API or the image API exceeds the size limits, the API will return an error code that informs about the issue.\r\n\r\nThis API is currently available in:\r\n\r\n* West US - westus.api.cognitive.microsoft.com\r\n* East US 2 - eastus2.api.cognitive.microsoft.com\r\n* West Central US - westcentralus.api.cognitive.microsoft.com\r\n* West Europe - westeurope.api.cognitive.microsoft.com\r\n* Southeast Asia - southeastasia.api.cognitive.microsoft.com"
+ },
+ "x-ms-parameterized-host": {
+ "hostTemplate": "{azureRegion}.api.cognitive.microsoft.com",
+ "parameters": [
+ {
+ "$ref": "#/parameters/AzureRegion"
+ }
+ ]
+ },
+ "basePath": "/contentmoderator/moderate/v1.0",
+ "schemes": [
+ "https"
+ ],
+ "paths": {
+ "/ProcessImage/FindFaces": {
+ "post": {
+ "tags": [
+ "Images"
+ ],
+ "operationId": "Images_FindFaces",
+ "description": "Returns the list of found faces.",
+ "parameters": [
+ {
+ "name": "CacheImage",
+ "in": "query",
+ "description": "Whether to retain the submitted image for future use; defaults to false if omitted",
+ "type": "boolean"
+ },
+ {
+ "$ref": "#/parameters/ocpApimSubscriptionKeyParameter"
+ },
+ {
+ "$ref": "#/parameters/contentTypeHeader2"
+ },
+ {
+ "name": "file",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "type": "object",
+ "format": "file"
+ },
+ "description": "The file location."
+ }
+ ],
+ "consumes": [
+ "image/gif",
+ "image/jpeg",
+ "image/png",
+ "image/bmp",
+ "image/tiff"
+ ],
+ "responses": {
+ "200": {
+ "description": "The list of found faces.",
+ "schema": {
+ "$ref": "#/definitions/FoundFaces"
+ }
+ },
+ "default": {
+ "description": ""
+ }
+ },
+ "produces": [
+ "application/json"
+ ]
+ }
+ },
+ "/ProcessImage/OCR": {
+ "post": {
+ "tags": [
+ "Images"
+ ],
+ "operationId": "Images_OCR",
+ "description": "Returns any text found in the image for the language specified. If no language is specified in input then the detection defaults to English.",
+ "parameters": [
+ {
+ "name": "language",
+ "in": "query",
+ "description": "ISO 639-3 code",
+ "required": true,
+ "type": "string",
+ "default": "eng",
+ "enum": [
+ "eng"
+ ]
+ },
+ {
+ "name": "CacheImage",
+ "in": "query",
+ "description": "Whether to retain the submitted image for future use; defaults to false if omitted",
+ "type": "boolean",
+ "default": "false",
+ "enum": [
+ "false"
+ ]
+ },
+ {
+ "name": "enhanced",
+ "in": "query",
+ "description": "When set to True, the image goes through additional processing to come with additional candidates.\n\nimage/tiff is not supported when enhanced is set to true\n\nNote: This impacts the response time.",
+ "type": "boolean",
+ "default": "false",
+ "enum": [
+ "false"
+ ]
+ },
+ {
+ "$ref": "#/parameters/ocpApimSubscriptionKeyParameter"
+ },
+ {
+ "$ref": "#/parameters/contentTypeHeader3"
+ },
+ {
+ "name": "file",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "type": "object",
+ "format": "file"
+ },
+ "description": "The file location."
+ }
+ ],
+ "consumes": [
+ "image/gif",
+ "image/jpeg",
+ "image/png",
+ "image/bmp",
+ "image/tiff"
+ ],
+ "responses": {
+ "200": {
+ "description": "The found text and list of candidate text.",
+ "schema": {
+ "$ref": "#/definitions/OCRResponse"
+ }
+ },
+ "default": {
+ "description": ""
+ }
+
+ },
+ "produces": [
+ "application/json"
+ ]
+ }
+ },
+ "/ProcessImage/Evaluate": {
+ "post": {
+ "tags": [
+ "Images"
+ ],
+ "operationId": "Images_Evaluate",
+ "description": "Returns probabilities of the image containing racy or adult content.",
+ "parameters": [
+ {
+ "name": "CacheImage",
+ "in": "query",
+ "description": "Whether to retain the submitted image for future use; defaults to false if omitted",
+ "type": "boolean"
+ },
+ {
+ "$ref": "#/parameters/ocpApimSubscriptionKeyParameter"
+ },
+ {
+ "$ref": "#/parameters/contentTypeHeader4"
+ },
+ {
+ "name": "file",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "type": "object",
+ "format": "file"
+ },
+ "description": "The file location."
+ }
+ ],
+ "consumes": [
+ "image/gif",
+ "image/jpeg",
+ "image/png",
+ "image/bmp",
+ "image/tiff"
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "schema": {
+ "$ref": "#/definitions/EvaluateResponse"
+ }
+ },
+ "default": {
+ "description": ""
+ }
+ },
+ "produces": [
+ "application/json"
+ ]
+ }
+ },
+ "/ProcessImage/Match": {
+ "post": {
+ "tags": [
+ "Images"
+ ],
+ "operationId": "Images_Match",
+ "description": "Fuzzily match an image against one of your custom Image Lists. You can create and manage your custom image lists using this API. \r\n\r\nReturns ID and tags of matching image.
\r\n
\r\nNote: Refresh Index must be run on the corresponding Image List before additions and removals are reflected in the response.",
+ "parameters": [
+ {
+ "name": "listId",
+ "in": "query",
+ "description": "The list id.",
+ "type": "string"
+ },
+ {
+ "name": "cacheimage",
+ "in": "query",
+ "description": "Use cached image.",
+ "type": "boolean"
+ },
+ {
+ "$ref": "#/parameters/ocpApimSubscriptionKeyParameter"
+ },
+ {
+ "$ref": "#/parameters/contentTypeHeader5"
+ },
+ {
+ "name": "file",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "type": "object",
+ "format": "file"
+ },
+ "description": "The file location."
+ }
+ ],
+ "consumes": [
+ "image/gif",
+ "image/jpeg",
+ "image/png",
+ "image/bmp",
+ "image/tiff"
+ ],
+ "responses": {
+ "200": {
+ "description": "Supported values for tags are:\r\n
\r\n- 101: Nudity
\r\n- 102: Sexual Content
\r\n- 201: Alcohol
\r\n- 202: Tobacco
\r\n- 203: Drugs
\r\n- 301: Child Exploitation
\r\n- 401: Violence
\r\n- 402: Weapons
\r\n- 403: Gore
\r\n- 501: Profanity
\r\n- 502: Vulgarity
\r\n
",
+ "schema": {
+ "$ref": "#/definitions/MatchResponse"
+ }
+ },
+ "default": {
+ "description": ""
+ }
+ },
+ "produces": [
+ "application/json"
+ ]
+ }
+ },
+ "/ProcessText/DetectLanguage": {
+ "post": {
+ "tags": [
+ "Text"
+ ],
+ "operationId": "Text_DetectLanguage",
+ "description": "This operation will detect the language of given input content. Returns the ISO 639-3 code for the predominant language comprising the submitted text. Over 110 languages supported.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/ocpApimSubscriptionKeyParameter"
+ },
+ {
+ "$ref": "#/parameters/contentTypeHeader"
+ },
+ {
+ "name": "text",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The parameters to provide for the created account."
+ }
+ ],
+ "consumes": [
+ "text/plain",
+ "text/html",
+ "text/xml",
+ "text/markdown"
+ ],
+ "responses": {
+ "200": {
+ "description": "The detected language result",
+ "schema": {
+ "$ref": "#/definitions/DetectedLanguageResult"
+ }
+ },
+ "default": {
+ "description": ""
+ }
+ },
+ "produces": [
+ "application/json"
+ ]
+ }
+ }
+ },
+ "definitions": {
+ "FoundFaces": {
+ "description": "Request object the contains found faces.",
+ "properties": {
+ "trackingId": {
+ "description": "The tracking id.",
+ "type": "string"
+ },
+ "cacheId": {
+ "description": "The cache id.",
+ "type": "string"
+ },
+ "result": {
+ "description": "True if result was found.",
+ "type": "boolean"
+ },
+ "count": {
+ "description": "Number of faces found.",
+ "type": "integer"
+ },
+ "faces": {
+ "description": "The list of faces.",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/FoundFace"
+ }
+ }
+ }
+ },
+ "FoundFace": {
+ "description": "Coordinates to the found face.",
+ "properties": {
+ "bottom": {
+ "description": "The bottom coordinate.",
+ "type": "integer"
+ },
+ "left": {
+ "description": "The left coordinate.",
+ "type": "integer"
+ },
+ "right": {
+ "description": "The right coordinate.",
+ "type": "integer"
+ },
+ "top": {
+ "description": "The top coordinate.",
+ "type": "integer"
+ }
+ }
+ },
+ "OCRResponse": {
+ "description": "Contains the text found in image for the language specified",
+ "properties": {
+ "trackingId": {
+ "description": "The tracking id.",
+ "type": "string"
+ },
+ "cacheId": {
+ "description": "The cache id.",
+ "type": "string"
+ },
+ "language": {
+ "description": "The ISO 639-3 code.",
+ "type": "string"
+ },
+ "text": {
+ "description": "The text found.",
+ "type": "string"
+ },
+ "candidates": {
+ "description": "The list of candidate text.",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Candidate"
+ }
+ }
+ }
+ },
+ "Candidate" : {
+ "description": "OCR candidate text.",
+ "properties" : {
+ "text": {
+ "description": "The text found.",
+ "type": "string"
+ },
+ "confidence": {
+ "description": "The confidence level.",
+ "type": "number"
+ }
+ }
+ },
+ "EvaluateResponse" : {
+ "description": "Evaluate response object.",
+ "properties" : {
+ "trackingId": {
+ "description": "The tracking id.",
+ "type": "string"
+ },
+ "adultClassificationScore": {
+ "description": "The adult classification score.",
+ "type": "number"
+ },
+ "isImageAdultClassified": {
+ "description": "Indicates if image is classified as adult.",
+ "type": "boolean"
+ },
+ "racyClassificationScore": {
+ "description": "The racy classication score.",
+ "type": "number"
+ },
+ "isImageRacyClassified": {
+ "description": "Indicates if the image is classifeid as racy.",
+ "type": "boolean"
+ },
+ "advancedInfo": {
+ "description": "The advanced info.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "status": {
+ "description": "The evaulate status",
+ "$ref": "#/definitions/EvaluateResponseStatus"
+ }
+ }
+ },
+ "EvaluateResponseStatus": {
+ "description": "The evaluate response status object.",
+ "properties" : {
+ "code": {
+ "description": "Evaluate response status code.",
+ "type": "integer"
+ },
+ "description": {
+ "description": "Description of evaulate response status code.",
+ "type": "string"
+ },
+ "exception": {
+ "description": "The evaluate response exception object."
+ }
+ }
+ },
+ "MatchResponse": {
+ "description": "The response for a Match request.",
+ "properties": {
+ "trackingId": {
+ "description": "The tracking id.",
+ "type": "string"
+ },
+ "cacheId": {
+ "description": "The cache id.",
+ "type": "string"
+ },
+ "isMatch": {
+ "description": "Indicates if there is a match.",
+ "type": "boolean"
+ },
+ "matchDetails": {
+ "description": "The match details.",
+ "$ref": "#/definitions/MatchDetailProperties"
+ }
+ }
+ },
+ "MatchDetailProperties": {
+ "description": "The match detail.",
+ "properties": {
+ "matchId": {
+ "description": "The match id.",
+ "type": "string"
+ },
+ "source": {
+ "description": "The source.",
+ "type": "string"
+ },
+ "tags": {
+ "description": "The tags for match details.",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MatchDetailTag"
+ }
+ },
+ "label": {
+ "description": "The label.",
+ "type": "string"
+ }
+ }
+ },
+ "MatchDetailTag": {
+ "description": "The details for a match.",
+ "properties": {
+ "key": {
+ "description": "The key.",
+ "type": "string"
+ },
+ "value": {
+ "description": "The value.",
+ "type": "string"
+ }
+ }
+ },
+ "DetectedLanguageResult": {
+ "description": "The result for detected langauge.",
+ "properties": {
+ "detectedLanguage": {
+ "description": "The detected language.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "parameters": {
+ "contentTypeHeader": {
+ "name": "Content-Type",
+ "description": "The content type.",
+ "required": true,
+ "type": "string",
+ "in": "header"
+ },
+ "contentTypeHeader2": {
+ "name": "Content-Type",
+ "description": "The content type.",
+ "required": true,
+ "type": "string",
+ "in": "header"
+ },
+ "contentTypeHeader3": {
+ "name": "Content-Type",
+ "description": "The content type.",
+ "required": true,
+ "type": "string",
+ "in": "header"
+ },
+ "contentTypeHeader4": {
+ "name": "Content-Type",
+ "description": "The content type.",
+ "required": true,
+ "type": "string",
+ "in": "header"
+ },
+ "contentTypeHeader5": {
+ "name": "Content-Type",
+ "description": "The content type.",
+ "required": true,
+ "type": "string",
+ "in": "header"
+ },
+ "ocpApimSubscriptionKeyParameter": {
+ "name": "Ocp-Apim-Subscription-Key",
+ "description": "The subscription key in header",
+ "x-ms-parameter-location": "client",
+ "required": true,
+ "type": "string",
+ "in": "header"
+ },
+ "AzureRegion": {
+ "name": "azureRegion",
+ "description": "Supported Azure regions for Computer Vision endpoints",
+ "x-ms-parameter-location": "client",
+ "required": true,
+ "type": "string",
+ "in": "path",
+ "x-ms-skip-url-encoding": true,
+ "x-ms-enum": {
+ "name": "AzureRegion",
+ "modelAsString": true
+ },
+ "enum": [
+ "westus",
+ "westeurope",
+ "southeastasia",
+ "eastus2",
+ "westcentralus"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/cognitiveservices/data-plane/Content Moderator/v1.0/contentmoderatorReviewJobsWorkflows.swagger.json b/specification/cognitiveservices/data-plane/Content Moderator/v1.0/contentmoderatorReviewJobsWorkflows.swagger.json
new file mode 100644
index 000000000000..85473b6be341
--- /dev/null
+++ b/specification/cognitiveservices/data-plane/Content Moderator/v1.0/contentmoderatorReviewJobsWorkflows.swagger.json
@@ -0,0 +1,576 @@
+{
+ "swagger": "2.0",
+ "info": {
+ "title": "Content Moderator Review Job Workflows Client",
+ "version": "1.0",
+ "description": "Use this API to create reviews in Content Moderator. Before you can create reviews you will need a moderation Team. If you don't already have one Sign Up here: https://contentmoderator.cognitive.microsoft.com\r\n\r\nThis API is currently available in:\r\n\r\n* West US - westus.api.cognitive.microsoft.com\r\n* East US 2 - eastus2.api.cognitive.microsoft.com\r\n* West Central US - westcentralus.api.cognitive.microsoft.com\r\n* West Europe - westeurope.api.cognitive.microsoft.com\r\n* Southeast Asia - southeastasia.api.cognitive.microsoft.com"
+ },
+ "x-ms-parameterized-host": {
+ "hostTemplate": "{azureRegion}.api.cognitive.microsoft.com",
+ "parameters": [
+ {
+ "$ref": "#/parameters/AzureRegion"
+ }
+ ]
+ },
+ "basePath": "/contentmoderator/review/v1.0",
+ "schemes": [
+ "https"
+ ],
+ "paths": {
+ "/teams/{teamName}/reviews/{reviewId}": {
+ "get": {
+ "tags": [
+ "Reviews"
+ ],
+ "operationId": "Reviews_Get",
+ "description": "Returns review details for the review Id passed.",
+ "parameters": [
+ {
+ "name": "teamName",
+ "in": "path",
+ "description": "Your Team Name.",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "reviewId",
+ "in": "path",
+ "description": "The review id.",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "$ref": "#/parameters/ocpApimSubscriptionKeyParameter"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/Review"
+ }
+ }
+ },
+ "produces": [
+ "application/json"
+ ]
+ }
+ },
+ "/teams/{teamName}/jobs/{JobId}": {
+ "get": {
+ "tags": [
+ "Jobs"
+ ],
+ "operationId": "Jobs_Get",
+ "description": "Get the Job Details for a Job Id.",
+ "parameters": [
+ {
+ "name": "teamName",
+ "in": "path",
+ "description": "Your Team Name.",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "JobId",
+ "in": "path",
+ "description": "The job id.",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "$ref": "#/parameters/ocpApimSubscriptionKeyParameter"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/Job"
+ }
+ }
+ },
+ "produces": [
+ "application/json"
+ ]
+ }
+ },
+ "/teams/{teamName}/reviews": {
+ "post": {
+ "tags": [
+ "Reviews"
+ ],
+ "operationId": "Reviews_List",
+ "description": "The reviews created would show up for Reviewers on your team. As Reviewers complete reviewing, results of the Review would be POSTED (i.e. HTTP POST) on the specified CallBackEndpoint.\r\n\r\nCallBack Schemas
\r\nReview Completion CallBack Sample
\r\n\r\n{
\r\n \"ReviewId\": \"\",
\r\n \"ModifiedOn\": \"2016-10-11T22:36:32.9934851Z\",
\r\n \"ModifiedBy\": \"\",
\r\n \"CallBackType\": \"Review\",
\r\n \"ContentId\": \"\",
\r\n \"Metadata\": {
\r\n \"adultscore\": \"0.xxx\",
\r\n \"a\": \"False\",
\r\n \"racyscore\": \"0.xxx\",
\r\n \"r\": \"True\"
\r\n },
\r\n \"ReviewerResultTags\": {
\r\n \"a\": \"False\",
\r\n \"r\": \"True\"
\r\n }
\r\n}
\r\n\r\n
",
+ "parameters": [
+ {
+ "name": "teamName",
+ "in": "path",
+ "description": "Your Team Name",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "subTeam",
+ "in": "query",
+ "description": "Optional paramter used to specify the Sub Team for this review",
+ "type": "string"
+ },
+ {
+ "$ref": "#/parameters/ocpApimSubscriptionKeyParameter"
+ }
+ ],
+ "consumes": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/ReviewListResult"
+ }
+ }
+ },
+ "produces": [
+ "application/json"
+ ]
+ }
+ },
+ "/teams/{teamName}/jobs": {
+ "post": {
+ "tags": [
+ "Jobs"
+ ],
+ "operationId": "Jobs_List",
+ "description": "A job Id will be returned for the Image content posted on this endpoint. \r\n\r\nOnce the content is evaluated against the Workflow provided the review will be created or ignored based on the workflow expression.\r\n\r\nCallBack Schemas
\r\n\r\n\r\n
Job Completion CallBack Sample
\r\n\r\n{
\r\n \"JobId\": \",
\r\n \"ReviewId\": \"\",
\r\n \"WorkFlowId\": \"default\",
\r\n \"Status\": \"\",
\r\n \"ContentType\": \"Image\",
\r\n \"ContentId\": \"\",
\r\n \"CallBackType\": \"Job\",
\r\n \"Metadata\": {
\r\n \"adultscore\": \"0.xxx\",
\r\n \"a\": \"False\",
\r\n \"racyscore\": \"0.xxx\",
\r\n \"r\": \"True\"
\r\n }
\r\n}
\r\n\r\n\r\n\r\n
Review Completion CallBack Sample
\r\n\r\n{\r\n \"ReviewId\": \"\",
\r\n \"ModifiedOn\": \"2016-10-11T22:36:32.9934851Z\",
\r\n \"ModifiedBy\": \"\",
\r\n \"CallBackType\": \"Review\",
\r\n \"ContentId\": \"\",
\r\n \"Metadata\": {
\r\n \"adultscore\": \"0.xxx\",\r\n \"a\": \"False\",
\r\n \"racyscore\": \"0.xxx\",
\r\n \"r\": \"True\"
\r\n },
\r\n \"ReviewerResultTags\": {
\r\n \"a\": \"False\",
\r\n \"r\": \"True\"
\r\n }
\r\n}
\r\n\r\n",
+ "parameters": [
+ {
+ "name": "teamName",
+ "in": "path",
+ "description": "Your team name",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "ContentType",
+ "in": "query",
+ "description": "Image, Text or Video",
+ "required": true,
+ "type": "string",
+ "default": "Image",
+ "enum": [
+ "Image"
+ ]
+ },
+ {
+ "name": "ContentId",
+ "in": "query",
+ "description": "Content Id/Name",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "WorkflowName",
+ "in": "query",
+ "description": "Workflow Name, if left empty your teams default workflow would be used",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "CallBackEndpoint",
+ "in": "query",
+ "description": "Callback endpoint for posting the reviews result.",
+ "type": "string"
+ },
+ {
+ "$ref": "#/parameters/ocpApimSubscriptionKeyParameter"
+ }
+ ],
+ "consumes": [
+ "application/json",
+ "image/jpeg"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/JobListResult"
+ }
+ }
+ },
+ "produces": [
+ "application/json",
+ "text/json"
+ ]
+ }
+ },
+ "/teams/{team}/workflows": {
+ "get": {
+ "tags": [
+ "Workflows"
+ ],
+ "operationId": "Workflows_ListAll",
+ "description": "Get all the Workflows available for you Team",
+ "parameters": [
+ {
+ "name": "team",
+ "in": "path",
+ "description": "Your Team name",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "$ref": "#/parameters/ocpApimSubscriptionKeyParameter"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Array of Workflows",
+ "schema": {
+ "$ref": "#/definitions/WorkflowListResult"
+ }
+ }
+ }
+ },
+ "produces": [
+ "application/json"
+ ]
+ },
+ "/teams/{team}/workflows/{workflowname}": {
+ "get": {
+ "tags": [
+ "Workflows"
+ ],
+ "operationId": "Workflows_Get",
+ "description": "Get the details of a specific Workflow on your Team",
+ "parameters": [
+ {
+ "name": "team",
+ "in": "path",
+ "description": "Your Team name",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "workflowname",
+ "in": "path",
+ "description": "Provide a name for this workflow",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "$ref": "#/parameters/ocpApimSubscriptionKeyParameter"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The workflow object.",
+ "schema": {
+ "$ref": "#/definitions/Workflow"
+ }
+ }
+ },
+ "produces": [
+ "application/json"
+ ]
+ },
+ "put": {
+ "tags": [
+ "Workflows"
+ ],
+ "operationId": "Workflows_CreateOrUpdate",
+ "description": "Create a new workflow or update an existing one.",
+ "parameters": [
+ {
+ "name": "team",
+ "in": "path",
+ "description": "Your Team name",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "workflowname",
+ "in": "path",
+ "description": "Provide a name for this workflow",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "$ref": "#/parameters/ocpApimSubscriptionKeyParameter"
+ }
+ ],
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "The workflow object.",
+ "schema": {
+ "$ref": "#/definitions/Workflow"
+ }
+ }
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Review": {
+ "description": "The Review object.",
+ "properties": {
+ "reviewId": {
+ "description": "The reivew id.",
+ "readOnly": true,
+ "type": "string"
+ },
+ "status": {
+ "description": "The status string ().",
+ "readOnly": true,
+ "type": "string"
+ },
+ "reviewerResultTags": {
+ "description": "Array of KeyValue with Reviewer set Tags.",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/KeyValuePair"
+ }
+ },
+ "createdBy": {
+ "description": "The reviewer name.",
+ "type": "string"
+ },
+ "metadata": {
+ "description": "Array of KeyValue.",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/KeyValuePair"
+ }
+ },
+ "type": {
+ "description": "The type name.",
+ "type": "string"
+ },
+ "content": {
+ "description": "The content value.",
+ "type": "string"
+ },
+ "contentId": {
+ "description": "The content id value.",
+ "type": "string"
+ },
+ "callbackEndpoint": {
+ "description": "The callback endpoint.",
+ "type": "string"
+ }
+ }
+ },
+ "KeyValuePair": {
+ "description": "The review object.",
+ "properties": {
+ "key": {
+ "description": "The key.",
+ "type": "string"
+ },
+ "value": {
+ "description": "The value.",
+ "type": "string"
+ }
+ }
+ },
+ "Job": {
+ "description": "The Job object.",
+ "properties": {
+ "id": {
+ "description": "The job id.",
+ "type": "string"
+ },
+ "teamName": {
+ "description": "The team name associated with the job.",
+ "type": "string"
+ },
+ "status": {
+ "description": "The status string ().",
+ "type": "string"
+ },
+ "workflowId": {
+ "description": "The workflow id.",
+ "type": "string"
+ },
+ "callBackEndpoint": {
+ "description": "The callback endpoint.",
+ "type": "string"
+ },
+ "reviewId": {
+ "description": "Review Id if one is created.",
+ "type": "string"
+ },
+ "resultMetaData": {
+ "description": "Array of KeyValue.",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/KeyValuePair"
+ }
+ }
+ }
+ },
+ "ReviewListResult": {
+ "description": "The list of reivew ids.",
+ "properties": {
+ "value": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The review id."
+ }
+ }
+ },
+ "JobListResult": {
+ "description": "The list of job ids.",
+ "properties": {
+ "value": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The job id."
+ }
+ }
+ },
+ "WorkflowListResult": {
+ "description": "The list of workflows.",
+ "properties": {
+ "value": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Workflow"
+ },
+ "description": "The Workflow object."
+ }
+ }
+ },
+ "Workflow": {
+ "description": "The workflow object.",
+ "properties": {
+ "description": {
+ "description": "A description for the Workflow.",
+ "type": "string"
+ },
+ "combine": {
+ "description": "The combine term.",
+ "type": "string"
+ },
+ "type": {
+ "description": "The type of workflow.",
+ "type": "string"
+ },
+ "expression": {
+ "description": "Expression object.",
+ "schema": {
+ "$ref": "#/definitions/Expression"
+ }
+ }
+ }
+ },
+ "Expression": {
+ "description": "Base expression definition.",
+ "properties": {
+ "type": {
+ "description": "The connector type.",
+ "type": "string",
+ "in": "path",
+ "x-ms-skip-url-encoding": true,
+ "x-ms-enum": {
+ "name": "ExpressionType",
+ "modelAsString": true
+ },
+ "enum": [
+ "Condition",
+ "Complex"
+ ]
+ }
+ }
+ },
+ "ComplexExpression": {
+ "description": "A complex expression object.",
+ "properties": {
+ "left": {
+ "description": "The left expression.",
+ "schema": {
+ "$ref": "#/definitions/Expression"
+ }
+ },
+ "right": {
+ "description": "The right connector`.",
+ "schema": {
+ "$ref": "#/definitions/Expression"
+ }
+ }
+ },
+ "allOf": [
+ {
+ "$ref": "#/definitions/Expression"
+ }
+ ]
+ },
+ "SimpleExpression": {
+ "description": "A simple expression object.",
+ "properties": {
+ "connectorName": {
+ "description": "The connector name.",
+ "type": "string"
+ },
+ "outputName": {
+ "description": "The output name.",
+ "type": "string"
+ },
+ "operator": {
+ "description": "The operator.",
+ "type": "string"
+ },
+ "value": {
+ "description": "The value.",
+ "type": "string"
+ }
+ },
+ "allOf": [
+ {
+ "$ref": "#/definitions/Expression"
+ }
+ ]
+ }
+ },
+ "parameters": {
+ "ocpApimSubscriptionKeyParameter": {
+ "name": "Ocp-Apim-Subscription-Key",
+ "description": "subscription key in header",
+ "x-ms-parameter-location": "client",
+ "required": true,
+ "type": "string",
+ "in": "header"
+ },
+ "AzureRegion": {
+ "name": "azureRegion",
+ "description": "Supported Azure regions for Computer Vision endpoints",
+ "x-ms-parameter-location": "client",
+ "required": true,
+ "type": "string",
+ "in": "path",
+ "x-ms-skip-url-encoding": true,
+ "x-ms-enum": {
+ "name": "AzureRegion",
+ "modelAsString": true
+ },
+ "enum": [
+ "westus",
+ "westeurope",
+ "southeastasia",
+ "eastus2",
+ "westcentralus"
+ ]
+ }
+ }
+}
\ No newline at end of file