Skip to content
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

keyvault: fixing the duplicate constant types #21137

Closed

Conversation

tombuildsstuff
Copy link
Contributor

@tombuildsstuff tombuildsstuff commented Oct 14, 2022

Fixes this:

$ autorest --tag=package-7.3 --go --verbose --use-onever --version=2.0.4421 --go.license-header=MICROSOFT_MIT_NO_VERSION --enum-prefix --openapi-type=data-plane --output-folder=../../sdk/keyvault/7.3/keyvault ../../config/key-vault/readme.md

FATAL: System.InvalidOperationException: Swagger document contains two or more x-ms-enum extensions with the same name 'ActionType' and different values: EmailContacts,AutoRenew vs. rotate,notify

@openapi-workflow-bot
Copy link

Hi, @tombuildsstuff Thanks for your PR. I am workflow bot for review process. Here are some small tips.

  • Please ensure to do self-check against checklists in first PR comment.
  • PR assignee is the person auto-assigned and responsible for your current PR reviewing and merging.
  • For specs comparison cross API versions, Use API Specs Comparison Report Generator
  • If there is CI failure(s), to fix CI error(s) is mandatory for PR merging; or you need to provide justification in PR comment for explanation. How to fix?

  • Any feedback about review process or workflow bot, pls contact swagger and tools team. vscswagger@microsoft.com

    @openapi-pipeline-app
    Copy link

    openapi-pipeline-app bot commented Oct 14, 2022

    Swagger Validation Report

    ️❌BreakingChange: 2 Errors, 0 Warnings failed [Detail]
    compared swaggers (via Oad v0.10.2)] new version base version
    certificates.json 7.3(b0d0b0e) 7.3(main)
    keys.json 7.3(b0d0b0e) 7.3(main)
    Rule Message
    1047 - XmsEnumChanged The new version has a different x-ms-enum 'name' than the previous one.
    New: Microsoft.KeyVault/stable/7.3/certificates.json#L1625:9
    Old: Microsoft.KeyVault/stable/7.3/certificates.json#L1625:9
    1047 - XmsEnumChanged The new version has a different x-ms-enum 'name' than the previous one.
    New: Microsoft.KeyVault/stable/7.3/keys.json#L2195:9
    Old: Microsoft.KeyVault/stable/7.3/keys.json#L2195:9
    ️️✔️Breaking Change(Cross-Version) succeeded [Detail] [Expand]
    There are no breaking changes.
    ️️✔️CredScan succeeded [Detail] [Expand]
    There is no credential detected.
    ️⚠️LintDiff: 0 Warnings warning [Detail]
    compared tags (via openapi-validator v2.0.0) new version base version
    package-7.3 package-7.3(b0d0b0e) package-7.3(main)

    The following errors/warnings exist before current PR submission:

    Only 30 items are listed, please refer to log for more details.

    Rule Message
    MissingTypeObject The schema 'CertificateAttributes' is considered an object but without a 'type:object', please add the missing 'type:object'.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1247
    MissingTypeObject The schema 'CertificateItem' is considered an object but without a 'type:object', please add the missing 'type:object'.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1312
    MissingTypeObject The schema 'CertificateIssuerItem' is considered an object but without a 'type:object', please add the missing 'type:object'.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1338
    MissingTypeObject The schema 'CertificateBundle' is considered an object but without a 'type:object', please add the missing 'type:object'.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1351
    MissingTypeObject The schema 'DeletedCertificateBundle' is considered an object but without a 'type:object', please add the missing 'type:object'.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1403
    IntegerTypeMustHaveFormat The integer type does not have a format, please add it.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1414
    ValidFormats 'unixtime' is not a known format.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1416
    IntegerTypeMustHaveFormat The integer type does not have a format, please add it.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1420
    ValidFormats 'unixtime' is not a known format.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1422
    MissingTypeObject The schema 'DeletedCertificateItem' is considered an object but without a 'type:object', please add the missing 'type:object'.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1429
    IntegerTypeMustHaveFormat The integer type does not have a format, please add it.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1440
    ValidFormats 'unixtime' is not a known format.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1442
    IntegerTypeMustHaveFormat The integer type does not have a format, please add it.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1446
    ValidFormats 'unixtime' is not a known format.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1448
    MissingTypeObject The schema 'CertificateOperation' is considered an object but without a 'type:object', please add the missing 'type:object'.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1455
    MissingTypeObject The schema 'CertificatePolicy' is considered an object but without a 'type:object', please add the missing 'type:object'.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1499
    MissingTypeObject The schema 'X509CertificateProperties' is considered an object but without a 'type:object', please add the missing 'type:object'.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1540
    MissingTypeObject The schema 'IssuerParameters' is considered an object but without a 'type:object', please add the missing 'type:object'.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1591
    MissingTypeObject The schema 'LifetimeAction' is considered an object but without a 'type:object', please add the missing 'type:object'.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1610
    MissingTypeObject The schema 'Action' is considered an object but without a 'type:object', please add the missing 'type:object'.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1623
    MissingTypeObject The schema 'Trigger' is considered an object but without a 'type:object', please add the missing 'type:object'.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1640
    MissingTypeObject The schema 'SubjectAlternativeNames' is considered an object but without a 'type:object', please add the missing 'type:object'.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1657
    MissingTypeObject The schema 'IssuerBundle' is considered an object but without a 'type:object', please add the missing 'type:object'.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1683
    MissingTypeObject The schema 'IssuerAttributes' is considered an object but without a 'type:object', please add the missing 'type:object'.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1710
    IntegerTypeMustHaveFormat The integer type does not have a format, please add it.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1716
    ValidFormats 'unixtime' is not a known format.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1718
    IntegerTypeMustHaveFormat The integer type does not have a format, please add it.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1722
    ValidFormats 'unixtime' is not a known format.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1724
    MissingTypeObject The schema 'IssuerCredentials' is considered an object but without a 'type:object', please add the missing 'type:object'.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1731
    MissingTypeObject The schema 'OrganizationDetails' is considered an object but without a 'type:object', please add the missing 'type:object'.
    Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1745
    ️️✔️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: 13 Errors, 0 Warnings failed [Detail]
    Rule Message
    INVALID_FORMAT Object didn't pass validation for format byte: MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=
    Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1380:16
    ExampleUrl: stable/7.3/examples/DeleteCertificate-example.json#L17:16
    INVALID_FORMAT Object didn't pass validation for format byte: MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqe8aINnShK+wQC8QU7fwsviQc9+yiOnqU3adXA6qNjn21HTdRBa7cyQIk1STxHIBLTT/GaEJwqsUi6UvZaPEHokOWsr1bP9M7xOPTicBcRyMrr6bOxsmGczYtu1z2TzzXDD7q7IEignE7/LowGEaIADCIU9iuWk7TiJ+1Q/VLh/B3xPsgVjY+n7zEQ53gBiDHSl7XfELfwmslOQ28TVNogUyXsxHcVxQQYJeI7HqqY448LeleK69Ld86lkBixLEm1pD7HSbEx3WI2lyUQAGR6hD3YFaiIWVpQeEyI7p1jmtQlnfZdEL4q9wdlEEcwd3h3PAZpEBhCixahF54fci3pwIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBACiLeghirF+yCuYGVUPDB3wKQJn2iLY1za9ncxCehIVqOkFK09AphzoxF6Yid90AKCaa/dT/Ohm7oTyVQ+YcZnT00LUNFVG48AOE8YDiw9tjAG9OORsAz80xnv2qaLw2TCVIQ6NjrI83LqAm1GJ8rAnpdD/ZTuWM7TvSO5g/jm/Q0oSuKpMgj3YxpwgB9Ac6YEfVzOnm76OkUcpvR5MS4BoTfRv4thdSnU+uwqxM+HtdSVTbHQeC2U/hM1cyzDMpl1rZRklmiEOoPUeDasEIBVTJhAxR8xAeKJJD7Wzj4mJPw4UMvF8zQZzW8EKYvB1hkVYY+HQ85L+XcXd8lco7hU4=
    Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1467:16
    ExampleUrl: stable/7.3/examples/CreateCertificate-example.json#L39:16
    INVALID_FORMAT Object didn't pass validation for format byte: MIIC...
    Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1380:16
    ExampleUrl: stable/7.3/examples/ImportCertificate-example.json#L29:16
    INVALID_FORMAT Object didn't pass validation for format byte: MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=
    Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1380:16
    ExampleUrl: stable/7.3/examples/UpdateCertificate-example.json#L25:16
    INVALID_FORMAT Object didn't pass validation for format byte: MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=
    Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1380:16
    ExampleUrl: stable/7.3/examples/GetCertificate-example.json#L15:16
    INVALID_FORMAT Object didn't pass validation for format byte: MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxxM2zqnPtpH8aiHX5TdEoZLO0Y6fsjk9QcjKgnHomrwUc9vK20UYYEPKt9aGOT7HNx0do8OulPCnLPrKowci8UHu1qRW/qHvsOJQ/UrQoMCHxtXptVc7Avx8WQb045sCdgp/Cl4xO8LMZa70kE4dghZU9zmNZk8wqDIxyYdh1lqqfGe49EWOxcfszTeeKs8KCsQznjExbsudBHLLWoX4VFTGMe3VcIPcV6iFf70buHKznDMXFiRC0IYwkc/GyWIadB1CSEae8k/0evsPI5lYYZLaO/kLffEUtzysqxZNCQR+S0eVPTGTLHa+fndnPPs65XZDzSZi2fZL01oXUfCAQQIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAKto/ZF9+02fQ3sLuIsRuap/O/AZz3IhAubNfyCaWvVGVAQz/Aqpf5c/liyKhxqRG6LR9Zu50oxRK5222ezR+56vJikjdXRVShf2xYsMm1CbCM1JuzsnkTeoUHHE12xx1srH/9TH+DVZIk6NXxc4wVIagbpwxiS5gR3Nly5k0ZVv7R1B79J0GUqSwK6qjuooWrBsYMEx319hz8fB/Y4jnPE8p+Cnn3AGEqnebVngXncq/QnHxnrRVfvKFVySqRvlsvM8buILmBbIaywEUqwhNtZX2i9E7reEJ8aeZcf+lAeKF3YDvffaXGTc75aiZlBk30Lv/hn0vs9T0/FedUnIae4=
    Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1467:16
    ExampleUrl: stable/7.3/examples/UpdateCertificateOperation-example.json#L17:16
    INVALID_FORMAT Object didn't pass validation for format byte: MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqe8aINnShK+wQC8QU7fwsviQc9+yiOnqU3adXA6qNjn21HTdRBa7cyQIk1STxHIBLTT/GaEJwqsUi6UvZaPEHokOWsr1bP9M7xOPTicBcRyMrr6bOxsmGczYtu1z2TzzXDD7q7IEignE7/LowGEaIADCIU9iuWk7TiJ+1Q/VLh/B3xPsgVjY+n7zEQ53gBiDHSl7XfELfwmslOQ28TVNogUyXsxHcVxQQYJeI7HqqY448LeleK69Ld86lkBixLEm1pD7HSbEx3WI2lyUQAGR6hD3YFaiIWVpQeEyI7p1jmtQlnfZdEL4q9wdlEEcwd3h3PAZpEBhCixahF54fci3pwIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBACiLeghirF+yCuYGVUPDB3wKQJn2iLY1za9ncxCehIVqOkFK09AphzoxF6Yid90AKCaa/dT/Ohm7oTyVQ+YcZnT00LUNFVG48AOE8YDiw9tjAG9OORsAz80xnv2qaLw2TCVIQ6NjrI83LqAm1GJ8rAnpdD/ZTuWM7TvSO5g/jm/Q0oSuKpMgj3YxpwgB9Ac6YEfVzOnm76OkUcpvR5MS4BoTfRv4thdSnU+uwqxM+HtdSVTbHQeC2U/hM1cyzDMpl1rZRklmiEOoPUeDasEIBVTJhAxR8xAeKJJD7Wzj4mJPw4UMvF8zQZzW8EKYvB1hkVYY+HQ85L+XcXd8lco7hU4=
    Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1467:16
    ExampleUrl: stable/7.3/examples/GetCertificateOperation-example.json#L14:16
    INVALID_FORMAT Object didn't pass validation for format byte: MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApf+kGcL+5uivj/ToYbQ15zcx3caEnpzXaX2eJgL0/Kwaz4u2/bNJ9+hoXnlOFFbCp4canVoNvgu8fw5NOu9U3gJNFQwjHeAqfsg8okZGkIk0riIpp4MMb/4GQb2y3B28AcTu2FANdzLoZzBqmQs51KBe1RONkdtqDYXIvnb5G+9+P7PCy5G//Ga0JAP6Y6P8+TrE9JLEj6Sny0ljLMpMyt4rIRAtNfKYSeiWVQmYX4jZfImIW3iq91zwMsRlrzTm80mNfHPCv7V/8NmYuh0MQgCr49lLbbKCgzDyo9h8sblVQvR5TAylpIk7bSQNf4tSdVNHnsF6CJWu6Pg31hyMpQIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAHVjmYFs3FmecaJ1ExhK1WCFJaQJUTVbPJ1xJ93UJlLivhzI1yhQO9nMC2DKV+E+UCxceqjae6OG5LUhXfYAziS0HTc80+ZcUqrZRb5ZRt+8HU0TPbTDDqjj8wMZ4VlgQ3eXGAGesMfZV3AqWwa5itofvqm8KAmL4Yn/XMSHcKfRx3h9WnC6RXgZ8WNYK+r5o+gHlmuF7/AaNFh8UjIsjjOZQ0Yin/vA4yBEYTt1/OC7pScs3bdL9CIf4rC98qaMSf4B2W/vfrXUo0gGPYcep25jy7xnIltSY80Trn3Mty5YQ0IT+KPQcJKhbryGg6bIy4jJDwS7zkn51MR1q3kNoOA=
    Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1467:16
    ExampleUrl: stable/7.3/examples/DeleteCertificateOperation-example.json#L14:16
    INVALID_FORMAT Object didn't pass validation for format byte: MIICxTCCAb....trimmed for brevitiy...EPAQj8=
    Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1903:20
    ExampleUrl: stable/7.3/examples/MergeCertificate-example.json#L6:19
    INVALID_FORMAT Object didn't pass validation for format byte: ……de34534……
    Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1380:16
    ExampleUrl: stable/7.3/examples/MergeCertificate-example.json#L18:16
    INVALID_FORMAT Object didn't pass validation for format byte: MIIDMjCCAhqgAwIBAgIQGn/FrGQZT/Cd9kgXIsytEjANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtleGFtcGxlLmNvbTAeFw0xODA0MTcxODI2MjZaFw0xOTA0MTcxODM2MjZaMBYxFDASBgNVBAMTC2V4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsODIu9EJhfnn57k4++j6dC1M6Egi9aZucFQ9Jc29vFG9L9BkzllPGluKKdH1ypsrAUif7yGaq5d1nDyLhZUncU8dV/YIA7oll/fC+d0H4A37kVbM/60zXhXnKRx+DRZ2hJQzNBOodCaZpyZZEuYvtWdSCSILpa0R7yXYevjLaG5LfckOzuurXqeos7WB+l2q1c+6zx1KbNXbBl7QOz2nzk9oJU7CdhPOc+LOLppmsXRwwluKtmCDyKdrKAF/dANp5zGXFsognQcRctLSGQp8FbgBVQyZ+v81n9bPpSaBoUQMcH4uG9jPO6CWwbDSWE+FVYAm5kgjuW/1hqRSnOEV8QIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUaYJoBFokrORdsxOTA8sgrosMOmgwHQYDVR0OBBYEFGmCaARaJKzkXbMTkwPLIK6LDDpoMA0GCSqGSIb3DQEBCwUAA4IBAQAxL3t0kV1dq/PGUztjW+qK6Nh4sx7jsU59JtjON6zcibJ4hM+Q3Z+cEvW9zuGkuTbLz6fKNL9VnkF1LnlWTsyRmS7bF15/7iOgfdrr0vkJKVM1Zv/tqKEpBJ7Cbc0vW/VJQxZN+OlqGNc9bcx3cnqkRwpkgM25T0dVpoWtCgMwayUtbPFbTZWHHbpzHLF2BzYf5HyW1BoKXcVPM3r/rS7RETasRRsz2GqXXdfhjCd+HKVyv5kD9N3WcFNUsaq3TqAUZyOx9bO0Cn3gkmgz05JpfhPEylXwVpVAccOoXsNoFdxEKGO0w7pk7PwOhsW8sFprdXWp6OxtL0rrCNFF/llT
    Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1380:16
    ExampleUrl: stable/7.3/examples/RestoreCertificate-example.json#L16:16
    INVALID_FORMAT Object didn't pass validation for format byte: MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=
    Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1380:16
    ExampleUrl: stable/7.3/examples/GetDeletedCertificate-example.json#L18:16
    INVALID_FORMAT Object didn't pass validation for format byte: MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=
    Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1380:16
    ExampleUrl: stable/7.3/examples/RecoverDeletedCertificate-example.json#L14:16
    ️️✔️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 pending [Detail]
    Posted by Swagger Pipeline | How to fix these errors?

    @openapi-pipeline-app
    Copy link

    openapi-pipeline-app bot commented Oct 14, 2022

    Swagger Generation Artifacts

    ️❌ApiDocPreview: 1 Errors, 0 Warnings failed [Detail]
    Rule Message
    RestBuild error "logUrl":"https://apidrop.visualstudio.com/Content%20CI/_build/results?buildId=337374&view=logs&j=fd490c07-0b22-5182-fac9-6d67fe1e939b",
    "detail":"Run.ps1 failed with exit code 128 "
    ️️✔️SDK Breaking Change Tracking succeeded [Detail] [Expand]

    Breaking Changes Tracking

    Posted by Swagger Pipeline | How to fix these errors?

    @openapi-pipeline-app
    Copy link

    openapi-pipeline-app bot commented Oct 14, 2022

    Generated ApiView

    Language Package Name ApiView Link
    swagger Microsoft.KeyVault Create ApiView failed. Please ensure your github account in Azure/Microsoft is public and add a comment "/azp run" to re-trigger the CI.

    @ghost ghost added the customer-reported Issues that are reported by GitHub users external to the Azure organization. label Oct 14, 2022
    @ghost
    Copy link

    ghost commented Oct 14, 2022

    Thank you for your contribution tombuildsstuff! We will review the pull request and get back to you soon.

    @@ -1630,7 +1630,7 @@
    "AutoRenew"
    ],
    "x-ms-enum": {
    "name": "ActionType",
    "name": "CertificateActionType",
    Copy link
    Member

    @heaths heaths Oct 14, 2022

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    This is a breaking change for SDKs but shouldn't be necessary. This name only affects SDKs, which should be referencing individual swaggers to generate separate SDKs for keys, secrets, certificates, and administration (basically, everything else). So conflicts between the two are irrelevant unless you're generating a single SDK targeting all swaggers, though.

    That begs the question, though: have you considered using our Go SDKs? https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/keyvault

    Alternatively, you could use an autorest transform you can pass to autorest to rename these e.g.:

    directive:
    - from: certificates.json
      where: $.definitions.Actions
      transform: $.properties.action_type["x-ms-enum"].name = "CertificateActionType";
    - from: keys.json
      where: $.definitions.LifetimeActionsType
      transform: $.properties.type["x-ms-enum"].name = "LifetimeActionType";

    Copy link

    @aristosvo aristosvo Oct 16, 2022

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    $.definitions.Actions should be $.definitions.Action

      - from: certificates.json
        where: $.definitions.Action
        transform: $.properties.action_type["x-ms-enum"].name = "CertificateActionType";
      - from: keys.json
        where: $.definitions.LifetimeActionsType
        transform: $.properties.type["x-ms-enum"].name = "LifetimeActionType";

    Copy link
    Contributor Author

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    @heaths thanks for the suggestion.

    This is a breaking change for SDKs but shouldn't be necessary. This name only affects SDKs, which should be referencing individual swaggers to generate separate SDKs for keys, secrets, certificates, and administration (basically, everything else). So conflicts between the two are irrelevant unless you're generating a single SDK targeting all swaggers, though.

    From our side we're trying to generate the SDK using the same approach that Track1 is using today, namely keeping this in a single package - so I think the autorest transform is probably fine as a workaround here, but it begs the question of why not fix the data rather than applying a workaround?

    From a logical deployment perspective, since these operations are exposed in the same Swagger directory, I'd expect them to be deployed together - so I'd argue that if these are intended to be separate SDKs then these should be split out (which would also remove the need for this workaround). Whilst this may seem like a pedantic point, fixing the data (either by merging this PR as-is, or by splitting these files into different directories) seems preferable to applying autorest workarounds, which should presumably only be a short-term solution and not widely used, else the source data isn't accurate?

    That begs the question, though: have you considered using our Go SDKs? https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/keyvault

    Unfortunately we're unable to use the Track2 SDK's for reasons we've raised with the Azure SDK team previously - instead we're using hashicorp/go-azure-sdk which is generated from hashicorp/pandora (for Resource Manager) - and we'll be generating some Data Plane packages into another repository until we look into importing/generating those.

    Copy link
    Member

    @heaths heaths Oct 24, 2022

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    There are a lot of services that don't use swagger in non-standard ways and we've been generating our SDKs with these definitions for several years. It was a lot of extra work for almost every SDK language to trim support for endpoints that weren't supposed to be in an SDK, like keys and certs endpoints in the secrets SDK.

    Going forward with Cadl - a new description language that can generate both server- and client-side code (and swaggers, for legacy support) we'll create subdirectories per SDK, so these files won't be in the same directory. Ever since we refactored them, they were never meant to represent a single service.

    Why can't you use the track 2? I've talked with several teams in the past and showed them our migration guides e.g., https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/keyvault/Azure.Security.KeyVault.Secrets/MigrationGuide.md. Everything should be supported 1:1 between track 1 and track 2 SDKs already except for SAS (not recommended anyway, which is why we didn't generate an SDK).

    Copy link
    Contributor Author

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    @heaths

    It was a lot of extra work for almost every SDK language to trim support for endpoints that weren't supposed to be in an SDK, like keys and certs endpoints in the secrets SDK.

    Potentially an odd take, but why would these be stripped out? If the Swagger documents them the SDK's should be generating them.

    Going forward with Cadl - a new description language that can generate both server- and client-side code (and swaggers, for legacy support) we'll create subdirectories per SDK, so these files won't be in the same directory. Ever since we refactored them, they were never meant to represent a single service.

    Do you have any more context on Cadl / the timeframe there?

    Why can't you use the track 2?

    We've previously given copious amounts of feedback to the Azure SDK Team as to why we're unable to use the Track2 Go SDK - and since we didn't hear back from the Azure SDK Team about our concerns - ultimately ended up having to build hashicorp/go-azure-sdk.

    The hashicorp/go-azure-sdk repository both fixes the concerns we had (albeit using the Track1 base layer as a temporary stop-gap, until we're fully off the Azure SDK for Go) and enables us to embed logic within the Go SDK to both make it more consistent (for example, all operations take a Resource ID object where a Resource is being mutated) - which ultimately reduces the amount of code needed to interact with the SDK.

    By comparison, adopting Track2 would mean:

    • increasing the amount of code needed (both per-operation and in general)
    • more admin overhead with nested Go modules (e.g. which semver relates to which API version? a large number of breaking changes every time we update a module)
    • re-introducing the pain of composite Swaggers (which comes back to more admin overhead/which API version is actually being used)
    • hitting up against more Swagger inconsistencies (since hashicorp/go-azure-sdk corrects a bunch of these)

    As such whilst Track2 may work great for folks using a small number of packages, unfortunately the design/architectural decisions mean it doesn't work for us since we're vendoring large amounts of the SDK (and are concerned about which API versions we're using) - as such this isn't something we're planning to adopt (even if the amount of code required to use Track2 was reduced in the same manner as hashicorp/go-azure-sdk).

    Whilst that's unfortunate, in practice not using the Track2 SDK has enabled us to look into additional functionality (for example, Terraform Resource Generation) that wouldn't have been possible if we used the Track1 or Track2 SDKs (since we're normalizing the Swaggers, for example duck-typing into common types) - so whilst there is an overhead to generating this SDK ourselves, I'd argue it's working out really well for us - and as such unfortunately we have no plans to adopt Track2.

    Copy link
    Contributor Author

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    @heaths I get that you'd like us to use Track2, but I still think you've closed this for the wrong reasons here - @JeffreyRichter any chance you'd be able to take a look here? I think @heaths and I are at an impasse here?

    Copy link
    Member

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    I'll meet with Heath and discuss so I understand the issue and report back here (hopefully next week but it is Thanksgiving).

    Copy link
    Contributor Author

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    @JeffreyRichter did you have a chance to chat with Heath about this yet?

    Copy link
    Member

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    Yes, Heath & I spoke and as it is SDK breaking, we cannot accept this PR.

    Copy link
    Contributor Author

    @tombuildsstuff tombuildsstuff Dec 12, 2022

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    Any chance you could explain how this is SDK breaking? The Breaking Change Action above says this isn't a breaking change:

    Screenshot 2022-12-12 at 10 01 44

    Screenshot 2022-12-12 at 10 02 30

    @heaths heaths added potential-sdk-breaking-change needs-author-feedback Workflow: More information is needed from author to address the issue. labels Oct 14, 2022
    @heaths
    Copy link
    Member

    heaths commented Oct 26, 2022

    We appreciate contributions to the Azure SDKs, but since this is an SDK-breaking change as noted above, we cannot accept this. If you're using autorest to generate your own SDK from all swaggers - which we split to better support the service and SDK feature teams with separate definitions - please use the amended transforms above.

    @aristosvo
    Copy link

    @heaths @JeffreyRichter As both an Azure enthousiast and Terraform Provider contributor this annoys me a lot. Can we please find a way to work together in a constructive way and move this forward and out of the way?

    Could one at least make sure that https://github.com/Azure/azure-rest-api-specs/tree/main/specification/keyvault/data-plane/Microsoft.KeyVault/preview/7.4-preview.1 contains the proposed fix before someone freezes it?

    @JeffreyRichter
    Copy link
    Member

    OK. Heath and I will discuss this again and see what we can do. Unfortunately, he is now out until after New Year's, so this will have to sit until we can connect. Sorry for the delay.

    @jlichwa
    Copy link
    Contributor

    jlichwa commented Dec 13, 2022

    @aristosvo above is changing property name, which will not match the service implementation. This field is there since the beginning and change will break all customers. Proposed change is impossible. You can schedule a meeting with team to figure out other options (possibly fix track 2 to work as our recommended option).

    Key Vault PG team

    @JeffreyRichter
    Copy link
    Member

    I found someone else to speak to about this and here's the deal...
    For our Track 2 SDKs, we generate 1 package for certificates and a separate package for keys. This means that calling these 2 enums "ActionType" is not a problem because they are scoped to their respective packages.

    We have already shipped these packages and the packages name the enum type from the swagger name.
    Changing the enum name is breaking to us. The tooling is not catching this for some reason - I will contact the tooling team and get them to fix this bug.

    If you are using our autorest tool to produce code from the swagger, you can use a swagger directive to rename the enum types for your code-gen. See https://github.com/Azure/autorest/blob/main/docs/generate/built-in-directives.md

    @aristosvo
    Copy link

    @JeffreyRichter Thanks, but that leaves the terraform users now in the dark. The question is what we can do then to support probably the largest external user base of the Azure REST API in a proper way.

    I opened up #21877 as that API version is still in preview, would that work?

    @aristosvo
    Copy link

    aristosvo commented Dec 13, 2022

    @aristosvo above is changing property name, which will not match the service implementation. This field is there since the beginning and change will break all customers. Proposed change is impossible. You can schedule a meeting with team to figure out other options (possibly fix track 2 to work as our recommended option).

    Key Vault PG team

    @jlichwa I don't think that is the case. This are some annotations which influence the output of the SDK generation process, not the calls towards the API implementation AFAIK.

    I understand that an breaking change in an SDK is annoying as well, from a Terraform Provider perspective we've dealt with these for years in Track1. Dropping proper Track1 support without an easy transition to Track2 is a similar annoying move.

    To be clear, I don't want to complain and put you on the spot or anything like that, just want to make sure we're making some moves forward for the users of the Terraform Provider for Azure, which have waited long enough already.

    I opened up #21877 to influence the generation of the API SDK for 7.4-preview1, as that API version is still in preview, would that work from a breaking change perspective?

    @jlichwa
    Copy link
    Contributor

    jlichwa commented Dec 13, 2022

    @aristosvo it is not annotation. It is an enum which is passed to service and it will break all clients. Track 1 is deprecated and it is not supported for any new features. You will need to migrate/create new Track 2 SDK.
    There are no changes allowed in current not subsequent version, completely new endpoint would have to be introduced and old one would need to support for at least 3 years in subsequent versions. There is no plan to do that since we migrated to Track 2 and Track 1 is deprecated and support will end in March -
    https://azure.github.io/azure-sdk/releases/deprecated/index.html

    @jlichwa
    Copy link
    Contributor

    jlichwa commented Dec 13, 2022

    @aristosvo I discussed with @JeffreyRichter about various options. The path forward would be to have a meeting with me and @heaths when he comes back next year to discuss it.

    @tombuildsstuff
    Copy link
    Contributor Author

    @jlichwa @JeffreyRichter @heaths since this inconsistency exists in the Swagger (which is supposed to be the source of truth) - is there a reason why the Track2 SDKs couldn't temporarily use a Swagger Directives until the next major version instead? That would both solve this issue in the medium-term whilst fixing this for other consumers of the Swagger

    @JeffreyRichter
    Copy link
    Member

    Yes Tom, what you propose is possible. And we did discuss this we'd have to coordinate it across all the SDK language owners which is tedious but possible. Jack & I also discussed some other alternatives too, but I prefer to let him tell you about them when you & he meet.

    @jianyexi jianyexi reopened this Dec 16, 2022
    @jianyexi jianyexi closed this Dec 16, 2022
    @tombuildsstuff
    Copy link
    Contributor Author

    hey @JeffreyRichter - just wondering if you'd had a chance to sync up with Jack/Heath yet on how's best to proceed here?

    @JeffreyRichter
    Copy link
    Member

    Jack & I spoke last month. The ball is in @jlichwa's court to talk to you.

    @jlichwa
    Copy link
    Contributor

    jlichwa commented Jan 11, 2023

    The best way you to contact our team is to create support request as I mentioned above in comments. Looking forward to the meeting.
    Link: https://aka.ms/gethelp

    @jlichwa
    Copy link
    Contributor

    jlichwa commented Feb 24, 2023

    @tombuildsstuff 7.4 with fix is now available : https://github.com/Azure/azure-rest-api-specs/tree/main/specification/keyvault/data-plane/Microsoft.KeyVault/stable/7.4

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    customer-reported Issues that are reported by GitHub users external to the Azure organization. data-plane KeyVault needs-author-feedback Workflow: More information is needed from author to address the issue. potential-sdk-breaking-change
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    7 participants