azure-rest-api-specs
azure-rest-api-specs copied to clipboard
[AgriFood] Adding Nov 2022 API version
Data Plane API - Pull Request
Added Fields
- Crop Entity – breedingMethods(string), Measurements(Dictionary(string: measure))
- Season Entity – geographicIdentifier(string)
- CropVariety Entity – trait(string), relativeMeasurements(Measure), treatments(Array(strings))
- Boundary Entity – type(string), crs(string), centroid(GeoJson), bbox(GeoJson)
- Source(string) field in Farmer/Farm/Field/Seasonal Field/Boundary/Crop/Crop variety/Season/Attachment
- CreatedBy(string) and ModifiedBy(string) in all entities
- measure renamed to measurements in prescription & crop
- acreage renamed to area in boundary
Removed Fields -
- primaryBoundaryId in fields and seasonal fields
- isPrimary flag in boundary
- boundaryIds list in field & seasonal field
- avgYields etc from seasonal field
Changes in Controller -
- Migrate from Farmer to Party in all controllers
- Change CropVariety to CropProduct
Changes pending from last review
- $maxPageSize to maxPageSize and $skipToken to skipToken
- value is now required in pageable response
- Adding default response for ImageProcessing_GetRasterizeJob
- camelCase parameters for Attachments_CreateOrUpdate and InsightAttachments_CreateOrUpdate (currently case insensitive)
- Removing default from provider from scenes get & put APIs
- Fixing datetime examples
- Removing
additionalProperties: {}
- Marking code and message as required in Error schema
- Patch operations should consume 'application/merge-patch+json' content type (pending) (start a thread)
- All 202 responses should include an “Operation-Location” response header (pending) (change it once supported by the clients)
API Info: The Basics
Most of the information about your service should be captured in the issue that serves as your engagement record.
- Link to engagement record issue: https://github.com/Azure/azure-rest-api-specs/issues/20886
Is this review for (select one):
- [ ] a private preview
- [x] a public preview
- [ ] GA release
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 Open API document (swagger) if applicable, and the root paths that have been updated.
- Design Document:
- Previous Open API Doc: https://github.com/Azure/azure-rest-api-specs/blob/main/specification/agrifood/data-plane/Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json
- Updated paths:
❔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.
- 💬 Teams Channel
Click here for links to tools, specs, guidelines & other good stuff
Tooling
- Open API validation tools were run on this PR. Go here to see how to fix errors
- Spectral Linting
- Open API Hub
Guidelines & Specifications
Helpful Links
Hi, @bhargav-kansagara Thanks for your PR. I am workflow bot for review process. Here are some small tips.
Swagger Validation Report
️️✔️
BreakingChange succeeded [Detail] [Expand]
There are no breaking changes.
️❌
Breaking Change(Cross-Version): 1 Errors, 0 Warnings failed [Detail]
The following breaking changes are detected by comparison with the latest preview version:
Rule | Message |
---|---|
Runtime Exception |
"new":"https://github.com/Azure/azure-rest-api-specs/blob/bc040db4d210f7cb1f3164f3095aa84f397e2d56/specification/agrifood/data-plane/Microsoft.AgFoodPlatform/preview/2022-11-01-preview/agfood.json", "old":"https://github.com/Azure/azure-rest-api-specs/blob/main/specification/agrifood/data-plane/Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json", "details":"Command failed: node /mnt/vss/_work/_tasks/AzureApiValidation_5654d05d-82c1-48da-ad8f-161b817f6d41/0.0.45/common/temp/node_modules/.pnpm/@[email protected]/node_modules/autorest/dist/app.js --v2 --input-file=specification/agrifood/data-plane/Microsoft.AgFoodPlatform/preview/2022-11-01-preview/agfood.json --output-artifact=swagger-document.json --output-artifact=swagger-document.map --output-file=new --output-folder=/tmp\nERROR: Schema violation: Data does not match any schemas from 'oneOf'\n - file:///mnt/vss/work/1/azure-rest-api-specs/specification/agrifood/data-plane/Microsoft.AgFoodPlatform/preview/2022-11-01-preview/agfood.json:15991:10 ($.paths["/solutions/solutionId:create"].post["x-ms-examples"].SolutionInferenceCreateOrUpdate)\nFATAL: swagger-document/individual/schema-validator - FAILED\nFATAL: Error: [OperationAbortedException] Error occurred. Exiting.\nProcess() cancelled due to exception : [OperationAbortedException] Error occurred. Exiting.\n" |
️🔄
CredScan inProgress [Detail]
️🔄
LintDiff inProgress [Detail]
️️✔️
Avocado succeeded [Detail] [Expand]
Validation passes for Avocado.
️️✔️
ApiReadinessCheck succeeded [Detail] [Expand]
️⚠️
~[Staging] ServiceAPIReadinessTest: 0 Warnings warning [Detail]
API Test is not triggered due to precheck failure. Check pipeline log for details.
️️✔️
~[Staging] SwaggerAPIView succeeded [Detail] [Expand]
️❌
ModelValidation: 2 Errors, 0 Warnings failed [Detail]
Rule | Message |
---|---|
RESPONSE_BODY_NOT_IN_EXAMPLE |
Response statusCode 200 for operation SolutionInference_Cancel has no response body provided in the example, however the response does have a "schema" defined in the swagger spec. Url: Microsoft.AgFoodPlatform/preview/2022-11-01-preview/agfood.json#L15896:22 ExampleUrl: preview/2022-11-01-preview/examples/SolutionInference_Cancel.json#L11:16 |
RESPONSE_BODY_NOT_IN_EXAMPLE |
Response statusCode 200 for operation SolutionInference_Cancel has no response body provided in the example, however the response does have a "schema" defined in the swagger spec. Url: Microsoft.AgFoodPlatform/preview/2022-11-01-preview/agfood.json#L15896:22 ExampleUrl: preview/2022-11-01-preview/examples/SolutionInference_Cancel.json#L11:16 |
️❌
SemanticValidation: 5 Errors, 0 Warnings failed [Detail]
Rule | Message |
---|---|
DUPLICATE_PARAMETER |
Operation cannot have duplicate parameters: partyId JsonUrl: Microsoft.AgFoodPlatform/preview/2022-11-01-preview/agfood.json#L1031:16 |
DUPLICATE_PARAMETER |
Operation cannot have duplicate parameters: modelId JsonUrl: Microsoft.AgFoodPlatform/preview/2022-11-01-preview/agfood.json#L6065:16 |
DUPLICATE_PARAMETER |
Operation cannot have duplicate parameters: resourceType JsonUrl: Microsoft.AgFoodPlatform/preview/2022-11-01-preview/agfood.json#L6065:16 |
DUPLICATE_PARAMETER |
Operation cannot have duplicate parameters: resourceId JsonUrl: Microsoft.AgFoodPlatform/preview/2022-11-01-preview/agfood.json#L6065:16 |
DUPLICATE_PARAMETER |
Operation cannot have duplicate parameters: partyId JsonUrl: Microsoft.AgFoodPlatform/preview/2022-11-01-preview/agfood.json#L6065:16 |
️🔄
PoliCheck inProgress [Detail]
️️✔️
PrettierCheck succeeded [Detail] [Expand]
Validation passes for PrettierCheck.
️️✔️
SpellCheck succeeded [Detail] [Expand]
Validation passes for SpellCheck.
️️✔️
Lint(RPaaS) succeeded [Detail] [Expand]
Validation passes for Lint(RPaaS).
️️✔️
CadlValidation succeeded [Detail] [Expand]
Validation passes for CadlValidation.
️️✔️
PR Summary succeeded [Detail] [Expand]
Validation passes for Summary.
Swagger Generation Artifacts
️️✔️
ApiDocPreview succeeded [Detail] [Expand]
Please click here to preview with your @microsoft account.
️️✔️
SDK Breaking Change Tracking succeeded [Detail] [Expand]
Breaking Changes Tracking
️⚠️
azure-sdk-for-java warning [Detail]
⚠️
Warning [Logs]Release - Generate from 6f3459b5d35aa4117799b6656a0b97b7fed3f03e. SDK Automation 14.0.0command ./eng/mgmt/automation/init.sh ../azure-sdk-for-java_tmp/initInput.json ../azure-sdk-for-java_tmp/initOutput.json command ./eng/mgmt/automation/generate.py ../azure-sdk-for-java_tmp/generateInput.json ../azure-sdk-for-java_tmp/generateOutput.json warn No file changes detected after generation warn No package detected after generation
Generated ApiView
Language | Package Name | ApiView Link |
---|---|---|
swagger | Microsoft.AgFoodPlatform | Create ApiView failed. Please ensure your github account in Azure/Microsoft is public and add a comment "/azp run" to re-trigger the CI. |
Hi @bhargav-kansagara, Your PR has some issues. Please fix the CI sequentially by following the order of Avocado, semantic validation, model validation, breaking change, lintDiff
. If you have any questions, please post your questions in this channel https://aka.ms/swaggersupport.
Task | How to fix | Priority |
---|---|---|
Avocado | Fix-Avocado | High |
Semantic validation | Fix-SemanticValidation-Error | High |
Model validation | Fix-ModelValidation-Error | High |
LintDiff | Fix-LintDiff | high |
Hi, @bhargav-kansagara. Your PR has no update for 14 days and it is marked as stale PR. If no further update for over 14 days, the bot will close the PR. If you want to refresh the PR, please remove no-recent-activity
label.
Hi @bhargav-kansagara, one or multiple breaking change(s) is detected in your PR. Please check out the breaking change(s), and provide business justification in the PR comment and @ PR assignee why you must have these change(s), and how external customer impact can be mitigated. Please ensure to follow breaking change policy to request breaking change review and approval before proceeding swagger PR review. Action: To initiate an evaluation of the breaking change, create a new intake using the template for breaking changes. Addition details on the process and office hours are on the Breaking change Wiki. If you want to know the production traffic statistic, please see ARM Traffic statistic. If you think it is false positive breaking change, please provide the reasons in the PR comment, report to Swagger Tooling Team via https://aka.ms/swaggerfeedback. Note: To avoid breaking change, you can refer to Shift Left Solution for detecting breaking change in early phase at your service code repository.
Hi, @bhargav-kansagara, 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. For more details refer to the wiki. Or you could onboard API spec pipeline
Swagger Validation Report
️️✔️
BreakingChange succeeded [Detail] [Expand]
There are no breaking changes.
️❌
Breaking Change(Cross-Version): 441 Errors, 100 Warnings failed [Detail]
compared swaggers (via Oad v0.10.2)] | new version | base version |
---|---|---|
agfood.json | 2022-11-01-preview(d9240a7) | 2021-07-31-preview(main) |
The following breaking changes are detected by comparison with the latest preview 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 '/farmers/{farmerId}/application-data' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L371:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/application-data/{applicationDataId}' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L616:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/attachments' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L810:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/attachments/{attachmentId}' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L971:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/attachments/{attachmentId}/file' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L1245:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/boundaries' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L1662:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/boundaries/{boundaryId}' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L1906:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/boundaries/{boundaryId}/overlap' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L2100:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/crop-varieties' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L2492:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/crop-varieties/{cropVarietyId}' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L2656:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L3519:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L3653:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/cascade-delete/{jobId}' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L3826:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/farms' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L4065:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/farms/{farmId}' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L4206:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/fields' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L4658:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/fields/{fieldId}' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L4809:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/harvest-data' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L5271:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/harvest-data/{harvestDataId}' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L5572:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/models/{modelId}/resource-types/{resourceType}/resources/{resourceId}/insight-attachments' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L6290:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/models/{modelId}/resource-types/{resourceType}/resources/{resourceId}/insight-attachments/{insightAttachmentId}' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L6462:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/models/{modelId}/resource-types/{resourceType}/resources/{resourceId}/insight-attachments/{insightAttachmentId}/file' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L6812:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/models/{modelId}/resource-types/{resourceType}/resources/{resourceId}/insights' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L6896:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/models/{modelId}/resource-types/{resourceType}/resources/{resourceId}/insights/{insightId}' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L7096:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/management-zones' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L7498:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/management-zones/{managementZoneId}' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L7689:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/nutrient-analyses' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L8435:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/nutrient-analyses/{nutrientAnalysisId}' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L8602:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/planting-data' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L9683:5 |
1005 - RemovedPath |
The new version is missing a path that was found in the old version. Was path '/farmers/{farmerId}/planting-data/{plantingDataId}' removed or restructured? Old: Microsoft.AgFoodPlatform/preview/2021-07-31-preview/agfood.json#L9942:5 |
️️✔️
CredScan succeeded [Detail] [Expand]
There is no credential detected.
️🔄
LintDiff inProgress [Detail]
️️✔️
Avocado succeeded [Detail] [Expand]
Validation passes for Avocado.
️️✔️
ApiReadinessCheck succeeded [Detail] [Expand]
️⚠️
~[Staging] ServiceAPIReadinessTest: 0 Warnings warning [Detail]
API Test is not triggered due to precheck failure. Check pipeline log for details.
️️✔️
~[Staging] SwaggerAPIView 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.
️️✔️
PrettierCheck succeeded [Detail] [Expand]
Validation passes for PrettierCheck.
️️✔️
SpellCheck succeeded [Detail] [Expand]
Validation passes for SpellCheck.
️️✔️
Lint(RPaaS) succeeded [Detail] [Expand]
Validation passes for Lint(RPaaS).
️️✔️
CadlValidation succeeded [Detail] [Expand]
Validation passes for CadlValidation.
️️✔️
PR Summary succeeded [Detail] [Expand]
Validation passes for Summary.
The Spectral linter is reporting many issues with your REST API definition. Please run the Spectral linter as described in the CONTRIBUTING.md file and address these issues where appropriate.
Spectral may issue messages for cases that warrant inspection but not necessarily changes, so use your judgement in addressing the Spectral output.
- Response body has “status” and one of its possible value is “Failed”. If it is “Failed”, is it still a 200 status code (which is unusual), or 400 status code (which does not use this body model)?
- “startTimeHours”, “endTimeHours” and “duration” seems for specific provider. What’s the plan if there is more providers in future and they requires different style of time range inputs?
- If backend has “x-ms-response-latency” for customer, it should be defined in Swagger (I am not sure that I understand the meaning of “for tracking purpose”, tracking for us or for customer?).
- Name of model "WeatherDataForPassthrough" sounds strange. Why not just “WeatherData”?
- Lots of “string” properties seems better be extensible enum, including “dayOfWeek”, “dayOrNight” in response, and “units” in request. (I am not sure if it follows certain standards, e.g. feel unfamiliar with “units” be “e”/”m”/”h”/”s”; and I think review from Mark already mention about “dayOfWeek”)
Possible error:
This should not be an array of “Locations”. I assume it should be just “Locations”.
"locations": {
"description": "List of locations along with corresponding weather data.",
"type": "array",
"items": {
"$ref": "#/definitions/Locations"
}
},
A couple more comments:
- All 202 responses should include an “Operation-Location” response header.
- LRO put should return 201 not 202.
- maxpagesize parameter must be named "maxpagesize" (all lowercase). Also recommend removing the default and max values so that your service can determine a proper value dynamically. Why force a minimum of 10? Suppose the user really only wants the first element?
- Don't specify minLength or maxLength on "readOnly" properties. (createdBy, modifiedBy in ApplicationData)
- "Attachments_CreateOrUpdate" takes a form parameter "eTag" with description "The ETag value to implement optimistic concurrency.". But eTags should not be set by the client - they are computed by the service.
Hi, @bhargav-kansagara. Your PR has no update for 14 days and it is marked as stale PR. If no further update for over 14 days, the bot will close the PR. If you want to refresh the PR, please remove no-recent-activity
label.
Hi, @bhargav-kansagara. Your PR has no update for 14 days and it is marked as stale PR. If no further update for over 14 days, the bot will close the PR. If you want to refresh the PR, please remove no-recent-activity
label.
Hi Mike, can we make those changes in the next API version?
I think you can defer these changes to the next API version if you are planning another preview version. If this is your final preview before GA then I think you should make the changes in this version.
No, we will have at least one more preview version
Breaking change is approved because the prior API version was not yet in public preview.
@weidongxu-microsoft The service team has made some fixes but would like approval to move forward with the understanding that they will address the remaining concerns in their next preview version. If this is acceptable, could you please approve the PR so that we can merge?
Only review for diff from 2021-07-31-preview (and issue description)
nit
- inconsistent on "area" / "acreage" https://github.com/Azure/azure-rest-api-specs/blob/d9240a766d0e4bd9d245f3030a85af3f782c66d9/specification/agrifood/data-plane/Microsoft.AgFoodPlatform/preview/2022-11-01-preview/agfood.json#L1334-L1347 (several instances)
my previous comment still holds, but as this is preview, you can try and break if necessary.
- “startTimeHours”, “endTimeHours” and “duration” seems for specific provider. What’s the plan if there is more providers in future and they requires different style of time range inputs?
Curious on operationId "Farms_CreateCascadeDeleteJob". This seems to be a PUT to delete or start delete some resources? (this pattern is on existing APIs)
@weidongxu-microsoft yes, we want to merge this right away.
I have noted your comments and we will take care of them in the next preview version.
Thanks a lot @weidongxu-microsoft!!