Skip to content

E2E User Experience of Onboarding Service to CADL #3638

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

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions specification/contoso/Contoso/cadl-project.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
parameters:
python-sdk-folder:
default: "{cwd}/azure-sdk-for-python/"
java-sdk-folder:
default: "{cwd}/azure-sdk-for-java/"
js-sdk-folder:
default: "{cwd}/azure-sdk-for-js/"
csharp-sdk-folder:
default: "{cwd}/azure-sdk-for-csharp/"
service-directory-name:
default: "Contoso"
emit:
- "@azure-tools/cadl-autorest"
options:
"@azure-tools/cadl-autorest":
output-file: "azure.template.contoso.json"
azure-resource-provider-folder: ../../../../data-plane
examples-directory: ./examples
"@azure-tools/cadl-python":
package-name: "azure-template-contoso"
emitter-output-dir: "{python-sdk-folder}/sdk/{service-directory-name}/{package-name}"
package-mode: dataplane
"@azure-tools/cadl-csharp":
namespace: "Azure.Template.Contoso"
clear-output-folder: true
model-namespace: false
emitter-output-dir: "{csharp-sdk-folder}/sdk/{service-directory-name}/{namespace}/src"
"@azure-tools/cadl-typescript":
emitter-output-dir: "{js-sdk-folder}/sdk/{service-directory-name}/azure-template-contoso-rest"
generateMetadata: true
generateTest: true
azureSdkForJs: true
packageDetails:
name: "@azure-rest/azure-template-contoso-rest"
description: "Azure.Template.Contoso Service"
"@azure-tools/cadl-java":
emitter-output-dir: "{java-sdk-folder}/sdk/{service-directory-name}/azure-template-contoso"
namespace: com.azure.template.contoso
5 changes: 5 additions & 0 deletions specification/contoso/Contoso/client.cadl
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/**
* PLACEHOLDER
* Add readme and sample
*/
import "./main.cadl";
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"title": "Widgets_CreateOrUpdateWidget",
"operationId": "Widgets_CreateOrUpdateWidget",
"parameters": {
"widgetName": "name1",
"api-version": "2022-11-01-preview",
"body": {
"manufacturerId": "manufacturer id1",
"sharedModel": {
"tag": "tag1",
"createdDate": "2023-01-09T02:12:25.689Z"
}
}
},
"responses": {
"200": {
"body": {
"name": "name1",
"manufacturerId": "manufacturer id1",
"sharedModel": {
"tag": "tag1",
"createdDate": "2023-01-09T02:12:25.689Z"
}
}
},
"201": {
"body": {
"name": "name1",
"manufacturerId": "manufacturer id1",
"sharedModel": {
"tag": "tag1",
"createdDate": "2023-01-09T02:12:25.689Z"
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"operationId": "Widgets_DeleteWidget",
"title": "Delete widget by widget name using long-running operation.",
"parameters": {
"api-version": "2022-11-01-preview",
"widgetName": "searchbox"
},
"responses": {
"202": {
"headers": {
"location": "https://contosowidgetmanager.azure.com/operations/00000000-0000-0000-0000-000000000123/result?api-version=2022-11-01-preview",
"operation-location": "https://contosowidgetmanager.azure.com/operations/00000000-0000-0000-0000-000000000123?api-version=2022-11-01-preview"
},
"body": {
"id": "id1",
"status": "deleted"
}
},
"default": {
"body": {
"error": {
"code": "Error code",
"message": "Error message",
"details": []
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"title": "Widgets_GetWidgetOperationStatus",
"operationId": "Widgets_GetWidgetOperationStatus",
"parameters": {
"widgetName": "name1",
"operationId": "opreation id1",
"api-version": "2022-11-01-preview"
},
"responses": {
"200": {
"body": {
"id": "opreation id1",
"status": "InProgress",
"error": {
"code": "Error code",
"message": "Error message",
"target": "op1",
"details": [
{
"code": "code1",
"message": "message1",
"target": "op1",
"details": [],
"innererror": {
"code": "code1"
}
}
],
"innererror": {
"code": "code1"
}
},
"result": {
"name": "bingsearch",
"manufacturerId": "manufacturer Id1",
"sharedModel": {
"tag": "tag1",
"createdDate": "2023-01-09T02:12:25.689Z"
}
},
"widgetName": "rfazvwnfwwomiwrh"
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"operationId": "Widgets_GetWidget",
"title": "Get widget by widget name.",
"parameters": {
"api-version": "2022-11-01-preview",
"widgetName": "searchbox"
},
"responses": {
"200": {
"body": {
"name": "bingsearch",
"manufacturerId": "a-22-01"
}
},
"default": {
"body": {
"error": {
"code": "Error code",
"message": "Error message",
"details": []
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"title": "Widgets_ListWidgets",
"operationId": "Widgets_ListWidgets",
"parameters": {
"top": 8,
"skip": 15,
"maxpagesize": 27,
"api-version": "2022-11-01-preview"
},
"responses": {
"200": {
"body": {
"value": [
{
"name": "bingsearch",
"manufacturerId": "manufacturer Id1",
"sharedModel": {
"tag": "tag1",
"createdDate": "2023-01-09T02:12:25.689Z"
}
}
],
"nextLink": "https://microsoft.com/a"
}
}
}
}
69 changes: 69 additions & 0 deletions specification/contoso/Contoso/main.cadl
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import "@cadl-lang/rest";
import "@cadl-lang/versioning";
import "@azure-tools/cadl-azure-core";

using Cadl.Http;
using Cadl.Rest;
using Cadl.Versioning;
using Azure.Core;

@service({
title: "Azure.Template.Contoso service",
})
@versioned(Azure.Template.Contoso.Versions)
@versionedDependency(
[[Azure.Template.Contoso.Versions.v2022_11_01_Preview, Azure.Core.Versions.v1_0_Preview_1]]
)
namespace Azure.Template.Contoso;

enum Versions {
v2022_11_01_Preview: "2022-11-01-preview",
}

@doc("A widget.")
@resource("widgets")
model Widget {
@key("widgetName")
@doc("The widget name.")
@visibility("read")
name: string;

@doc("The ID of the manufacturer.")
manufacturerId: string;

@doc("The faked shared model.")
sharedModel?: FakedSharedModel;
}

@doc("Faked shared model")
model FakedSharedModel {
@doc("The tag.")
tag: string;

@doc("The created date.")
createdDate: zonedDateTime;
}

interface Widgets {
@doc("Fetch a Widget by name.")
getWidget is ResourceRead<Widget>;

@doc("Gets status of a Widget operation.")
getWidgetOperationStatus is GetResourceOperationStatus<Widget>;

@doc("Creates or updates a Widget asynchronously.")
@pollingOperation(Widgets.getWidgetOperationStatus)
createOrUpdateWidget is LongRunningResourceCreateOrUpdate<Widget>;

@doc("Delete a Widget asynchronously.")
@pollingOperation(Widgets.getWidgetOperationStatus)
deleteWidget is LongRunningResourceDelete<Widget>;

@doc("List Widget resources")
listWidgets is ResourceList<
Widget,
{
parameters: StandardListQueryParameters;
}
>;
}
Loading