-
Notifications
You must be signed in to change notification settings - Fork 5.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Migrate existing Azure AI Face service to TypeSpec #27576
Migrate existing Azure AI Face service to TypeSpec #27576
Conversation
Next Steps to Merge✅ All automated merging requirements have been met! To get your PR merged, see aka.ms/azsdk/specreview/merge. |
Swagger Validation Report
|
Compared specs (v0.10.8) | new version | base version |
---|---|---|
Face.json | v1.1-preview.1(482ba27) | v1.0(main) |
The following breaking changes are detected by comparison with the latest stable version:
Only 30 items are listed, please refer to log for more details.
Rule | Message |
---|---|
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/snapshots' removed or restructured? Old: Face/stable/v1.0/Face.json#L2253:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/snapshots/{snapshotId}' removed or restructured? Old: Face/stable/v1.0/Face.json#L2347:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/snapshots/{snapshotId}/apply' removed or restructured? Old: Face/stable/v1.0/Face.json#L2449:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/verify?overload=person' removed or restructured? Old: Face/stable/v1.0/Face.json#L2533:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/detect?overload=stream' removed or restructured? Old: Face/stable/v1.0/Face.json#L2576:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/persongroups/{personGroupId}/persons/{personId}/persistedfaces?overload=stream' removed or restructured? Old: Face/stable/v1.0/Face.json#L2633:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/facelists/{faceListId}/persistedfaces?overload=stream' removed or restructured? Old: Face/stable/v1.0/Face.json#L2684:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/largepersongroups/{largePersonGroupId}/persons/{personId}/persistedfaces?overload=stream' removed or restructured? Old: Face/stable/v1.0/Face.json#L2732:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/largefacelists/{largeFaceListId}/persistedfaces?overload=stream' removed or restructured? Old: Face/stable/v1.0/Face.json#L2783:5 |
1006 - RemovedDefinition |
The new version is missing a definition that was found in the old version. Was 'FindSimilarRequest' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L7255:3 Old: Face/stable/v1.0/Face.json#L2832:3 |
1006 - RemovedDefinition |
The new version is missing a definition that was found in the old version. Was 'GroupRequest' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L7255:3 Old: Face/stable/v1.0/Face.json#L2832:3 |
1006 - RemovedDefinition |
The new version is missing a definition that was found in the old version. Was 'IdentifyRequest' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L7255:3 Old: Face/stable/v1.0/Face.json#L2832:3 |
1006 - RemovedDefinition |
The new version is missing a definition that was found in the old version. Was 'VerifyFaceToPersonRequest' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L7255:3 Old: Face/stable/v1.0/Face.json#L2832:3 |
1006 - RemovedDefinition |
The new version is missing a definition that was found in the old version. Was 'VerifyFaceToFaceRequest' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L7255:3 Old: Face/stable/v1.0/Face.json#L2832:3 |
1006 - RemovedDefinition |
The new version is missing a definition that was found in the old version. Was 'UpdateFaceRequest' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L7255:3 Old: Face/stable/v1.0/Face.json#L2832:3 |
1006 - RemovedDefinition |
The new version is missing a definition that was found in the old version. Was 'Confidence' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L7255:3 Old: Face/stable/v1.0/Face.json#L2832:3 |
1006 - RemovedDefinition |
The new version is missing a definition that was found in the old version. Was 'NameAndUserDataContract' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L7255:3 Old: Face/stable/v1.0/Face.json#L2832:3 |
1006 - RemovedDefinition |
The new version is missing a definition that was found in the old version. Was 'MetaDataContract' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L7255:3 Old: Face/stable/v1.0/Face.json#L2832:3 |
1006 - RemovedDefinition |
The new version is missing a definition that was found in the old version. Was 'ApplyScope' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L7255:3 Old: Face/stable/v1.0/Face.json#L2832:3 |
1006 - RemovedDefinition |
The new version is missing a definition that was found in the old version. Was 'ApplySnapshotRequest' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L7255:3 Old: Face/stable/v1.0/Face.json#L2832:3 |
1006 - RemovedDefinition |
The new version is missing a definition that was found in the old version. Was 'TakeSnapshotRequest' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L7255:3 Old: Face/stable/v1.0/Face.json#L2832:3 |
1006 - RemovedDefinition |
The new version is missing a definition that was found in the old version. Was 'UpdateSnapshotRequest' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L7255:3 Old: Face/stable/v1.0/Face.json#L2832:3 |
1006 - RemovedDefinition |
The new version is missing a definition that was found in the old version. Was 'ImageUrl' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L7255:3 Old: Face/stable/v1.0/Face.json#L2832:3 |
1007 - RemovedClientParameter |
The new version is missing a client parameter that was found in the old version. Was 'returnFaceAttributes' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L9398:3 Old: Face/stable/v1.0/Face.json#L4272:3 |
1007 - RemovedClientParameter |
The new version is missing a client parameter that was found in the old version. Was 'targetFace' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L9398:3 Old: Face/stable/v1.0/Face.json#L4272:3 |
1007 - RemovedClientParameter |
The new version is missing a client parameter that was found in the old version. Was 'faceUserData' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L9398:3 Old: Face/stable/v1.0/Face.json#L4272:3 |
1007 - RemovedClientParameter |
The new version is missing a client parameter that was found in the old version. Was 'faceListId' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L9398:3 Old: Face/stable/v1.0/Face.json#L4272:3 |
1007 - RemovedClientParameter |
The new version is missing a client parameter that was found in the old version. Was 'personGroupId' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L9398:3 Old: Face/stable/v1.0/Face.json#L4272:3 |
1007 - RemovedClientParameter |
The new version is missing a client parameter that was found in the old version. Was 'largeFaceListId' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L9398:3 Old: Face/stable/v1.0/Face.json#L4272:3 |
1007 - RemovedClientParameter |
The new version is missing a client parameter that was found in the old version. Was 'largePersonGroupId' removed or renamed? New: Face/preview/v1.1-preview.1/Face.json#L9398:3 Old: Face/stable/v1.0/Face.json#L4272:3 |
️️✔️
CredScan succeeded [Detail] [Expand]
There is no credential detected.
️⚠️
LintDiff: 113 Warnings warning [Detail]
Compared specs (v2.2.1) | new version | base version |
---|---|---|
v1.1-preview.1 | v1.1-preview.1(482ba27) | default(main) |
[must fix]The following errors/warnings are introduced by current PR:
Only 30 items are listed, please refer to log for more details.
Rule | Message | Related RPC [For API reviewers] |
---|---|---|
Booleans properties are not descriptive in all cases and can make them to use, evaluate whether is makes sense to keep the property as boolean or turn it into an enum. Location: Face/preview/v1.1-preview.1/Face.json#L167 |
||
Booleans properties are not descriptive in all cases and can make them to use, evaluate whether is makes sense to keep the property as boolean or turn it into an enum. Location: Face/preview/v1.1-preview.1/Face.json#L272 |
||
Booleans properties are not descriptive in all cases and can make them to use, evaluate whether is makes sense to keep the property as boolean or turn it into an enum. Location: Face/preview/v1.1-preview.1/Face.json#L280 |
||
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L354 |
||
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L407 |
||
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L448 |
||
Path parameter should specify a maximum length (maxLength) and characters allowed (pattern). Location: Face/preview/v1.1-preview.1/Face.json#L449 |
||
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L487 |
||
Path parameter should specify a maximum length (maxLength) and characters allowed (pattern). Location: Face/preview/v1.1-preview.1/Face.json#L488 |
||
A delete operation should have a 204 response.Location: Face/preview/v1.1-preview.1/Face.json#L496 |
||
All success responses except 202 & 204 should define a response body. Location: Face/preview/v1.1-preview.1/Face.json#L497 |
||
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L524 |
||
Path parameter should specify a maximum length (maxLength) and characters allowed (pattern). Location: Face/preview/v1.1-preview.1/Face.json#L525 |
||
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L586 |
||
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L642 |
||
Check for appropriate use of formData parameters. Location: Face/preview/v1.1-preview.1/Face.json#L643 |
||
Check for appropriate use of formData parameters. Location: Face/preview/v1.1-preview.1/Face.json#L646 |
||
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L681 |
||
Path parameter should specify a maximum length (maxLength) and characters allowed (pattern). Location: Face/preview/v1.1-preview.1/Face.json#L682 |
||
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L720 |
||
Path parameter should specify a maximum length (maxLength) and characters allowed (pattern). Location: Face/preview/v1.1-preview.1/Face.json#L721 |
||
A delete operation should have a 204 response.Location: Face/preview/v1.1-preview.1/Face.json#L729 |
||
All success responses except 202 & 204 should define a response body. Location: Face/preview/v1.1-preview.1/Face.json#L730 |
||
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L757 |
||
Path parameter should specify a maximum length (maxLength) and characters allowed (pattern). Location: Face/preview/v1.1-preview.1/Face.json#L758 |
||
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L819 |
||
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L875 |
||
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L917 |
||
A patch operation should consume 'application/merge-patch+json' content type. Location: Face/preview/v1.1-preview.1/Face.json#L993 |
||
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L997 |
The following errors/warnings exist before current PR submission:
Only 30 items are listed, please refer to log for more details.
Rule | Message |
---|---|
API version should be a date in YYYY-MM-DD format, optionally suffixed with '-preview'. Location: Face/preview/v1.1-preview.1/Face.json#L5 |
|
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L92 |
|
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L1189 |
|
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L1234 |
|
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L1284 |
|
All success responses except 202 & 204 should define a response body. Location: Face/preview/v1.1-preview.1/Face.json#L1358 |
|
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L1383 |
|
All success responses except 202 & 204 should define a response body. Location: Face/preview/v1.1-preview.1/Face.json#L1417 |
|
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L1442 |
|
A delete operation should have a 204 response.Location: Face/preview/v1.1-preview.1/Face.json#L1454 |
|
All success responses except 202 & 204 should define a response body. Location: Face/preview/v1.1-preview.1/Face.json#L1455 |
|
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L1483 |
|
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L1601 |
|
Path parameter should specify a maximum length (maxLength) and characters allowed (pattern). Location: Face/preview/v1.1-preview.1/Face.json#L1612 |
|
A delete operation should have a 204 response.Location: Face/preview/v1.1-preview.1/Face.json#L1621 |
|
All success responses except 202 & 204 should define a response body. Location: Face/preview/v1.1-preview.1/Face.json#L1622 |
|
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L1650 |
|
Operation might be pageable. Consider adding the x-ms-pageable extension. Location: Face/preview/v1.1-preview.1/Face.json#L1742 |
|
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L1746 |
|
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L1800 |
|
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L1880 |
|
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L1943 |
|
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L1993 |
|
All success responses except 202 & 204 should define a response body. Location: Face/preview/v1.1-preview.1/Face.json#L2067 |
|
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L2092 |
|
All success responses except 202 & 204 should define a response body. Location: Face/preview/v1.1-preview.1/Face.json#L2126 |
|
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L2152 |
|
A delete operation should have a 204 response.Location: Face/preview/v1.1-preview.1/Face.json#L2164 |
|
All success responses except 202 & 204 should define a response body. Location: Face/preview/v1.1-preview.1/Face.json#L2165 |
|
Operation does not define an 'api-version' query parameter. Location: Face/preview/v1.1-preview.1/Face.json#L2193 |
️️✔️
Avocado succeeded [Detail] [Expand]
Validation passes for Avocado.
️️✔️
SwaggerAPIView succeeded [Detail] [Expand]
️️✔️
TypeSpecAPIView succeeded [Detail] [Expand]
️️✔️
ModelValidation succeeded [Detail] [Expand]
Validation passes for ModelValidation.
️️✔️
SemanticValidation succeeded [Detail] [Expand]
Validation passes for SemanticValidation.
️️✔️
PoliCheck succeeded [Detail] [Expand]
Validation passed for PoliCheck.
️️✔️
SpellCheck succeeded [Detail] [Expand]
Validation passes for SpellCheck.
️️✔️
Lint(RPaaS) succeeded [Detail] [Expand]
Validation passes for Lint(RPaaS).
️️✔️
PR Summary succeeded [Detail] [Expand]
Validation passes for Summary.
️️✔️
Automated merging requirements met succeeded [Detail] [Expand]
Swagger Generation Artifacts
|
Generated ApiView
|
Hi @Han-msft! For review efficiency consideration, when creating a new API version, it is required to place API specs of the base version in the first commit, and push new version updates into successive commits. You can use OpenAPIHub to initialize the PR for adding a new version. |
1505ccf
to
586ec68
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Found a few issues I hope you can address.
"schema": { | ||
"type": "array", | ||
"items": { | ||
"$ref": "#/definitions/LivenessSessionItem" | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Response schema should not be a bare array.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This API is already public previewed. We prefer not to change it.
"/face/{apiVersion}/detectLiveness/singleModal/sessions": { | ||
"get": { | ||
"operationId": "LivenessSessions_ListSessions", | ||
"description": "Operation that lists resources in a paginated way.", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How does pagination work for this API?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's the description that comes from the TypeSpec Azure.Core operation. Our list operation only support query by top and start, I think it's not fulfilling the pagination of Azure API. I'll override the description.
"ListRequestOptions.top": { | ||
"name": "top", | ||
"in": "query", | ||
"description": "The number of sessions to list, ranging in [1, 1000]. Default is 1000.", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Top should not have a default value. The default is to return all elements of the collection, paginated as needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Our long time ago GAed API use these parameters for list request. We'll consider revise it in our next generation service but not changing it for now.
specification/ai/data-plane/Face/preview/v1.1-preview.1/Face.json
Outdated
Show resolved
Hide resolved
}, | ||
"tags": [], | ||
"paths": { | ||
"/face/{apiVersion}/compare": { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think you should move "/face/{apiVersion}" into the x-ms-parameterized-host
, as it was in your GA API. That will be more DRY and also make comparison across API versions easier.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated. However, Azure.Core.Foundations.ApiVersionParameter
is injected to all our API's parameter, I could not find a way to remove it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm going to rollback the change since there is no way to remove ApiVersionParameter in query if we don't override it by putting it in request path.
specification/ai/data-plane/Face/preview/v1.1-preview.1/Face.json
Outdated
Show resolved
Hide resolved
@@ -0,0 +1,7948 @@ | |||
{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think you should populate the GA API in the "stable/v1.0" folder, to establish the baseline for tooling.
There are two ways to do this. One is to make your TypeSpec versioned, with a v1.0 version and a v1.1-preview version. I think this is the preferred solution. Or you could just copy the directory over from the cognitiveservices directory as is.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought we only need to support latest version when migrating to TypeSpec. That's what I observed from document intelligence and image analysis. I'll go for copy the swagger file. Please let me know if you think we should include them in TypeSpec.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I copied the stable swagger to current ai folder. How do I know whether it works for tooling? Would it take effect on APIView or it's other tool?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm going to revert the swagger commit for now. Because Jeffery said he is going to check more detail about folder change of cognitive service. Copying swagger also bring more validation failure.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approved based on the changes we discussed in the meeting, but for a v2 there's a lot to consider here. More than I've reviewed since this PR was not the one listed in the meeting request for review (and I reviewed that one, which was significantly smaller).
} | ||
|
||
@doc("Session status.") | ||
enum SessionStatus { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If this is part of a long-running operation, we have standard enums we recommend: https://github.com/microsoft/api-guidelines/blob/vNext/azure/Guidelines.md#lro-status-monitor-structure. Even if it's not for an LRO, I would use the same value for familiarity.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, it's not the status of operation. It stands for the lifecycle of created session object.
CreationContent: LivenessSessionCreationContentForMultipart; | ||
|
||
#suppress "@azure-tools/typespec-azure-core/casing-style" | ||
@doc("The image stream for verify.") | ||
VerifyImage: bytes; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why did you switch to PascalCase for these two properties?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's reflecting the underlying key inside the form-data request of our existing service. Do you prefer to name these properties with camelCase and use decorator to specify it's PascalCase in actual request?
model ListRequestOptions { | ||
@doc("List resources greater than the \"start\". It contains no more than 64 characters. Default is empty.") | ||
@query | ||
start?: string; | ||
|
||
@doc("The number of items to list, ranging in [1, 1000]. Default is 1000.") | ||
@query | ||
top?: int32; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These should be query parameters named start skip
and top
. That's the recommendation, anyway.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This would be breaking change to existing service. We should consider in future release.
} | ||
|
||
@doc("Type of training status.") | ||
enum TrainingStatusType { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We already have a standard enum for LRO status. See https://azure.github.io/typespec-azure/docs/getstarted/azure-core/step06 for an example. The values you define here aren't correct, for example, and should be PascalCase.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is also for operation GAed a long time ago.
|
||
namespace Face; | ||
|
||
alias ServiceTraits = NoClientRequestId & |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do you say you don't support a client request ID here but then have a property for it in your audit models? We do recommend supporting client request IDs to assist callers with tracing, etc.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We support it but not with header key "x-ms-client-request-id", which is the behavior of SupportsClientRequestId trait.
PR validation pipeline can not start as the pull request is not merged or mergeable - most likely it has merge conflicts. |
1 similar comment
PR validation pipeline can not start as the pull request is not merged or mergeable - most likely it has merge conflicts. |
ee0f986
to
4093ed6
Compare
PR validation pipeline can not start as the pull request is not merged or mergeable - most likely it has merge conflicts. |
549ad8d
to
e9b6c35
Compare
Co-authored-by: Shawn Lin <Shao.Lin@microsoft.com>
…st-api-specs into hachiang/face-typespec
/azp run |
Azure Pipelines successfully started running 4 pipeline(s). |
@returnsDoc(SessionCreationSuccess) | ||
createLivenessSession is FaceResourceCreateWithServiceProvidedName< | ||
LivenessSession, | ||
CreateLivenessSessionParameters, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure we could rename this model name CreateLivenessSessionParameters
.
This is conflicted with RLC's naming rule {Operations}Parameters
. We would resolve this conflict in emitter side. To non-block you it would be great if you could rename it.
JS issue tracked: Azure/autorest.typescript#2487
Data Plane API - Pull Request
Face API is an existing service & restful API for 5+ years as documented in What is the Azure AI Face service?. We continue to extend with new API and the latest addition was Detect liveness in faces that was released in Ignite in Nov 2023 as a Public Preview. At that time, we wanted to release a REST SDK for detect liveness too. However, we were told we cannot use OpenAPI spec that we used to create SDK for old APIs like Detect/Verify/Identify, etc. anymore and TypeSpec is the only option to release new SDK. Our current objective is to release an All-In-One SDK for all the APIs by using TypeSpec, including the existing Face Detect, Verify, Identify, FindSimilar, and the latest detect liveness.
API Info: The Basics
Most of the information about your service should be captured in the issue that serves as your API Spec engagement record.
Is this review for (select one):
Change Scope
This section will help us focus on the specific parts of your API that are new or have been modified.
Please share a link to the design document for the new APIs, a link to the previous API Spec document (if applicable), and the root paths that have been updated.
Viewing API changes
For convenient view of the API changes made by this PR, refer to the URLs provided in the table
in the
Generated ApiView
comment added to this PR. You can use ApiView to show API versions diff.Suppressing failures
If one or multiple validation error/warning suppression(s) is detected in your PR, please follow the
Swagger-Suppression-Process
to get approval.
❔Got questions? Need additional info?? We are here to help!
Contact us!
The Azure API Review Board is dedicated to helping you create amazing APIs. You can read about our mission and learn more about our process on our wiki.
Click here for links to tools, specs, guidelines & other good stuff
Tooling
Guidelines & Specifications
Helpful Links
Checks stuck in `queued` state?
If the PR CI checks appear to be stuck in `queued` state, please add a comment with contents `/azp run`. This should result in a new comment denoting a `PR validation pipeline` has started and the checks should be updated after few minutes.