Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
227 commits
Select commit Hold shift + click to select a range
1acf6d0
Removing duplicate definition of `migratetoaad` in Recovery Services.…
marstr Dec 29, 2017
f88b59e
fixing relative paths to definitons and commondefinitions.json (#2200)
mikekinsman Dec 29, 2017
27b3baa
Changes for new API version 2017-12-01-preview (#2159)
zhedahht Jan 2, 2018
db22f73
[Cogs Face] Overall Refinement (renaming, refactoring, bug fixing, re…
lebronJ Jan 3, 2018
3e1b7bd
Add build tags for Go SDK. (#2213)
jhendrixMSFT Jan 4, 2018
0a0e530
Add Python conf to provisioningservices (#2215)
lmazuel Jan 4, 2018
ded42c8
[KeyVault] Updating resource-manager swagger to include missing defin…
Jan 5, 2018
9cacecc
Cognitive Services LUIS SDK directory re-structure (#2214)
pcostantini Jan 5, 2018
5ed2219
Remove GH token from Travis file (#2217)
lmazuel Jan 5, 2018
9c8629c
Fixing additionalProperties in GraphRBAC (#2218)
lmazuel Jan 5, 2018
ce1b768
Swagger definitions for the schemas of the Event Grid events publishe…
kalyanaj Jan 8, 2018
ec6f7da
Fix Go package directory name to match the namespace. (#2224)
jhendrixMSFT Jan 8, 2018
76a23e2
Invite User functionality (#2222)
solankisamir Jan 8, 2018
59e3261
fixing path to spec in readme.md (#2227)
veronicagg Jan 9, 2018
b906241
Add VmssVM PUT API (#2180)
hyonholee Jan 9, 2018
abaef37
Removing secrets.json from keyvault RM readme.md (#2225)
Jan 9, 2018
7f2c040
Add live validation (#2211)
Jan 9, 2018
c008dd3
Added connection monitor apis to network watcher swagger + examples (…
irrogozh Jan 9, 2018
b6f72b0
Added ProviderOperations endpoint and fixed description warnings (#2220)
ajay-arora Jan 9, 2018
9967bca
Remove Go SDK generation from search dataplane. (#2233)
jhendrixMSFT Jan 9, 2018
e446753
Added new receivers to action group document. (#2077)
shriku11 Jan 9, 2018
e7a671f
Add priority to VM Scale Set VM profile. (#2232)
hyonholee Jan 9, 2018
7efa3c5
Use source repo for live validation (#2238)
Jan 10, 2018
6f7fc73
Update readme.md (#2247)
montgomp Jan 10, 2018
723d1ac
[ADLA] - Fixing readme for Python Code Gen (#2221)
ro-joowan Jan 10, 2018
21ecc34
Notifications Resource (#2228)
solankisamir Jan 10, 2018
894d0d8
[Azure Search] Resolve Swagger linter errors for management API (#2242)
bitsforthought Jan 10, 2018
7fe4a12
Check for no total traffic for live validation (#2251)
Jan 11, 2018
b0e4eae
Merge Network 2017-11-01 to master (#2203)
chandrasekarsrinivasan Jan 11, 2018
5901c55
Fix or suppress spec violations (#2243)
Jan 11, 2018
6b81309
Add RunCommand to 2017-12-01 spec (#2240)
koralski Jan 11, 2018
bf9aa55
Suppressions for Cosmos DB RP API (#2229)
dmakwana Jan 11, 2018
34316c8
Add version to Resource Plan (#2193)
vivsriaus Jan 11, 2018
8662dd1
Fixing wrong discriminator value. (#2244)
avneeshraiusit Jan 11, 2018
1e5ecc0
DataFactory: convert all securestring to secretbase in Linked Service…
hbzhxying Jan 11, 2018
b0582de
Add ListSitesAssignedHostNames API. Change nextlink property to reado…
naveedaz Jan 11, 2018
1791ea5
Added HanaOnAzure spec (#2118)
PakDLiu Jan 11, 2018
0f7806f
HanaOnAzure Readme conf (#2259)
lmazuel Jan 12, 2018
131fc38
EventGrid: Added title and description; Added specs/examples for new …
kalyanaj Jan 12, 2018
6e3e424
SwaggerToSdk in Readme files (#2248)
lmazuel Jan 12, 2018
8ba6388
Fix incorrect model type for datalake-store dataplane. (#2263)
jhendrixMSFT Jan 12, 2018
ee96cf2
more changes for 11-01 from 10-01 (#2262)
chandrasekarsrinivasan Jan 12, 2018
69cd25f
Add missing nextLink fields to types returned from pageable operation…
jhendrixMSFT Jan 16, 2018
c065903
Service Fabric 6.1 Swagger specification (#2260)
Jan 16, 2018
b929316
Pstestfail (test fix for PR #2264) (#2276)
fearthecowboy Jan 17, 2018
2e8af97
Add edition support for the SSIS IR (#2266)
chinadragon0515 Jan 17, 2018
478d5a2
Advisor Python conf (#2277)
lmazuel Jan 17, 2018
1625e7a
Python conf for AppInsights (#2279)
lmazuel Jan 17, 2018
f00f984
Replace actual subId with mocks in examples (#2282)
solankisamir Jan 17, 2018
a70ffe7
Adding Swagger for Domain renewal API (#2155)
mn263 Jan 17, 2018
6057eeb
Suppress OAV109 to allow autorest to generate code (#2278)
Jan 18, 2018
4d142d0
Python conf for Automation (#2293)
lmazuel Jan 18, 2018
62a0fb0
[DO NOT MERGE, WIP] config bugs found while generating old stuff (#2291)
olydis Jan 19, 2018
ee4507d
Autorest violations fixes in RecoveryServices.Backup (#2208)
DheerendraRathor Jan 19, 2018
387c79f
Resolving Swagger Violations for RecoveryServices (#2186)
sonathan Jan 19, 2018
49efc40
Add data factory integration runtime sharing feature. (#2265)
zhangyd2015 Jan 19, 2018
b57b269
Added Delivery Policy to the endpoint entity in the new API version (…
prakharsharma10 Jan 19, 2018
5942709
Service Bus : New Property deadLetteringOnFilterEvaluationExceptions …
Jan 22, 2018
3b71b39
[Cogs Face] Adjust SDK generated target folder for Face API and Compu…
lebronJ Jan 22, 2018
cb9c18b
Add a stable api version 2017-08-01 (#2306)
shihying Jan 22, 2018
122be61
market-ordering: use string to persist precision during serialization…
yugangw-msft Jan 22, 2018
c830a70
Revert "market-ordering: use string to persist precision during seria…
yugangw-msft Jan 22, 2018
4ac6fe0
Fix MarketPlaceOrdering for Python (#2311)
lmazuel Jan 22, 2018
e712adc
Fix typo (#2261)
wilsonge Jan 23, 2018
66a4190
Updated compute spec to include properties in VMInstanceView and a ne…
robhat1 Jan 23, 2018
28cc67c
Changing customConfig from optional to required (#2304)
q3blend Jan 23, 2018
6a77e6a
Schema for the Azure Resource Manager events published to EventGrid. …
kalyanaj Jan 23, 2018
db70a06
Event Hubs: Removed AvroDeflate from CaptureDescription - encoding (#…
Jan 23, 2018
8fdd44b
Added Percentile and Partition paths (Cosmos DB) (#2141)
Jan 23, 2018
42c3572
Fix CS LUIS specs reference to ExtendedRegions.json (#2315)
Jan 23, 2018
40324aa
Introducing capabilities to DatabaseAccount resource (#2234)
dmakwana Jan 23, 2018
9410e99
Move 2017-10-12 CDN to stable (#2298)
jianghaolu Jan 24, 2018
90eb6bc
Create a new version of consumption, with preview budget merge with u…
bgsky Jan 24, 2018
3852ee4
EventGrid Data plane: Updating the prefix for event types to make the…
kalyanaj Jan 24, 2018
b3b961c
Add resources for SourceControl and SourceControlSyncJob (#2219)
MiaRomero Jan 24, 2018
0e08062
ManagementGroups API update (2017-11-01-preview) (#2094)
grzegorzzygmunt Jan 25, 2018
635c479
Add go batches (#2273)
marstr Jan 25, 2018
76afeff
Suppressing autorest error for storsimple.json (swagger spec file). (…
manaas-microsoft Jan 25, 2018
a75573d
Fix Automation swagger spec errors in the Modules area (#2326)
AnatoliB Jan 25, 2018
95cdae4
Added automatic tuning swagger to its readme.md (#2332)
kosta-bizetic Jan 25, 2018
239c3f6
Use autorest newest version (#2330)
mcardosos Jan 25, 2018
99ff55b
Fix ACS swagger spec error in array definition (#2327)
mboersma Jan 25, 2018
16052a6
Extract databases, elastic pools, and check name availability from sq…
jaredmoo Jan 25, 2018
8cbbb1c
Fix linter version (#2336)
mcardosos Jan 25, 2018
3c781e1
[Merge on Jan 31st] [ADLA - ADLS] - KPI Swagger/ARM Validation for Ac…
ro-joowan Jan 25, 2018
679502c
Add swagger for ACE provisioning GSM sevice, the related APIs can be …
jeffrey-ACE-zz Jan 25, 2018
e40a6de
Examples for Disks/Images (#2303)
gatneil Jan 26, 2018
6180784
Updated summaries and descriptions for certificate, secret, keys oper…
tiffanyachen Jan 26, 2018
f4365cb
Diagnostics resource added to APIM spec, Reconnect action added to Ba…
promoisha Jan 26, 2018
5034fc1
Moving Container Instance API version to preview folder. (#2338)
marstr Jan 26, 2018
1e774c5
Roll back linter (#2346)
mcardosos Jan 26, 2018
32576dc
Fail live validation on no traffic (#2348)
Jan 26, 2018
6af8813
Adding percentile metric value properties camel case suppression (#2334)
dmakwana Jan 27, 2018
62a2706
Add swagger validation error suppression (#2286)
atpham256 Jan 29, 2018
d26d0c5
rename gsm to managementpartner (#2351)
jeffrey-ACE-zz Jan 29, 2018
1497fea
new api version 20180101 and adding two fields in appgw (#2236)
azhao155 Jan 29, 2018
595c8f3
Adding swagger for DisasterRecoveryConfigurations (#2319)
jugeorge Jan 29, 2018
72e534e
Marketplace API - swagger for version 2018-01-31 (#2331)
kjeur Jan 29, 2018
d062804
Api Management - Versions, Revisions and Releases (#2295)
darrelmiller Jan 30, 2018
922c598
Fixed typo in description for API Management ver 2017-03-01 apimapis.…
dmitrytokarev Jan 30, 2018
6eb0d1a
Head operations for API Management entities (#2349)
KedarJoshi Jan 30, 2018
215956f
[SwaggerSpec change] [Time Series Insights] New /environments/status …
yeskarthik Jan 30, 2018
142af24
Add two more members to LinkedIntegrationRuntime (#2312)
zhangyd2015 Jan 30, 2018
d3af35e
[ADLA - ADLS] - Adding pageable extension for Catalog ACL APIs and re…
ro-joowan Jan 30, 2018
5d6b048
Seperating out operations as suggested in PR https://github.com/Azure…
kjeur Jan 30, 2018
fd0ec03
Fix error, update readme, add flatten flags and model guids as string…
rajshah11 Jan 30, 2018
f1d2067
Adding Dnsnamelable and fqdn(readonly) properties to container group …
Jan 30, 2018
05f3c86
Adjust EventGrid dataplane Python conf (#2369)
lmazuel Jan 30, 2018
a119fe1
Introduce two operations to consumption API, price sheet and updated …
bgsky Jan 30, 2018
5fe3a66
Add cache control - Microsoft.Management (#2374)
rajshah11 Jan 31, 2018
0a366ac
Fixing Go AutoRest batch clause. (#2375)
marstr Jan 31, 2018
443a86d
1) Fix Swagger API Errors 2) Add examples references to swagger spec …
sw47 Jan 31, 2018
20e0a89
GroupId method scope - Microsoft.Management (#2381)
rajshah11 Jan 31, 2018
7ebc500
ResourceGroupName and budgetName are method params (#2387)
fearthecowboy Jan 31, 2018
fcceaef
PriceSheet related changes- Indicate output for pricesheet operations…
shbha1 Feb 1, 2018
cdb7cc9
Adding new API for VMSS: ForceRecoveryServiceFabricPlatformUpdateDoma…
pratnala Feb 1, 2018
ac3f87a
fixing overwritting issue (#2364)
azhao155 Feb 1, 2018
1e0e3fe
Azure Data Factory: enable AAD auth for Azure SQL DB and DW (#2363)
hbzhxying Feb 1, 2018
6923f7e
moving capabilities into property bag for PATCH (#2392)
dmakwana Feb 1, 2018
9c66201
Add Java configuration for Swagger to SDK bot (#2290)
Feb 1, 2018
278c392
Added Swagger files for Appinsights\ProactiveDetection (#2340)
Feb 1, 2018
6997d2a
Adding missing multiapi tag (#2397)
marstr Feb 1, 2018
dc4a873
New Travis conf for SwaggerToSdk (#2398)
lmazuel Feb 1, 2018
bfe1258
[Key Vault] Adding preview version 7.0 (#2367)
Feb 1, 2018
0b2b333
byRequest path fixed, schema reference fixed (#2333)
VitaliyKurokhtin Feb 1, 2018
f559dd5
Added references to network watcher examples + test for delete connec…
irrogozh Feb 1, 2018
8847e80
Content Moderator new version changes (#2317)
v-sodsou Feb 1, 2018
79e7fc7
Refactoring Pricesheet response spec to fix model names and reference…
ms-premp Feb 2, 2018
9cda4a2
Fixing a typo (#2400)
v-anpasi Feb 2, 2018
88d2938
update Role based calls to new api version to support dataActions (#2…
darshanhs90 Feb 2, 2018
67f17c4
[ADLA - ADLS] - Account APIs object refactor (#2391)
ro-joowan Feb 2, 2018
0609009
Adding LogAnalytics to Compute spec (#2383)
waynekuo Feb 2, 2018
f9ec240
ManagementGroups API update (2018-01-01-preview) (#2345)
sendhil Feb 2, 2018
1dcfeb3
Document existing capabilites related apis (#2342)
frankguodongchen Feb 2, 2018
e78b9f3
Add Custom Vision swagger (#2177)
areddish Feb 2, 2018
b2a9c97
Add config for latest compute API version for Go. (#2409)
jhendrixMSFT Feb 2, 2018
976e003
fixing the casing of the new Dns Name Label property (#2410)
Feb 3, 2018
079d111
Fix CustomVision folder structure (#2413)
lmazuel Feb 3, 2018
fe627a2
Fixed swagger issues for Cheetah assets (#2368)
DeveloperTommy Feb 5, 2018
19c1a12
API Management Direct Control Plane SDK (#2269)
solankisamir Feb 5, 2018
0b96633
[ADLA - ADLS] - Revert path parameters (#2417)
ro-joowan Feb 5, 2018
8b0dee0
Typo in newssearch description (#2420)
lmazuel Feb 5, 2018
21e75bb
ManagementPartner for Python (#2422)
lmazuel Feb 5, 2018
8a1f5e9
Revert "VNET Rules API spec for Postgres and MySQL (#1773)" (#2411)
marstr Feb 6, 2018
f0ec6a6
database restore point swagger and examples (#2425)
olydis Feb 6, 2018
a41cfd4
Update creating-swagger.md
amarzavery Feb 6, 2018
6fa97c2
[Azure Search] Moving 2016-09-01-preview spec from private repo (#2427)
bitsforthought Feb 6, 2018
1b9f6f4
Adding Application Insights Data Plane (#2404)
alexeldeib Feb 6, 2018
a72e23d
Authorization py 0.40.0 (#2433)
lmazuel Feb 6, 2018
d390062
Rename "provisioningservice" to "deviceprovisioningservice" (#2385)
montgomp Feb 6, 2018
eddfd45
akv-for-compute (#2405)
fhljys Feb 6, 2018
99c15f0
Mark vault creation as a long running operation (#2436)
seanbamsft Feb 6, 2018
20fd26b
Changing customconfig from int32 to int64 (#2324)
q3blend Feb 6, 2018
46b77dd
Redis Py 5.0.0 (#2438)
lmazuel Feb 6, 2018
3a500cd
Metric id cleanup (#2437)
alexeldeib Feb 7, 2018
0ca5641
Minor bugfix for 6.1 Service Fabric data plane spec (#2412)
samedder Feb 7, 2018
766336c
Propose fixing a typo (#2421)
jeis2497052 Feb 7, 2018
f633051
AzureApiManagement new entity "Tag" documented (#2257)
vfedonkin Feb 7, 2018
68a0d93
EventGrid data spec for Microsoft.Devices/Iothub (#2424)
cpjagan Feb 7, 2018
24071a7
adding storage permissions for soft delete and backup restore (#2443)
Feb 7, 2018
d39e79a
Swagger changes for SAP ECC (#2354)
wenbof Feb 8, 2018
aaa6f85
moved tags related pathes into one file (#2449)
vfedonkin Feb 8, 2018
cffbe0f
[KeyVault] adding soft-delete methods and models for storage entities…
Feb 9, 2018
279f6dc
added suppressions (#2429)
gatneil Feb 9, 2018
1eda8f6
Fix network watcher connectivity check example invalid json (#2460)
Feb 9, 2018
2c6f018
Sksinghspecs (#2452)
sarvesh-s Feb 9, 2018
3b026b5
Fixes for CI from Versions and revisions checkin (#2451)
solankisamir Feb 9, 2018
084653b
Added the new Voice action and increased the API version for this cha…
Feb 9, 2018
4a7425d
Add missing properties for Vmss zone GA (#2445)
wangjun-jwa Feb 9, 2018
2e44e78
Classify changes Update (#2448)
v-sodsou Feb 9, 2018
8102b74
Py version for SQL build (#2463)
lmazuel Feb 9, 2018
5a95bfa
Renaming CreateGroupRequest to CreateManagementGroupRequest (#2456)
rajshah11 Feb 9, 2018
7a519c4
[Monitor] Make all attributes of EventData class readonly (#2254) (#2…
gucalder Feb 9, 2018
7fc5160
[Azure Search] Updating AutoRest config files (#2465)
bitsforthought Feb 9, 2018
29e3215
added some missing api management head operations (#2399)
KedarJoshi Feb 9, 2018
3cffe45
Service Bus: 2014-09-01 - Updated with missing API (#2450)
Feb 9, 2018
f16c201
correct API version for SourceControl and SourceControlSyncJob, updat…
MiaRomero Feb 9, 2018
f372f9d
Add multiapi for Python (#2447)
lmazuel Feb 9, 2018
02e4646
Adding missing Go tags. (#2474)
marstr Feb 12, 2018
e30543c
Adding missing operations for Microsoft.MachineLearning (#2402)
ericwill-msft Feb 12, 2018
b28d5e4
reverting changes which introduce breaking changes to generated SDKs …
Feb 12, 2018
1c86ef0
Swagger update for http20enabled and minTlsversion (#2471)
JennyLawrance Feb 12, 2018
6df9884
Fix go tags (#2475)
marstr Feb 12, 2018
02de1fa
Sksinghspecs (#2477)
sarvesh-s Feb 12, 2018
0b2943e
Fixing App Insights package name. (#2479)
marstr Feb 12, 2018
da605ec
Fix nextLinkName in recovery services backup swagger. (#2480)
jhendrixMSFT Feb 12, 2018
398cc69
Bhbrahma api sec fixes (#2434)
D1v38om83r Feb 12, 2018
fc56295
Adding x-ms-pageable tag for configuration list command. (#2470)
Prasanna-Padmanabhan Feb 13, 2018
9896f6e
add new LinkedService for vertica and netezza, update googleBigQuery …
Eva-Xiao Feb 13, 2018
4dec5ea
Move ManagementGroups out of Resources to a separate folder (#2469)
rajshah11 Feb 13, 2018
73046cd
Fix to existing pricesheet API swagger - introducing 'top' filter (#2…
shbha1 Feb 13, 2018
dd6b0da
Fix typo in enum modes in spell check json (#2488)
sarangan12 Feb 13, 2018
9f8952b
Add type and format specifiers on quantity property. (#2489)
jhendrixMSFT Feb 13, 2018
72a50a3
[Azure Search] Adding examples to latest data plane specs (#2472)
bitsforthought Feb 14, 2018
d821031
Revise Notice (#2492)
felixwa Feb 14, 2018
165ae3f
Fix BatchAI readme (#2493)
lmazuel Feb 14, 2018
b8c8d8b
Adding Examples and fixing the DSC related lint issues (#2415)
vrdmr Feb 14, 2018
1ce48fa
Redeclared consumed and produced MIME types supported in addition to …
VitaliyKurokhtin Feb 14, 2018
d08451b
[EventGrid/ACR] Add schema of ACR events published to Event Grid (#2487)
djyou Feb 14, 2018
d8866e7
Update service map swagger spec to latest and fix validation errors (…
JinFengMS Feb 14, 2018
58e3c91
Fixing the resource definitions (#2496)
vrdmr Feb 15, 2018
3faa859
Move automation py to 0.2.0 (#2498)
lmazuel Feb 15, 2018
ee9756f
Redeclared consumed and produced MIME types supported in addition to …
VitaliyKurokhtin Feb 15, 2018
64683a5
Corrected API versions (#2482)
mcardosos Feb 15, 2018
29c68f3
Fail Breaking Changes CI on exception (#2500)
Feb 15, 2018
4ed3e62
HDInsight Python conf (#2501)
lmazuel Feb 15, 2018
f5492b7
Remove duplicate operations (#2459)
solankisamir Feb 15, 2018
a33fcff
Update base-branch for Swagger -> SDK tooling. (#2507)
marstr Feb 16, 2018
485e8ca
Updating $filter parameter sample values in examples. Earlier version…
ms-premp Feb 16, 2018
6f5a425
[AZURE] Microsoft.AzureStack namespace specs (#2484)
Feb 16, 2018
ffa3d76
Fix Automation swagger spec errors in the AutomationAccount and Webho…
AnatoliB Feb 16, 2018
b81f70b
Modify availableStacks model (#2506)
Feb 16, 2018
646695c
Add disk details to storage profile (#2458)
jovillas Feb 16, 2018
cef9b24
Change statusMessage property to wildcard type. (#2486)
jhendrixMSFT Feb 16, 2018
b1bd518
appgw swagger examples (#2503)
akshaysngupta Feb 16, 2018
901a73d
Microsoft.Automation linkedWorkspace operations (#2490)
Feb 16, 2018
89c998c
Update monitor Py conf (#2512)
lmazuel Feb 16, 2018
30ede5e
Finally added missing policy mime types in all places (#2510)
VitaliyKurokhtin Feb 17, 2018
a98fa16
Adding new API version 2018-01-10 fixing swagger violations. (#2419)
avneeshraiusit Feb 20, 2018
dfc4727
[DataFactory] Add new features to Swagger (#2504)
haricr Feb 20, 2018
767c51a
Added custom key identifier (#2403)
mcardosos Feb 20, 2018
f0e1989
[Azure Search] Splitting data plane Swagger specs into separate direc…
bitsforthought Feb 20, 2018
d10a7a1
[DO NOT MERGE, until feb 20] Adding 2018-01-01 version for metrics AP…
LarryZhang19 Feb 20, 2018
76df6d1
Updated network watcher swagger and examples for 2018-01-01 version (…
irrogozh Feb 20, 2018
2ce6d93
adding purge protection vault property (#2478)
dragav Feb 21, 2018
afb3ee8
Add API Management Version Sets (#2483)
darrelmiller Feb 21, 2018
b6dfe98
fix the hardcoding of api version for classicadmin in powershell (#2502)
darshanhs90 Feb 21, 2018
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
92 changes: 67 additions & 25 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,34 +1,37 @@
language: node_js
node_js:
- "8"
- '8'
services:
- docker
env:
matrix:
- MODE=syntax
- MODE=python
# - MODE=node
- MODE=ruby
- MODE=semantic PR_ONLY=true
# - MODE=linter PR_ONLY=false Disabling to save travis-ci resource for now
- MODE=semantic PR_ONLY=false
- MODE=model PR_ONLY=false
- MODE=linter PR_ONLY=true
- MODE=model PR_ONLY=true
- MODE=BreakingChange PR_ONLY=true
- MODE=azurebot PR_ONLY=true
global:
secure: n7Ptb5x7Zdq/7na2L68JlrRPbl/xWtiFQncO7fsrSVuVGI4Mhjj1LD2k07qWAdFPM1PaZYvCRWc3YwbXr1NTOOn485r6qcLUjpN9TICP0ErGcEA9SzctipfbFP1IV4aCh23WSaopMueBki52KfskaGcZ2ox9pvI2LCysCp7q4WwF/0vArLYf48FeZuscWHVaLsU4z8ZMFPT9yHg+RQoqPeBnaR/ZGtG96NZolT+VAlP445geb0qn8wWAuSl4bR1JQV2eA3MwdWu/iVkepBeKTN7d81l3yjWzTvFtP/JRJClWBNQbOMjAed3/2Tr2lGgyRUM6Uwp4KvfRmbX3Xrlggen1AO/YAb2mJDs+HARPnhZXIOtDjgft/ethVeLTTBUsbNFGUN2lcrJMw9dkFi+ai3XefatENJbULqWx8Xb+wMD1b0TrI6sZZpdC8vYHnM/DoqiEh5+h3okkSmQcjPF4K9js294G790PKf4u2CQdur41qh4Ze4IzbvulVsGMON+O93vA6ZRK1sTHC5VUTs2iMhCnf6LtMN59kBq1T2MJ8ndXRpGlFEn2wDTjJSpSr0k0sjoG5i+bIFhbqVF8xegBb/PH4H9/i1ifIypNNp0FGdz4o2cFsYrcUKFsx1C/kFJ6rC809r0odDt32hGSOkOCziTwFHusbR5Nwf0RjOWSgvc=
- MODE=syntax
- MODE=python
- MODE=node
- MODE=ruby
- MODE=java
- MODE=go
- MODE=semantic PR_ONLY=true
- MODE=semantic PR_ONLY=false
- MODE=model PR_ONLY=false
- MODE=linter PR_ONLY=true
- MODE=model PR_ONLY=true
- MODE=BreakingChange PR_ONLY=true
- MODE=azurebot PR_ONLY=true
- MODE=liveValidation PR_ONLY=true
matrix:
fast_finish: true
allow_failures:
- env: MODE=linter PR_ONLY=false
- env: MODE=semantic PR_ONLY=false
- env: MODE=model PR_ONLY=false
- env: MODE=linter PR_ONLY=true
- env: MODE=model PR_ONLY=true
- env: MODE=BreakingChange PR_ONLY=true
- env: MODE=azurebot PR_ONLY=true
- env: MODE=liveValidation PR_ONLY=true
- env: MODE=java
- env: MODE=go
- env: MODE=node
before_install:
- docker pull lmazuel/swagger-to-sdk
- python -c "import os; print('\n'.join(v for v in os.environ.keys() if v.startswith('TRAVIS')))" > /tmp/env_file
Expand All @@ -43,12 +46,51 @@ install:
- npm install
script:
- DOCKER_CMD="docker run --rm --env-file /tmp/env_file -e GH_TOKEN -v $PWD:/git-restapi/ lmazuel/swagger-to-sdk"
- if [[ $MODE == 'python' ]]; then $DOCKER_CMD AutorestCI/azure-sdk-for-python --pr-repo-id Azure/azure-sdk-for-python -o master -v; fi
- if [[ $MODE == 'node' ]]; then $DOCKER_CMD AutorestCI/azure-sdk-for-node --pr-repo-id Azure/azure-sdk-for-node -o master -v; fi
- if [[ $MODE == 'ruby' ]]; then $DOCKER_CMD AutorestCI/azure-sdk-for-ruby --pr-repo-id Azure/azure-sdk-for-ruby -o master -v; fi
- if [[ $MODE == 'syntax' ]]; then npm test -- test/syntax.js; fi
- if [[ $MODE == 'linter' ]]; then npm test -- test/linter.js; fi
- if [[ $MODE == 'semantic' ]]; then npm test -- test/semantic.js; fi
- if [[ $MODE == 'model' ]]; then npm test -- test/model.js; fi
- if [[ $MODE == 'BreakingChange' ]]; then node -- scripts/breaking-change.js; fi
- if [[ $MODE == 'azurebot' ]]; then node scripts/momentOfTruth.js; fi
- >-
if [[ $MODE == 'python' ]]; then
$DOCKER_CMD Azure/azure-sdk-for-python -v
fi
- >-
if [[ $MODE == 'node' ]]; then
$DOCKER_CMD Azure/azure-sdk-for-node -v
fi
- >-
if [[ $MODE == 'ruby' ]]; then
$DOCKER_CMD Azure/azure-sdk-for-ruby -v
fi
- >-
if [[ $MODE == 'go' ]]; then
$DOCKER_CMD Azure/azure-sdk-for-go -o latest -v
fi
- >-
if [[ $MODE == 'java' ]]; then
$DOCKER_CMD Azure/azure-libraries-for-java -v
fi
- >-
if [[ $MODE == 'syntax' ]]; then
npm test -- test/syntax.js
fi
- >-
if [[ $MODE == 'linter' ]]; then
npm test -- test/linter.js
fi
- >-
if [[ $MODE == 'semantic' ]]; then
npm test -- test/semantic.js
fi
- >-
if [[ $MODE == 'model' ]]; then
npm test -- test/model.js
fi
- >-
if [[ $MODE == 'BreakingChange' ]]; then
node -- scripts/breaking-change.js
fi
- >-
if [[ $MODE == 'azurebot' ]]; then
node scripts/momentOfTruth.js
fi
- >-
if [[ $MODE == 'liveValidation' ]]; then
node -- scripts/liveValidation.js;
fi
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,18 +33,18 @@ The structure of the directory should strictly follow these rules:

1. **Profile**: The profile holder contains the profiles' definition MD files. these files will contain information and references to the snapshots of the RPs' Resource types or Dataplane API versions that represent a specific profile.

2. **Specification**: This folder the is root folder for all Specs (Management and Dataplane) related docs.
2. **Specification**: This folder the is root folder for all Specs (Management and Dataplane) related docs.

3. **<RP-Name>** Folders - each RP will have a seperate folder
3. **<RP-Name>** Folders - each RP will have a separate folder

4. **'resource-manager' and 'data-plane' Folders**: the RPs can put specs in one of two categories: `resource-manager` (for ARM resources) and `data-plane` (for everything else) . The autorest configuration file (`readme.md`) for the RP should be inside this folder
4. **'resource-manager' and 'data-plane' Folders**: the RPs can put specs in one of two categories: `resource-manager` (for ARM resources) and `data-plane` (for everything else) . The autorest configuration file (`readme.md`) for the RP should be inside this folder

4. **API versions**: this folder will be the direct child of the category folder. there will be one such folder per resource type or dataplane service version. This folder will contain the OpenAPI validation Specs (Swaggers previously) and the examples folder.
4. **API versions**: this folder will be the direct child of the category folder. there will be one such folder per resource type or dataplane service version. This folder will contain the OpenAPI validation Specs (Swaggers previously) and the examples folder.

6. **Examples**: the example folder will contain the x-ms-examples files. it will reside under the APIs or Resources' version folders as different APIs or Resource types version can have different examples.
6. **Examples**: the example folder will contain the x-ms-examples files. it will reside under the APIs or Resources' version folders as different APIs or Resource types version can have different examples.

7. **Notes**:
- folder names should be singular (ie, 'profile' not 'profiles' ) -- this removes ambiguity for some non-english speakers.
7. **Notes**:
- folder names should be singular (ie, 'profile' not 'profiles' ) -- this removes ambiguity for some non-english speakers.
- generic folder names should be lower-case
- proper-name/product name/namespace folders can be PascalCased (ie, "KeyVault")
- files are whatever case you think is good for your soul.
Expand Down
29 changes: 29 additions & 0 deletions documentation/creating-swagger.md
Original file line number Diff line number Diff line change
Expand Up @@ -414,6 +414,35 @@ Please note, that the use of "x-ms-paths" should be minimized to the above scena
The request body and response definitions become simple model types in the generated code. The models include
basic validation methods, but are generally stateless serialization definitions.

### Understanding the importance of "type" keyword while definining model types.
"Type-specific" keywords such as properties, items, minLength, etc. do not enforce a type on the schema. It works the other way around – when an instance is validated against a schema, these keywords only apply when the instance is of the corresponding type, otherwise they are ignored. Here's the relevant part of the [JSON Schema Validation](https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-4.1) spec:

> 4.1. Keywords and instance primitive types
Some validation keywords only apply to one or more primitive types. When the primitive type of the instance cannot be validated by a given keyword, validation for this keyword and instance SHOULD succeed.

For example, consider this schema:

```yaml
definitions:
Something:
properties:
id:
type: integer
required: [id]
minLength: 8
```
It's a valid schema, even though it combines object-specific keywords properties and required and string-specific keyword minLength. This schema means:
- If the instance is an object, it must have an integer property named id. For example, `{"id": 4}` and `{"id": -1, "foo": "bar"}` are valid, but `{}` and `{"id": "ACB123"}` are not.
- If the instance is a string, it must contain at least 8 characters. `"Hello, world!"` is valid, but `""` and `abc` are not.
- Any instances of other types are valid - `true`, `false`, `-1.234`, `[]`, `[1, 2, 3]`, `[1, "foo", true]`, etc.
(Except `null` - OpenAPI 2.0 does not have the `null` type and does not support `null` except in extension properties. OpenAPI 3.0 supports the `null` value for schemas with nullable: true.)

If there are tools that infer the `type` from other keywords (for example, handle schemas with no `type` but with `properties` as always objects), then these tools are not exactly following the OpenAPI Specification and JSON Schema.

> Bottom line: If a schema must always be an object, add `"type": "object"` explicitly. Otherwise you might get unexpected results.

**Credits** - Stack Overflow [link](https://stackoverflow.com/questions/47374980/schema-object-without-a-type-attribute-in-swagger-2-0).

### Model Inheritance<a name="ModelInheritance"></a>
Swagger schema allows for specifying that one type is `allOf` other types, meaning that the entire specification of
the referenced schema applies is included in the new schema. By convention, if a schema has an 'allOf' that references
Expand Down
18 changes: 9 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,19 @@
"description": "Tests for Azure REST API Specifications",
"license": "MIT",
"devDependencies": {
"@microsoft.azure/async-io": "^1.0.21",
"@microsoft.azure/literate": "^1.0.21",
"@microsoft.azure/polyfill": "^1.0.17",
"fs-extra": "^3.0.1",
"mocha": "*",
"glob": "^5.0.14",
"js-yaml": "^3.8.2",
"json-schema-ref-parser": "^3.1.2",
"request": "^2.61.0",
"z-schema": "^3.16.1",
"mocha": "*",
"oad": "^0.1.9",
"oav": "^0.4.1",
"js-yaml": "^3.8.2",
"azure-storage": "^2.1.0",
"@microsoft.azure/literate": "^1.0.21",
"@microsoft.azure/async-io": "^1.0.21",
"@microsoft.azure/polyfill": "^1.0.17",
"oad": "^0.1.9"
"request": "^2.61.0",
"request-promise-native": "^1.0.5",
"z-schema": "^3.16.1"
},
"homepage": "https://github.com/azure/azure-rest-api-specs",
"repository": {
Expand Down
5 changes: 3 additions & 2 deletions scripts/breaking-change.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ var utils = require('../test/util/utils'),
execSync = require('child_process').execSync,
oad = require('oad');

// This map is used to store the mapping between files resolved and stored location
// This map is used to store the mapping between files resolved and stored location
var resolvedMapForNewSpecs = {};
let outputFolder = path.join(os.tmpdir(), "resolved");
// Used to enable running script outside TravisCI for debugging
Expand Down Expand Up @@ -46,6 +46,7 @@ function runOad(oldSpec, newSpec) {
return Promise.resolve();
}).catch(err => {
console.log(err);
process.exitCode = 1;
});
}

Expand All @@ -71,7 +72,7 @@ function processViaAutoRest(swaggerPath) {
let result = execSync(`${autoRestCmd}`, { encoding: 'utf8', maxBuffer: 1024 * 1024 * 64 });
resolvedMapForNewSpecs[outputFileNameWithExt] = path.join(outputFolder, outputFileNameWithExt);
} catch (err) {
// Do not update map in case of errors
// Do not update map in case of errors.
}

return Promise.resolve();
Expand Down
157 changes: 157 additions & 0 deletions scripts/liveValidation.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License in the project root for license information.

'use strict';

const utils = require('../test/util/utils'),
request = require('request-promise-native'),
zlib = require('zlib');

const repoUrl = utils.getSourceRepoUrl(),
validationService = "https://app.azure-devex-tools.com/api/validations",
branch = utils.getSourceBranch(),
processingDelay = 20,
isRunningInTravisCI = process.env.MODE === 'liveValidation' && process.env.PR_ONLY === 'true',
specsPaths = utils.getFilesChangedInPR(),
regex = /resource-manager[\\|\/](.*?)[\\|\/].*?[\\|\/](.*?)[\\|\/]/,
successThreshold = 90,
validationModels = new Map();

let durationInSeconds = parseInt(process.env.LIVE_VALIDATION_DURATION_IN_MINUTES) * 60;
if (isNaN(durationInSeconds)) {
durationInSeconds = 180;
}

async function runScript() {
// See whether script is in Travis CI context
console.log(`isRunningInTraviSCI: ${isRunningInTravisCI}`);
for (const specPath of specsPaths) {
let matchResult = specPath.match(regex);

if (matchResult === null) {
continue;
}

let resourceProvider = matchResult[1];
let apiVersion = matchResult[2];

if (!validationModels.has(resourceProvider)) {
validationModels.set(resourceProvider, new Set());
}

validationModels.get(resourceProvider).add(apiVersion);
}

if (validationModels.size === 0) {
console.log("Change didn't affect any swagger specs. No validation to be done.");
return;
} else if (validationModels.size > 1) {
console.log("WARNING: Multiple resource provider have changes, only the first one will be validated.");
}

let resourceProvider = validationModels.keys().next().value;

if (validationModels.get(resourceProvider).size > 1) {
console.log("WARNING: Multiple api versions have changes, only the first one will be validated.");
}

let apiVersion = validationModels.get(resourceProvider).values().next().value;

console.log(`Changes detected in a swagger spec.`);
console.log(`RP is: ${resourceProvider}`);
console.log(`ApiVersion is: ${apiVersion}`);
console.log(`Source repo is: ${repoUrl}`);
console.log(`Branch is: ${branch}`);

console.log(`Making the request to the validation service...`);

let response = await request.post(validationService).form({
repoUrl: repoUrl,
branch: branch,
resourceProvider: resourceProvider,
apiVersion: apiVersion,
duration: durationInSeconds
});
let validationId = JSON.parse(response).validationId;

let validationResultUrl = `${validationService}/${validationId}`;
console.log(`Request done, results will be available in ${durationInSeconds} seconds...`);

await timeout((durationInSeconds + processingDelay) * 1000);
let validationResult = JSON.parse(await request(validationResultUrl));

console.log(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
console.log(`Results of validation ${validationId}:`);

let analyticsUrl = await createAnalyticsLink(validationId);

let failingOperations = [];
let noTrafficOperations = [];
for (const [operationId, operationResult] of Object.entries(validationResult.operationResults)) {

if (operationResult.operationCount === 0) {
noTrafficOperations.push(operationResult.operationId)
} else if (operationResult.successRate < successThreshold) {
failingOperations.push(operationResult.operationId);
}

console.log(JSON.stringify(operationResult));
}

console.log(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
if (validationResult.totalOperationCount === 0) {
console.log(`There was no traffic detected for the provided RP and API version:${resourceProvider}-${apiVersion}. Please make sure there is traffic so the changes can be validated.`);
process.exitCode = 1;
} else if (failingOperations.length > 0 || noTrafficOperations.length > 0) {
console.log(`The changes in the specs introduced by this PR potentially do not reflect the Service API.`);

console.log(`Active traffic and success rate > ${successThreshold}% FOR EACH OPERATION is required. Please review the following operations before moving forward.`);
console.log(`SUCCESS RATE < ${successThreshold}%:
${JSON.stringify(failingOperations)}`);

if (noTrafficOperations.length > 0) {
console.log(`NO TRAFFIC:
${JSON.stringify(noTrafficOperations)}
`);
}
console.log(`To inspect the individual failures go to the url (add '| where customDimensions.operationId == "<OPERATION_ID>"' to filter for individual operations.):
${analyticsUrl}
`);
process.exitCode = 1;
} else {
console.log(`SUCCESS RATE: ${validationResult.successRate} > ${successThreshold}. You can move forward.`);
}
}

function timeout(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}

function createAnalyticsLink(validationId) {
return new Promise(resolve => {
const query = `
traces
| where customDimensions.validationId == "${validationId}"
| where customDimensions.logType == "data"
| where customDimensions.isSuccess == "false"
| project timestamp, message, customDimensions
`;

zlib.deflate(query, (err, buffer) => {
if (!err) {
let queryParams = buffer.toString('base64');
let analyticsLink = `https://analytics.applicationinsights.io/subscriptions/6b085460-5f21-477e-ba44-1035046e9101/resourcegroups/openapi-platform-logs/components/openapiAI?q=${queryParams}&apptype=Node.JS&timespan=P1D`;
resolve(analyticsLink);
}
});
});
}

runScript().then(success => {
console.log(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
console.log(`Thanks for using live validation.`);
console.log(`If you encounter any issue(s), please open issue(s) at https://github.com/Azure/openapi-platform/issues .`);
}).catch(err => {
console.log(err);
process.exitCode = 1;
});
Loading