Initial Microsoft.ApiManagement Swagger Spec

2015-09-15 is the curent active version in ARM and Ibiza
2016-07-07 is current active version in Powershell

This change is

Hi @solankisamir, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

It looks like you're working at Microsoft (sasolank). If you're full-time, we DON'T require a contribution license agreement.

If you are a vendor, DO please sign the electronic contribution license agreement. It will take 2 minutes and there's no faxing! https://cla.azure.com.

TTYL, AZPRBOT;

@tbombach can you take a look at this PR.

Will do. Thanks for cleaning up the merge commits!

  "maxLength": 50

Do you want this parameter to be a client property like subscriptionId and api-version? If no, then please apply the extension "x-ms-parameter-location": "method"

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:8257 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

    "description": "Begin to manage (CUD) VPN configuration of an Api Management service.To determine whether the operation has finished processing the request, call GetLongRunningOperationStatus.",

We dont need to tell the customer how to poll. The polling is done automatically by the client runtime. Please remove the starting phrase "Begin to"
Please add the "x-ms-long-running-operation": true extension on this operation and also update the description accordingly.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:27 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

    "operationId": "ResourceProvider_ManageVirtualNetworks",

General comment: ApiManagementService_ManageVirtualNetworks would make more sense. This would translate to client.ApiManagementService.ManageVirtualNetworks() where ApiManagementService is the logical operation group and ManageVirtualNetworks is the actual operation. Please make sure to replace all the operationIds that startwith "ResourceProvider_" with "ApiManagementService_"

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:26 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "name": "resourceGroupName",

Rather than repeating this parameter definition n times, you can define it once in the global parameters section along with subscriptionID, api-version and serviceName. Please apply the "x-ms-parameter-location": "method" while defining it in the global parameters as you would not want resource group to be a client property.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:30 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "Parameters supplied to the ManageVirtualNetworks operation."

Parameters supplied to ManageVirtualNetworks

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:46 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      }

You dont need to explicitly define the negative response codes. When you define them, it indicates Autorest that you intend to not throw an exception on these negative responses and deserialize them differently.
If the error response from the server contains any thing more than code and message then please define a "default" response in the responses section with an Error schema. Please take a look at the CDN spec as an example for this scenario.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:67 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

    "operationId": "ResourceProvider_BeginCreatingOrUpdating",

ApiManagementService_CreateOrUpdate

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:263 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

    "description": "Begins creating new or updating existing Api Management service.To determine whether the operation has finished processing the request, call GetApiServiceLongRunningOperationStatus.",

General comment: "Please remove Begins phrase from the description. Reason: When the long running operation extension is applied, Autorest will clone this method and create a BeginCreateOrUpdate() method. The description then is confusing for the normal createOrUpdate() and the begin version.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:264 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

    "parameters": [

Usually CreateOrUpdate kind of operations are PUT operations and PATCH is a simple update.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:265 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

          "$ref": "#/definitions/ApiServiceCreateOrUpdateParameters"

So you have the same type as an input for PATCH and POST. This seems weird from the general pattern.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:281 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "The name of the resource group. If resourceGroupName value is null the method lists all Api Management services within subscription"

All path parameters are required. This should be split into two paths. "/subscriptions/{subscriptionId}/resourceGroups/providers/Microsoft.ApiManagement/service/" /resourceGroups/ in the path would still look weird to me. Nonetheless, the operationId should be "ApiManagementService_List"

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:448 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "",

General Comment: Empty descriptions are not allowed in the spec. Please update it.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:459 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "",

not allowed

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:537 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "description": "Gets or sets hostname type.",

General comment: Please remove the phrase "Get" OR "Gets or sets" from the description of the model property. Autorest will add it automatically based on the mutability of the property.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:6170 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

  },

"required": ["nameAvailable"],

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:6163 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "The filter to apply on the operation."

What properties can the customer filter on? Are there any mutually exclusive properties that the customer needs to know before hand. Usability of the API is of prime importance. Better documentation is one of the things that helps us acheive that goal. Please make sure to update the documentation or provide a link to an MSDN doc or any other doc that can provide more useful info. If required, then please rope your documentation team early on to avoid last minute changes.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:663 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "application/vnd.sun.wadl+xml",

FYI, We only support application/json on the client side. It is ok to document more content-types. However, please make sure that those are supported by the service. The swagger spec should be an accurate representation of the underlying API.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:714 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "Identifier of the API.",

apiId would be a better name than aid.
what is the format of aid ? If it is supposed to have slashes then please add the extension "x-ms-skip-url-encoding": true over here.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:734 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

    "description": "Creates new or updates existing specific API of the Api Management service instance.",

Creates a new or updates an existing specific API of the Api Management service instance.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:761 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "Identifier of the API.",

same as above.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:778 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "204": {

It is very weird to send 204 in case of update. It would be more useful to send the updated object back in the result. It also helps in keeping the API clean and simple.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:808 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "ETag.",

What kind of etags are supported, If-Match, If-None-Match, etc? Supported values and their examples in the description would help.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:856 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "ETag.",

same as above

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:906 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

    "operationId": "ApiOperations_ListByApis",

ApiOperations_ListByApis

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:934 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "The filter to apply on the operation."

same as above.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:959 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "name": "oid",

operationId

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1024 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

    "description": "Creates new API operation.",

Creates a new API operation.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1054 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

    "operationId": "ApiOperations_Create",

The operation is also sending a 204 response for update scenario. Then should this be named: ApiOperations_CreateOrUpdate

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1053 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

    "description": "Updates existing API operation.",

Updates an existing API operation.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1117 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

    "description": "Deletes specific API Operation of the Api Management service instance.",

Deletes a specific API Operation of the Api Management service instance.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1183 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "The filter to apply on the operation."

same as above

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1266 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "The filter to apply on the operation."

same as above.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1328 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": ""

empty description not allowed.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1451 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "204": {

based on this statusCode, should the operation name be createOrUpdate?

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1453 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "200": {

souldnt regeneration return the new key?

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1601 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "200": {

souldnt regeneration return the new key?

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1643 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "The filter to apply on the operation."

same as above.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1675 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "204": {

createorupdate?

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1800 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "Identifier of the product.",

x-ms-skip-url-encoding: true ?

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1777 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "204": {

In what scenario, will the service send a 204 ?

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:2033 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

          "$ref": "#/definitions/GroupPaged"

the name of the definition should be ProductGroupListResult

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:2145 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

    "description": "List all groups.",

what kind of Groups are they? How should one differentiate between a group and a product group? Is this a ServiceGroup?

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:2259 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "204": {

Create or Update ?

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:2401 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "application/vnd.ms-azure-apim.policy.raw+xml"

It should atleast have application/json. We do not support anything else apart from that as of today.

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:2689 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "application/vnd.ms-azure-apim.policy.raw+xml"

same as above

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:2727 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

  "maxLength": 50

added extension.

In reply to: 249658423 [](ancestors = 249658423)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:8257 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "name": "resourceGroupName",

created ResourceGroupNameParameter with extension and replaced all occurences

In reply to: 249660781 [](ancestors = 249660781)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:30 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

    "description": "Begin to manage (CUD) VPN configuration of an Api Management service.To determine whether the operation has finished processing the request, call GetLongRunningOperationStatus.",

update description

In reply to: 249659337 [](ancestors = 249659337)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:27 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "Parameters supplied to the ManageVirtualNetworks operation."

updated description

In reply to: 249660903 [](ancestors = 249660903)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:46 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

"/{operationStatusLink}": {

removed the operation

In reply to: 249662237 [](ancestors = 249662237)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:225 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "ETag.",

If-Match Etags are supported. Updated throughout the file.

In reply to: 249669895 [](ancestors = 249669895)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:856 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "The name of the resource group. If resourceGroupName value is null the method lists all Api Management services within subscription"

Created a separate path of List withouth Resourcegroup.

In reply to: 249665065 [](ancestors = 249665065)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:448 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "ETag.",

Updated if If-Match

In reply to: 249670040 [](ancestors = 249670040)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:906 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

          "$ref": "#/definitions/ApiServiceCreateOrUpdateParameters"

Fixed this... That was a typo. PATCH should have been PUT.

In reply to: 249664309 [](ancestors = 249664309)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:281 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

    "operationId": "ResourceProvider_BeginCreatingOrUpdating",

Fixed this with PUT

In reply to: 249662437 [](ancestors = 249662437)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:263 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "204": {

If the Api was already part of the Product. No change is done.

In reply to: 249686935 [](ancestors = 249686935)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:2033 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

Microsoft OneAPI guidelines acknowledges "UPSERTS", i.e. Create or Update with PATCH as a valid approach  https://github.com/Microsoft/api-guidelines/blob/master/Guidelines.md#743-creating-resources-via-patch-upsert-semantics

      "200": {

This is POST operation and it just regenerates the Key and gives 204 on Success.

In reply to: 249683308 [](ancestors = 249683308)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1601 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "200": {

This is POST operation and it just regenerates the Key and gives 204 on Success.

In reply to: 249683359 [](ancestors = 249683359)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1643 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "application/vnd.ms-azure-apim.policy.raw+xml"

The Api does not accept application/json while updating policies. We only support the above two Content-Types.
We are able to do this from Powershell and current SDK. If this not possible with AutoRest??

In reply to: 249688267 [](ancestors = 249688267)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:2689 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      }

updated the error contracts throughout the file

In reply to: 249661670 [](ancestors = 249661670)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:67 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

@solankisamir - Make sure you do similar changes in both the files.

      "description": "Gets or sets hostname type.",

Fixed this.

In reply to: 249665974 [](ancestors = 249665974)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:6170 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "Identifier of the API.",

format is "pattern": "^[^*#&+:<>?]+$" and changed to apiId

In reply to: 249668861 [](ancestors = 249668861)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:734 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "Identifier of the API.",

replaced with apiId

In reply to: 249669250 [](ancestors = 249669250)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:778 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "name": "oid",

replaced oId with operationId

In reply to: 249670442 [](ancestors = 249670442)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1024 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "application/vnd.ms-azure-apim.policy.raw+xml"

we only accept the above types. the Api does not support application/json. Why cant we do it from AutoRest

In reply to: 249688336 [](ancestors = 249688336)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:2727 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "204": {

we return 204 if there is no change in the object.

In reply to: 249669570 [](ancestors = 249669570)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:808 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "Identifier of the product.",

no.. the pattern is "pattern": "^[^*#&+:<>?]+$"

In reply to: 249683638 [](ancestors = 249683638)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1777 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

    "description": "List all groups.",

added exterenalDocs link giving details.

In reply to: 249687544 [](ancestors = 249687544)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:2259 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "The filter to apply on the operation."

added external docs link

In reply to: 249667808 [](ancestors = 249667808)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:663 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "application/vnd.sun.wadl+xml",

That is a concern. Powershell and our current .net SDK support providing custom Content-Type and Accept Type. This would be a regression in our functionality. What is the ETA?

In reply to: 249668306 [](ancestors = 249668306)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:714 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "The filter to apply on the operation."

provided external docs link

In reply to: 249671967 [](ancestors = 249671967)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1266 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "The filter to apply on the operation."

provided external docs link

In reply to: 249672135 [](ancestors = 249672135)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1328 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "The filter to apply on the operation."

provided external docs link

In reply to: 249670275 [](ancestors = 249670275)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:959 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

        "description": "The filter to apply on the operation."

provided external docs link

In reply to: 249683420 [](ancestors = 249683420)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1675 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

  },

??

In reply to: 249666331 [](ancestors = 249666331)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:6163 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "204": {

fixed this.

In reply to: 249682912 [](ancestors = 249682912)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1453 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "204": {

Fixed this.

In reply to: 249683542 [](ancestors = 249683542)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:1800 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

      "204": {

Fixed

In reply to: 249687782 [](ancestors = 249687782)

Refers to: arm-apimanagement/2015-09-15/swagger/api.json:2401 in 9269fe7. [](commit_id = 9269fe7f960e8ee0373dc68f68169f8098d4d28e, deletion_comment = False)

taken care of that.

In reply to: 250060005 [](ancestors = 250060005)

@amarzavery can you take a look?

@solankisamir - Sure will take a look at it today.

@amarzavery please ignore file https://github.com/solankisamir/azure-rest-api-specs/edit/master/arm-apimanagement/2015-09-15/swagger/api.json

      },

If you make the description generic, you could move this to the reusable parameters section. The if-match header is used 24 times.

Refers to: arm-apimanagement/2016-07-07/swagger/api.json:812 in c5a54b8. [](commit_id = c5a54b84858368f1d6d84f2a7dc853c769f487a9, deletion_comment = False)

      },

We use If-Match in PUT and PATCH. It is not a required parameter in one case and required in another. I would like to keep it descriptive.

In reply to: 252369922 [](ancestors = 252369922)

Refers to: arm-apimanagement/2016-07-07/swagger/api.json:812 in c5a54b8. [](commit_id = c5a54b84858368f1d6d84f2a7dc853c769f487a9, deletion_comment = False)

ApiServiceCreateOrUpdateParameters and ApiServiceResource can be merged into one. Why do you need two spearate model classes ?

Resource

inherits

ApiManagementService

    "description": "List all APIs of the Api Management service instance.",

As Eric said, please start the description with plural verbs. Lists

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:43 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

      "400": {

same as the previous spec. Only specify the "default" response and that should take care of the negative response codes. The generated code will deserialize the error based on the schema provided in the "default" response and then throw an exception that has reference to error, actual request and actual response.

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:91 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "description": "This operation returns the details of the API specified by its identifier.",

Gets the details of the API specified by its identifier.

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:110 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

        "description": "ETag of the Api Entity. Etag should match current Entity state or it should be * for Unconditional update.",

When the description says

Etag should match current Entity state

Can you give an example of that in the description? If-Match= for the above statement to be true

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:241 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

        "description": "The API was successfully imported."

"The API was successfully imported updated."

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:253 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "description": "This operation returns a collection of the operations for the specified API.",

Lists a collection ....

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:324 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "description": "This operation returns the details of the API Operation specified by its identifier.",

Gets ...

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:391 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "description": "Creates new or updates existing specific API of the Api Management service instance.",

Creates a new or updates an existing .. .

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:160 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

          "$ref": "#/definitions/ApiCreateOrUpdateParameters"

Doesn't the service return the ApiContract in the reponse? Isn't there any 200 response ? If yes then can the input to PUT operation and it's output be the same thing?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:176 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

  	"pattern": "^[^*#&+:<>?]+$"

It would be better to define the operationId once in the global parameters section with x-ms-parameter-location: method extension. In that way we wont see errors where operationId does not have a pattern in the previous definition but has one in this definition.

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:459 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "description": "Creates new API operation or updates an existing one.",

Creates or updates

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:442 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

      "201": {

same as above. isnt there a 200 response with a schema of "OperationContract" returned by the server? I believe "OperationContract" should be the model for input in the PUT operation.

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:478 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

      "201": {

Shouldnt there be a schema for 201 ?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:478 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "count": {

I have never seen this in the PagedModel. Usually it's only value and nextLink. Is this correct? Does ARM allow this?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5309 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

      "description": "OperationId path."

Is this the ARM Id ?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5253 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "name": {

Are these the ARM Resource id and name equivalent? If so then should they be readOnly: true ?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5255 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

      "type": "string",

enum candidate ?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5262 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "OperationContract": {

This looks a little weird. The entire OperationContract i.e. the response model is a property of the input? Why would you do that? Why wouldnt you keep OperationContract as the input and output of the PUT (createOrUPdate) and output of GET ?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5323 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

      "type": "string",

enum candidate? What are the possible types of parameters that the operation API supports?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5154 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "values": {

should values be required as well ?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5165 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "contentType": {

enum candidate (x-ms-enum.modelAsString: true) ?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5181 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "representations": {

Shouldn't this be a required property of the RequestContract? If not, then does the service assume any defaults?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5215 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

"RequestContract": {

Should RequestContract have bodyParameter ?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5195 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "statusCode": {

should this have a range 200 to 599?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5227 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

"ResultContract": {

Shouldn't ResultContract have a responseBody as one of the properties ?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5225 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

  "required": [

Should request and responses be required as well, else the definition looks incomplete from the server's perspective?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5293 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

      "description": "Product description. May be 1 to 500 characters long."

"minLength": 1,
"maxLength": 500

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5347 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

      "description": "Whether a product subscription is required for accessing APIs included in this product. If true, the product is referred to as \"protected\" and a valid subscription key is required for a request to an API included in the product to succeed. If false, the product is referred to as \"open\" and requests to an API included in the product can be made without a subscription key. If property is omitted when creating a new product it's value is assumed to be true."

If property is omitted when creating a new product it's value is assumed to be true. This means the default: true should be described in the spec.

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5355 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "state": {

Since state is optional it must be having a default. If so then please declare the default value in the spec else this looks like a required property.

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5366 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

      "description": "Subscriber identifier path in form /users/{uid}"

User identifier

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5413 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

      "description": "Subscription identifier path."

example over here too..

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5409 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "createdDate": {

should this be readOnly: true?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5439 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

      "description": "Subscription State Comment."

Please provide more meaningful description.

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5474 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

      "description": "Subscription secondary key."

"minLength": 1,
"maxLength": 256

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5470 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "primaryKey": {

"minLength": 1,
"maxLength": 256

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5464 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

      "description": "Initial subscription state.",

If not specified then what is the default? Please describe it in the spec

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5528 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

"PolicySnippetContract": {

general comment: what are the required properties?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5933 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

  "properties": {

required properties?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:6063 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

"PolicySnippetContract": {

This contract is a read only contract.

In reply to: 253958672 [](ancestors = 253958672)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5933 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "name": {

no, they are not equivalent. id is the resource identifier of the operation, and name is the friendly name of the operation.

In reply to: 253957272 [](ancestors = 253957272)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5255 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

      "type": "string",

The strings defined or Http Method are not restricted list and hence we have not kept them as restricted. We just say, it should be a valid string satisfying the RFC http://www.rfc-editor.org/rfc/rfc7230.txt. Added enough documentation.

In reply to: 253957286 [](ancestors = 253957286)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5262 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

      "201": {

we dont have a schema for 201 on operation created successfully.

In reply to: 253957123 [](ancestors = 253957123)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:478 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

      "201": {

yeah ... no schema on successfull create.

In reply to: 253956529 [](ancestors = 253956529)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:478 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

"ResultContract": {

That is the RepresentationContract. Our api has a sample Response in "sample" property but we dont mandate it.

In reply to: 253957773 [](ancestors = 253957773)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5225 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

          "$ref": "#/definitions/ApiCreateOrUpdateParameters"

No, we dont return 200, but 201 without a body.

In reply to: 253955240 [](ancestors = 253955240)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:176 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "contentType": {

No, customer can define any Content Type, it can even be his own Custom Content Type.

In reply to: 253957575 [](ancestors = 253957575)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5181 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "count": {

These entities are not registered in ARM.

In reply to: 253957201 [](ancestors = 253957201)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5309 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "OperationContract": {

Fixed all such instances

In reply to: 253957427 [](ancestors = 253957427)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5323 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

        "description": "ETag of the Api Entity. Etag should match current Entity state or it should be * for Unconditional update.",

The value to put in here is got from the Header "Etag" of the GET response for the entity. Update the responses of all the entities.. where this value is returned.

In reply to: 253954895 [](ancestors = 253954895)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:241 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "values": {

no.. values is optional.

In reply to: 253957528 [](ancestors = 253957528)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5165 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

      "type": "string",

This type is a flexible type, we dont have restriction on the service side.

In reply to: 253957513 [](ancestors = 253957513)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5154 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

  "required": [

no.. request and responses are not must... they are good to have for documentation purposes only.

In reply to: 253957840 [](ancestors = 253957840)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5293 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

    "representations": {

User provides this only for documentation purposes... not a must.

In reply to: 253957661 [](ancestors = 253957661)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5215 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

"RequestContract": {

RequestContract has a RepresenationContract.. which has a sample of the Body.

In reply to: 253957717 [](ancestors = 253957717)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:5195 in 7ff3b8c. [](commit_id = 7ff3b8c7ac400264357f18e1cee7da3ca0705ace, deletion_comment = False)

We just have one entity.

In reply to: 253941465 [](ancestors = 253941465)

    "operationId": "Apis_ListByService",

Just APIs is not expressing much about what is this. This will looks just a set of APIs, rather than operations on resource APIs

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:42 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "Certificates_ListByService",

ListByApiManagementService

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:1979 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "Apis_ListByService",

ListByServer -> ListByApiManagementServer, thats what in other file this resource is named as

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:42 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "Subscriptions_ListByService",

Subscription -> ApiManagementSubscriptions, otherwise user can be mistaken that if this is there Azure Subscriptions.

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:634 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "ProductGroups_Add",

ProductGroups ->  ApiManagementProductGroups
Products ->  ApiManagementServiceProducts

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:1470 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "Groups_ListByService",

Groups -> ApiManagementServiceGroups
ListByService -> ListByApiManagementService

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:1557 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "GroupUsers_Add",

ApiManagementServiceGroups_AddUser

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:1885 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "GroupUsers_Remove",

ApiManagementServiceGroups_RemoveUser

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:1932 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "GroupUsers_ListByGroup",

ApiManagementServiceGroups_ListUsers

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:1818 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "Apis_ListByService",

API Management is a service that manages APIs and therefore "APIs" is a first class notion from the perspective of someone working with our service.  I don't know what you mean by "operations on resource APIs".

In reply to: 255177481 [](ancestors = 255177481)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:42 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "Regions_ListByService",

Regions can be mistaken to locations, rename this to ApiManagementServiceRegions

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:3034 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "Regions_ListByService",

Region does not seems like resource, name this api as ApiManagementServices_ListRegions

In reply to: 255184534 [](ancestors = 255184534)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:3034 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "ProductGroups_Add",

Why would it be necessary to prefix all the operation Ids defined in the ApiManagement OpenAPI spec with ApiManagement?  Are these used globally somewhere?

In reply to: 255181963 [](ancestors = 255181963)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:1470 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/users/{uid}": {

Just for my knowledge - Is this user is related to user under group

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:2385 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "Users_ListByService",

ApiManagementServiceUsers_ListByApiManagmentService

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:2323 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "ProductGroups_Add",

In PowerShell all Azure will be in single module.
In Fluent APIs also we are generating the single SDK for all azure

In reply to: 255185203 [](ancestors = 255185203,255181963)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:1470 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "Property_ListByService",

Property?? this will appear as apiManagmentClient.Property while coding against ApiManagement SDK

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:3620 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "GroupUsers_ListByGroup",

#WontFix

In reply to: 255183099 [](ancestors = 255183099)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:1818 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "Certificates_ListByService",

#Fixed

In reply to: 255180460 [](ancestors = 255180460)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:1979 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "Apis_ListByService",

#WontFix

In reply to: 255181121 [](ancestors = 255181121)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:42 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "GroupUsers_Add",

#WontFix, as discussed

In reply to: 255182590 [](ancestors = 255182590)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:1885 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "GroupUsers_Remove",

#WontFix, as discussed

In reply to: 255182657 [](ancestors = 255182657)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:1932 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "ProductGroups_Add",

#WontFix, as discussed

In reply to: 255187106 [](ancestors = 255187106,255185203,255181963)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:1470 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "operationId": "Groups_ListByService",

#WontFix, as discussed

In reply to: 255182201 [](ancestors = 255182201)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:1557 in 3cbe75a. [](commit_id = 3cbe75ac8ee15d8b9a42f2f041ce0ba25555e52f, deletion_comment = False)

    "responses": {

Given that the description (and method name) implies that things can be both created and updated, I would expect that both a 200 and 201 response could be sent (201 on created, 200 on update existing).

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:194 in 135dad9. [](commit_id = 135dad9ae576ac52720bf76279887913d1d82a1f, deletion_comment = False)

        "name": "If-Match",

Do you also support If-None-Match to avoid accidental overwrite?

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:181 in 135dad9. [](commit_id = 135dad9ae576ac52720bf76279887913d1d82a1f, deletion_comment = False)

    "responses": {

#Fixed Update response as 204, which we return from our service without a body of the contract, was apis, operations, certificates entity.

In reply to: 257363813 [](ancestors = 257363813)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:194 in 135dad9. [](commit_id = 135dad9ae576ac52720bf76279887913d1d82a1f, deletion_comment = False)

        "name": "If-Match",

no.. we don't support If-None-Match. If-Match is only required must for UPDATE case and if client wants to do unconditional than he can specify "*".

In reply to: 257364685 [](ancestors = 257364685)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:181 in 135dad9. [](commit_id = 135dad9ae576ac52720bf76279887913d1d82a1f, deletion_comment = False)

        "name": "If-Match",

If-None-Match would be the way to do a conditional create (don't overwrite existing), no? How is that expressed in the current API?

In reply to: 257392561 [](ancestors = 257392561,257364685)

Refers to: arm-apimanagement/2016-07-07/swagger/apimmanagement.json:181 in 135dad9. [](commit_id = 135dad9ae576ac52720bf76279887913d1d82a1f, deletion_comment = False)

We dont have support for conditional Create, if the Entity exists and the customer has not provided the If-Match header we throw 400 Bad Request error with message "Entity with the given ID already exists. Specify ETag, or '*' for unconditional update."

No modification for Python

No modification for NodeJS

No modification for Ruby


Lint for unused SCSS variables

See:

http://blog.gospodarets.com/finding_unused_scss_variables/
https://gist.github.com/badsyntax/6193491

v4 currently (as of d756e12f7837aff41f279e25f4b280aae5630d5c) has several unused variables:
$enable-gradients
$font-family-serif
$font-size-xs
$line-height-computed
$nav-link-hover-bg
$nav-pills-active-link-hover-bg
$nav-pills-active-link-hover-color
$nav-tabs-justified-active-link-border-color
$nav-tabs-justified-link-border-color
$navbar-dark-disabled-color
$navbar-light-disabled-color
$pre-bg
$pre-border-color
$progress-bar-bg
$progress-border-radius

Also, we'll need some sort of exemption system (e.g. magic comments) for variables which we don't use out of the box but are exposed for the benefit of downstream users (e.g. the many color palette vars in #18462).

Updated the list above to remove the pager variables (done in af1de03 btw).


DIP25: don't forget opAssign

which needs to be annotated with 'return'.

urgh

Should the DIP be updated?

Auto-merge toggled on

It needn't be updated for this. Since it's an auto-generated function, it's up to the generator to do it correctly.

Looks like this pull broke druntime compilation on linux: wasn't it run through the auto-tester first?

The druntime pull broke it, not this one.

Yes, locally reverting this one didn't fix it, looks like it was the since reverted druntime pull.


Incorrect RGB8 DDS texture export

Attempting to export textures that are stored as uncompressed 24-bit RGB will produce ill-formatted DDS files that crash or fail to open in image editors such as Photoshop or GIMP.
The exact part of the the output DDS header that causes this is unknown to me.
Mostly affected by this are DIVA F style toon curve textures.

nani

Here's a sample from mikitm001_tex.bin with correct headers

Fixed as of 76b07f7.


Example of team creation is not showing the channels favourited as described in sample

For example 3 and 5 the property 'isFavoriteByDefault' is not working as expected. The channel still appears under the 'hidden channels', is the sample broken?
Thanks for the assistance.

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 14650eac-eef3-e892-50ee-85e4692d21e9
Version Independent ID: c7aeea07-12b6-45c9-8fb9-f942974811fa
Content: Create team - Microsoft Graph v1.0
Content Source: api-reference/v1.0/api/team-post.md
Product: microsoft-teams
Technology: microsoft-graph
GitHub Login: @anandjo
Microsoft Alias: MSGraphDocsVteam

@PieterVandendriessche -We are able to repro that issue, we have raised bug for the same. We will inform you once we get any update.

@ChetanSharma-msft Thanks for raising the bug. Do you have any update for us?


use compression on .tsv posts?

Noticing that those files are ~5MB per variable for those with full record. Also, am only posting 2008 to present.

this is now done on post_ts


MQTT Bridge configuration :: Error running translation for vmq_bridge.config

Environment

VerneMQ Version:0.15.3
OS: UBUNTU Xenial

Expected behavior

Configure Bridge to AWS IoT

bridge.tcp.br0 = XXXX.iot.eu-west-1.amazonaws.com:8883
bridge.tcp.br0.try_private = off
bridge.tcp.br0.topic.1 = /demo/+ both 1
bridge.tcp.br0.cleansession = on

bridge.ssl.br0.cafile = /etc/vernemq/keys/ca.pem
bridge.ssl.br0.certfile = /etc/vernemq/keys/cert.crt
bridge.ssl.br0.keyfile =  /etc/vernemq/keys/private.pem

bridge.ssl.br0.insecure = off

Actual behaviour
Seems like the issue is with SSL/TLS

10:36:19.294 [debug] Running translation for vmq_server.persistent_client_expiration
10:36:19.294 [debug] Running translation for vmq_server.http_modules
10:36:19.294 [debug] Running translation for vmq_server.listeners
10:36:19.343 [debug] Lager installed handler lager_backend_throttle into lager_event
10:36:19.377 [debug] Running translation for vmq_server.tcp_listen_options
10:36:19.378 [error] Error generating configuration in phase apply_translations
10:36:19.378 [error] Error running translation for vmq_bridge.config, [error, {badmatch,
                                                          {["<IP_ADDRESS>:1889"],
                                                           [{topics,[]}]}}]

Hi @ywadi thanks for using VerneMQ :)
it looks like there is a default bridge configured in your vernemq.conf file (an uncommented line like vmq_bridge.tcp.br0 = <IP_ADDRESS>:1889 anywhere?)
Can you check for this?

Hi,
Thanks for VerneMQ its great.
No default configs detected, this is the last test file I ran
l```
og.console = file
log.console.level = info
log.console.file = /var/log/vernemq/console.log
log.error.file = /var/log/vernemq/error.log
log.syslog = off
log.crash = on
log.crash.file = /var/log/vernemq/crash.log
log.crash.maximum_message_size = 64KB
log.crash.size = 10MB
log.crash.rotation = $D0
log.crash.rotation.keep = 5
leveldb.maximum_memory.percent = 70
nodename =<EMAIL_ADDRESS>distributed_cookie = vmq
erlang.async_threads = 64
erlang.max_ports = 262144
acl_file = /etc/vernemq/vmq.acl
acl_reload_interval = 10
password_file = /etc/vernemq/vmq.passwd
password_reload_interval = 10
allow_anonymous = off
allow_register_during_netsplit = off
allow_publish_during_netsplit = off
allow_subscribe_during_netsplit = off
allow_unsubscribe_during_netsplit = off
allow_multiple_sessions = off
max_inflight_messages = 20
max_online_messages = 1000
max_offline_messages = 1000
message_size_limit = 0
upgrade_outgoing_qos = off
listener.max_connections = 10000
listener.nr_of_acceptors = 10
listener.tcp.default = <IP_ADDRESS>:1883
listener.vmq.clustering = <IP_ADDRESS>:44053
listener.http.default = <IP_ADDRESS>:8888
listener.mountpoint = off
systree_enabled = on
systree_interval = 20000
graphite_enabled = off
graphite_host = localhost
graphite_port = 2003
graphite_interval = 20000
bridge.tcp.br0 = a2nsvisrl5qlpw.iot.eu-west-1.amazonaws.com:8883
bridge.tcp.br0.try_private = off
bridge.tcp.br0.topic.1 = /demo/+ both 1
bridge.tcp.br0.cleansession = on
bridge.ssl.br0.cafile = /etc/vernemq/keys/ca.pem
bridge.ssl.br0.certfile = /etc/vernemq/keys/cert.crt
bridge.ssl.br0.keyfile =  /etc/vernemq/keys/private.pem
bridge.ssl.br0.insecure = off

I ran a couple of configs against vernemq config generate -l debug but no luck. it's strange though, it has to be something simple I'm missing.
@dergraf does this ring a bell somehow?

We fixed a bug related to multiple bridge configurations in https://github.com/erlio/vernemq/commit/a57ee22e48b083e5c1cd2fb128a19f90c6d996cb . Can you check with the current nightly build if the problem still exists?

@dergraf
I have tried to do this on the nightly still getting same issue, I used the same config but bridge was replaced wtih vmq_bridge
vmq_bridge.tcp.br0 = a-------------------0.amazonaws.com:8883
vmq_bridge.tcp.br0.try_private = off
vmq_bridge.tcp.br0.topic.1 = /demo/+ both 1
vmq_bridge.tcp.br0.cleansession = on

vmq_bridge.ssl.br0.cafile = /etc/vernemq/keys/ca.pem
vmq_bridge.ssl.br0.certfile = /etc/vernemq/keys/cert.crt
vmq_bridge.ssl.br0.keyfile =  /etc/vernemq/keys/private.pem

vmq_bridge.ssl.br0.insecure = off

23:07:25.675 [debug] Running translation for lager.crash_log
23:07:25.675 [debug] Running translation for lager.crash_log_count
23:07:25.675 [debug] "vm_args.+S" in Translations to drop...
23:07:25.675 [debug] "vm_args.+a" in Translations to drop...
23:07:25.675 [debug] "vm_args.+zdbbl" in Translations to drop...
23:07:25.675 [debug] Running translation for riak_sysmon.gc_ms_limit
23:07:25.676 [debug] Running translation for riak_sysmon.schedule_ms_limit
23:07:25.676 [debug] Running translation for riak_sysmon.heap_word_limit
23:07:25.676 [debug] Running translation for eleveldb.delete_threshold
23:07:25.676 [debug] Running translation for eleveldb.tiered_slow_level
23:07:25.677 [error] Error generating configuration in phase apply_translations
23:07:25.677 [error] Error running translation for vmq_bridge.config, [error, {badmatch,
                                                          {["<IP_ADDRESS>:1889"],
                                                           [{topics,[]}]}}]

Is it possible that you are mixing tcp and tls configurations? If you want to use a tls bridge you must define
vmq_bridge.ssl.br0 = a-------------------0.amazonaws.com:8883
vmq_bridge.ssl.br0.try_private = off
vmq_bridge.ssl.br0.topic.1 = /demo/+ both
vmq_bridge.ssl.br0.cleansession = on

The tls config isn't part of the tcp bridge, but rather specifies a bridge onits own. Therefore get rid of the tcp config and only use ssl.

Hi @ywadi did you resolve this issue? I just tried to reproduce with your config file on master (Nightly) and can't reproduce. I could, however, reproduce it on 0.15.3 but as mentioned we fixed a bug in nightly, so it would be interesting to see your entire config file you used for testing nightly to reproduce this.
I did just find another thing in the vmq_bridge config handling where it seems to start default tcp bridges to localhost if even if none are specified. I think this might be related to the problem on 0.15.3 at least. I'll investigate that and report back.

@larshesel
Thanks for looking into this, I am getting kind of lost figuring out whats going on. When I did what @dergraf mentioned it parsed well and passed, the odd thing now is I am not able to actually bridge the data to AWS. It runs on but all my pubs/subs dont do anything at all. I still can not figure out if I am doing something wrong or there is something wrong as the consoles and logs seem clear but data is not passing through

What @dergraf said is true - each bridge defintion (in this case br0) can only be either ssl or `tcp. Not a mix. Looking closer I think this was the main issue and your config as such is OK, on nightly at least.
It's hard to say why the bridge toward AWS is not working - unfortunately the bridge doesn't log a lot of information - a point which is on our todo-list before our upcoming release of VerneMQ 1.0. Due to the lack of info from the bridge, would it be possible for you eliminate AWS connectivity errors by manually publishing messages using mosquitto_pub and mosquitto_sub or similar tools? Is it possible from the AWS side to see which clients are connected (by client-id or similar) to see if VerneMQ is able to establish a connection?

@ywadi I think we have a regression in Nightly where the bridge connections are not properly started. Let me look a bit closer into this before you spend a lot of time debugging.

@larshesel ok thanks

@ywadi I'll be traveling tomorrow but will be seeing if I can't get this sorted out. Thank you for your patience.

Btw - are you in a position to build VerneMQ yourself? If so I'd prepare a special branch for you when I have a fix - otherwise you'd have to wait until it's been reviewed and landed in the nightly build or a proper release.

@larshesel no problem, we can wait. If we can support in an means possible let me know.

Hi @ywadi we've merged a fix for this and a few other things on master and this should be in the nightly build if you'd like to test it out. Our latest changes to the vernemq.conf file had broken the bridge config so at least that should be fixed and my ad-hoc tests showed the bridge to be working now - so I hope it will for you as well. We'll likely do a tagged release tomorrow.

Let us know if you have any further issues! :)

HI @larshesel  I was following this ticket as I had a similar use case connecting verne to AWS IoT. I tried building from source as well as the nightly build and I get an error message: <server_not_found>
Digging through the code, the error happens during the connect phase and "connect_on_error" code.
My conf file looks like this on the bridge portions:
vmq_bridge.ssl.br0 = aXXXXXXXXXXXX.iot.us-east-1.amazonaws.com:8883
vmq_bridge.ssl.br0.try_private = off
vmq_bridge.ssl.br0.topic.1 = /demo/+ in 1
vmq_bridge.ssl.br0.cleansession = on
vmq_bridge.ssl.br0.cafile = /etc/vernemq/cert/rootCA.pem
vmq_bridge.ssl.br0.certfile = /etc/vernemq/cert/cert.crt
vmq_bridge.ssl.br0.keyfile =  /etc/vernemq/cert/privKey.pem
vmq_bridge.ssl.br0.insecure = off
I was curious if you were able to get this to work against an ssl endpoint? And if you could share what your conf looked like during your test? This still wasn't working for me so possibly I'm missing something.
Thanks!

hi @oladehin the error message there is somewhat unfortunate as it doesn't necessarily mean 'server not found' but could be logged due to any number of connectivity reasons (including wrongly configured SSL/TLS).
But just to check - yesterday the whole of US-EAST-1 amazon setup was hit by an outage - could it be that was what you experienced? It looks like you're tried to connect to an iot instance there. If that was the cause it should be fixed by now.
If that was not the case, I'll try and do a test with SSL to see if I can reproduce.

Hi @larshesel unfortunately I did these tests over the weekend and got these issues. I also tried it against multiple regions with the same issue.
I could imagine it is a TLS/SSL connection issue. Two quick questions:
In the configuration, AWS IoT expects a server-cert: vmq_bridge.ssl.br0.cafile = /etc/vernemq/cert/rootCA.pem (which identifies that I'm connected to the right server endpoint)
is this the right location/configuration for that cert?
then the two device certs here:
vmq_bridge.ssl.br0.certfile = /etc/vernemq/cert/cert.crt
vmq_bridge.ssl.br0.keyfile = /etc/vernemq/cert/privKey.pem
Again assuming these are correct, but possibly the keyfile needs to be in a .key extension? Not completely sure. Let me know if you'd like me to share a device cert to you so you can try with a similar configuration.
Thanks,
Wale

hi @oladehin
I just did a quick setup with current master (1.0.0rc1) where I set up two VerneMQ brokers where one acted as a bridge to the other. I used the test client/server certs ca we use for our integration tests and got it to work without much hassle.
To try to answer your questions 1) your cafile setup looks fine, 2) the certfile and keyfile looks OK too - the extension shouldn't matter.
What I did discover, though, was that we have a bug in our configuration parser which creates a default tcp bridge config which causes the bridge to try to connect to localhost:1889 which will obviously cause errors to be logged as there likely is no MQTT server to connect on that port. I've created a fix for this in #289
What you could do to troubleshoot this is to see with an appropriate tool (for example wireshark) if an SSL connection is made to the server:port specified in the config (aXXXXXXXXXXXX.iot.us-east-1.amazonaws.com:8883). If no connection was successfully establised, try and see if you can debug the issue with mosquitto_sub/pub which can also make tls connections.  If a connection is made and still nothing is coming through, it could be an issue that the topic published to on the aws side and the one subscribed to from the bridge side aren't exactly the same. Is there any way to ask the aws side which clients are subscribed and what topics they're subscribed to?
I hope this helps!

I'm able to create a bridge but the messages are flowing from VerneMQ to AWS IoT but not the other way around.
Is it expected? If yes How to achieve the bidirectional bridge?
I'm trying to connect two AWS IoT Brokers with VerneMQ and trying to

publish from VerneMQ and receive at Both AWS IoT Brokers -> Success
Publish from one of the AWS IoT Broker and receive at VerneMQ and other AWS IoT Broker -> Unable to achieve this

Hey @ioolkos
How to specify in and out? I have connected two brokers with the config similar to the one below. To my knowledge, there isn't anything to configure at AWS IoT. Anyway, I will double check it and let you know.
vmq_bridge.ssl.br0 = aXXXXXXXXXXXX.iot.us-east-1.amazonaws.com:8883
vmq_bridge.ssl.br0.try_private = off
vmq_bridge.ssl.br0.topic.1 = topic
vmq_bridge.ssl.br0.cleansession = on
vmq_bridge.ssl.br0.cafile = /etc/vernemq/cert/rootCA.pem
vmq_bridge.ssl.br0.certfile = /etc/vernemq/cert/cert.crt
vmq_bridge.ssl.br0.keyfile = /etc/vernemq/cert/privKey.pem
vmq_bridge.ssl.br0.insecure = off
vmq_bridge.ssl.br1 = aXXXXXXXXXXXX.iot.us-east-1.amazonaws.com:8883
vmq_bridge.ssl.br1.try_private = off
vmq_bridge.ssl.br1.topic.1 = topic
vmq_bridge.ssl.br1.cleansession = on
vmq_bridge.ssl.br1.cafile = /etc/vernemq/cert/rootCA.pem
vmq_bridge.ssl.br1.certfile = /etc/vernemq/cert/cert.crt
vmq_bridge.ssl.br1.keyfile = /etc/vernemq/cert/privKey.pem
vmq_bridge.ssl.br1.insecure = off


test: run against postgres 12.8

Production is currently running 12.8, so move us to be inline with that
version.
Refs: https://github.com/pypa/warehouse/pull/10491#issuecomment-1127689561
Signed-off-by: Mike Fiedler<EMAIL_ADDRESS>

@ewdurbin I snagged a bunch of the changes you had prepared for the 13.3 upgrade, but targeted the current production version instead, so that we're in sync there, and can explore any other changes to sorting results for an upgrade.


WIP: Resolve "Remove DEMO baseline files" - [opened]

Merges 1879-remove-demo-baseline-files -> develop
Closes #1879

DEMO-specific baseline files were removed prior to open-sourcing. This gitlab PR (converted to an issue) can now be closed.


Add link to BARTOC entry

We created a record for the classification in BARTOC: https://bartoc.org/en/node/18914 Once the classification is available in SKOS, the URL should also be added to BARTOC.

Hello @nichtich, we now have a stable URI for the vocabulary: http://w3id.org/class/hochschulfaecher/scheme#
As I can not edit BARTOC, would you please add it and also adjust the name of the classification?

I added the link but it is not shown in the HTML view, see https://bartoc.org/en/node/18914. Closing.


Add Universitas Katolik Darma Cendika

@ekaadev First stage of verification passed, official domain is siakad.ukdc.ac.id as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision. Proof of domain ownership: https://siakad.ukdc.ac.id/spmbfront/program-studi

@ekaadev Pull request merged. Thank you!


Dragging images from another comingle tab doesn't work in Chrome

Dragging images from another comingle tab doesn't work (tested in Chromium).
EDIT: works in Firefox
Originally posted by @diomidov in https://github.com/edemaine/cocreate/issues/144#issuecomment-772667338
This seems to need this Chrome feature request, given this security feature.

It would be very nice if I could just paste from my computer's clipboard when I do a screen grab. Unfortunately what I've had to do, is to paste into a StackOverflow answer, which generates an imgur URL, then I paste that URL into the cocreate whiteboard, which is tedious and wastes time when I'm doing live tutorials/lectures.
Also it would be nice if I could resize the images that are pasted into the cocreate whiteboard, by dragging a corner.

I just wrote a LaTeX equation with the biggest font-size available, but it was not big enough for it to be a "title", so I would really like to be able to drag my images/equations at a corner to make them bigger!

It would be very nice if I could just paste from my computer's clipboard when I do a screen grab.

This is actually issue #22 (though I appreciate the confusion, given the issue title), so please continue any discussion there. I made a decision a while ago to focus first on embedding external images (via paste or drag or the Image tool), to avoid burdening my Cocreate server with lots of huge image files. See the related quota ideas and this comment.

Unfortunately what I've had to do, is to paste into a StackOverflow answer, which generates an imgur URL, then I paste that URL into the cocreate whiteboard, which is tedious and wastes time when I'm doing live tutorials/lectures.

FWIW, you can also upload directly to Imgur (via their website or a browser extension, though I haven't tried the latter).  I agree that it's tedious, though.

Also it would be nice if I could resize the images that are pasted into the cocreate whiteboard, by dragging a corner.
I just wrote a LaTeX equation with the biggest font-size available, but it was not big enough for it to be a "title", so I would really like to be able to drag my images/equations at a corner to make them bigger!

This is issue #17, so please continue discussion there. I agree that resizing would be valuable; it's just a matter of finding time to implement it.


Error in test script

I'm following the steps in the README. I have the repository cloned and have created the environment. I am in the root directory and the environment is activated. Now I am on step 5 - testing the execution but I get the following error:
$ bash execute/run_local_conda_test.sh
SyntaxError in line 96 of /home/tandem-pas-main/Snakefile:
Unexpected keyword singularity in rule definition (Snakefile, line 96)

I have singularity installed and working.
I have no experience with Snakemake so not sure how to fix.
Any help appreciated! Thank you!

Which snakemake version is installed in the activated environment? It could be that snakemake v8 was installed, which might not support this keyword anymore.


[go_router]: Bad state: Future already completed on context.pop()

Steps to reproduce

Go to this dartpad and run the code locally. (Go_router version 14.6.2)
Click on the Button
Click on the cancel button

Expected results
Loading animation stops
Actual results
Loading animation does not stop because there is some kind of race condition. The CancelScreen is popped shortly before the loading animation dialog is popped which causes the Error. If I put a wait in between (see my comment in code) it works fine.
Not sure if it is linked to this older issue: https://github.com/flutter/flutter/issues/123369
Code sample
Sample dartpad
Code sample ()
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:go_router/go_router.dart';

void main() => runApp(const MyApp());

final pageShellNavigatorKey = GlobalKey<NavigatorState>();
final rootNavigatorKey = GlobalKey<NavigatorState>();

@TypedGoRoute<HomeRoute>(
  path: '/',
  routes: [
    TypedGoRoute<CancelScreenRoute>(path: 'cancel'),
  ],
)
@immutable
class HomeRoute extends GoRouteData {
  @override
  NoTransitionPage<void> buildPage(BuildContext context, GoRouterState state) {
    return NoTransitionPage(
      child: MyHomePage(title: 'title'),
    );
  }
}

@immutable
class CancelScreenRoute extends GoRouteData {
  static final GlobalKey<NavigatorState> $parentNavigatorKey =
      pageShellNavigatorKey;

  @override
  NoTransitionPage<void> buildPage(BuildContext context, GoRouterState state) {
    return NoTransitionPage(
      child: CancelScreen(),
    );
  }
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  static CancelScreenRoute cancelScreenFactory(GoRouterState state) =>
      CancelScreenRoute();

  static HomeRoute homeFactory(GoRouterState state) => HomeRoute();

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
      routerConfig: GoRouter(
        navigatorKey: rootNavigatorKey,
        routes: [
          ShellRoute(
            navigatorKey: pageShellNavigatorKey,
            builder: (context, GoRouterState state, child) {
              return child;
            },
            routes: [
              GoRouteData.$route(path: '/', factory: homeFactory, routes: [
                GoRouteData.$route(
                  path: 'cancel',
                  parentNavigatorKey: pageShellNavigatorKey,
                  factory: cancelScreenFactory,
                ),
              ]),
            ],
          ),
        ],
      ),
    );
  }
}

class MyHomePage extends StatefulWidget {
  final String title;

  const MyHomePage({
    super.key,
    required this.title,
  });

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  Future<bool> showEditDialog() async {
    final partialJson = await GoRouter.of(context).push(
      '/cancel',
    );

    // waiting here fixes it
    /*await Future.delayed(const Duration(seconds: 1), () {
      print('One second has passed.');
    });*/

    return true;
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
                child: Text('button'),
                onPressed: () => wrapEitherWithLoadingAndError(
                      context: context,
                      eitherFunction: showEditDialog,
                      onSuccess: (_, __) {
                        // maybe show success dialog here
                      },
                    )),
          ],
        ),
      ),
    );
  }
}

class CancelScreen extends StatelessWidget {
  const CancelScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: ElevatedButton(
        child: Text('cancel'),
        onPressed: GoRouter.of(context).pop,
      ),
    );
  }
}

class LoadingModal {
  static void showLoadingDialog(
    BuildContext context, {
    bool useRootNavigator = true,
  }) async {
    await showDialog<void>(
      context: context,
      barrierDismissible: false,
      useRootNavigator: useRootNavigator,
      builder: (BuildContext context) {
        return const Dialog(
          backgroundColor: Colors.transparent,
          elevation: 0,
          child: Center(
            child: CircularProgressIndicator(
              valueColor: AlwaysStoppedAnimation<Color>(Colors.black),
            ),
          ),
        );
      },
    );
  }
}

Future<void> wrapEitherWithLoadingAndError<T extends dynamic>({
  required BuildContext context,
  required FutureOr<bool> Function() eitherFunction,
  required FutureOr<void> Function(BuildContext, bool) onSuccess,
}) async {
  LoadingModal.showLoadingDialog(
    context,
    useRootNavigator: false,
  );

  final result = await eitherFunction();

  if (context.mounted) {
    if (GoRouter.of(context).canPop()) {
      GoRouter.of(context).pop(result);
    }

    if (result) {
      onSuccess(context, result);
    }

    return;
  }
}

Logs
Logs
[ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: Bad state: Future already completed
#0      _AsyncCompleter.complete (dart:async/future_impl.dart:84:31)
#1      ImperativeRouteMatch.complete (package:go_router/src/match.dart:456:15)
#2      GoRouterDelegate._completeRouteMatch (package:go_router/src/delegate.dart:171:14)
#3      GoRouterDelegate._handlePopPageWithRouteMatch.<anonymous closure> (package:go_router/src/delegate.dart:151:9)
<asynchronous suspension>

Flutter Doctor output
Doctor output
[✓] Flutter (Channel stable, 3.27.1, on Manjaro Linux 6.1.119-1-MANJARO, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
[✓] Chrome - develop for the web
[✓] Linux toolchain - develop for Linux desktop
[✓] Android Studio (version 2024.2)
[✓] Connected device (2 available)
[✓] Network resources

Reproducible on stable and the master channel.

logs
Restarted application in 61ms.
Restarted application in 231ms.
DartError: Bad state: Future already completed
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 288:3  throw_
dart-sdk/lib/async/future_impl.dart 84:31                                    complete
packages/go_router/src/match.dart 456:5                                      complete
packages/go_router/src/delegate.dart 171:13                                  [_completeRouteMatch]
packages/go_router/src/delegate.dart 151:9                                   <fn>
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 610:19          <fn>
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 634:23          <fn>
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 581:31          <fn>
dart-sdk/lib/async/zone.dart 1676:54                                         runUnary
dart-sdk/lib/async/future_impl.dart 204:18                                   handleValue
dart-sdk/lib/async/future_impl.dart 902:44                                   handleValueCallback
dart-sdk/lib/async/future_impl.dart 931:13                                   _propagateToListeners
dart-sdk/lib/async/future_impl.dart 513:9                                    callback
dart-sdk/lib/async/schedule_microtask.dart 40:11                             _microtaskLoop
dart-sdk/lib/async/schedule_microtask.dart 49:5                              _startMicrotaskLoop
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 186:7           <fn>
Application finished.

Exited.

flutter doctor -v
[✓] Flutter (Channel stable, 3.27.1, on macOS 15.1.1 24B2091 darwin-arm64, locale en-US)
    • Flutter version 3.27.1 on channel stable at /Users/mahesh/Development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 17025dd882 (7 days ago), 2024-12-17 03:23:09 +0900
    • Engine revision cb4b5fff73
    • Dart version 3.6.0
    • DevTools version 2.40.2

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/mahesh/Library/Android/sdk
    • Platform android-35, build-tools 34.0.0
    • ANDROID_HOME = /Users/mahesh/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.11+0-17.0.11b1207.24-11852314)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 16.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 16A242d
    • CocoaPods version 1.16.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2024.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.11+0-17.0.11b1207.24-11852314)

[✓] IntelliJ IDEA Community Edition (version 2021.2.1)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 61.2.4
    • Dart plugin version 212.5080.8

[✓] VS Code (version 1.94.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.100.0

[✓] Connected device (3 available)
    • macOS (desktop)                 • macos                 • darwin-arm64   • macOS 15.1.1 24B2091 darwin-arm64
    • Mac Designed for iPad (desktop) • mac-designed-for-ipad • darwin         • macOS 15.1.1 24B2091 darwin-arm64
    • Chrome (web)                    • chrome                • web-javascript • Google Chrome 128.0.6613.85

[✓] Network resources
    • All expected network resources are available.

• No issues found!

[!] Flutter (Channel master, 3.28.0-1.0.pre.123, on macOS 15.1.1 24B2091 darwin-arm64, locale en-US)
    • Flutter version 3.28.0-1.0.pre.123 on channel master at /Users/mahesh/Development/flutter_master
    ! Warning: `flutter` on your path resolves to /Users/mahesh/Development/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at
      /Users/mahesh/Development/flutter_master. Consider adding /Users/mahesh/Development/flutter_master/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/mahesh/Development/flutter/bin/dart, which is not inside your current Flutter SDK checkout at
      /Users/mahesh/Development/flutter_master. Consider adding /Users/mahesh/Development/flutter_master/bin to the front of your path.
    ! Unknown upstream repository.
      Reinstall Flutter by following instructions at https://flutter.dev/setup.
    • Framework revision a547c7f050 (10 days ago), 2024-12-13 22:11:39 -0500
    • Engine revision 4e4a430bcd
    • Dart version 3.7.0 (build 3.7.0-243.0.dev)
    • DevTools version 2.41.0
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/mahesh/Library/Android/sdk
    • Platform android-35, build-tools 34.0.0
    • ANDROID_HOME = /Users/mahesh/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
      This is the JDK bundled with the latest Android Studio installation on this machine.
      To manually set the JDK path, use: `flutter config --jdk-dir="path/to/jdk"`.
    • Java version OpenJDK Runtime Environment (build 17.0.11+0-17.0.11b1207.24-11852314)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 16.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 16A242d
    • CocoaPods version 1.16.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2024.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.11+0-17.0.11b1207.24-11852314)

[✓] IntelliJ IDEA Community Edition (version 2021.2.1)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 61.2.4
    • Dart plugin version 212.5080.8

[✓] VS Code (version 1.94.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.100.0

[✓] Connected device (3 available)
    • macOS (desktop)                 • macos                 • darwin-arm64   • macOS 15.1.1 24B2091 darwin-arm64
    • Mac Designed for iPad (desktop) • mac-designed-for-ipad • darwin         • macOS 15.1.1 24B2091 darwin-arm64
    • Chrome (web)                    • chrome                • web-javascript • Google Chrome 128.0.6613.85

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.


[PREVIEW] - PDF annotation with event payload

Sing quotes as opposed to " double quotes are the standard for string definitions in javascript followed by the vast majority of projects/frameworks. Although like most standards not always taken up. It is the recommended standard in eslint for javascript.


rework intro page

I sort of took a hatchet to the original content. Not sure if we want this new content as a replacement or as a separate section. I'm happy for you to do what you will with it.

Could you make the "flag eval" section of the images a bit larger? Also, The typical feature flag system image doesn't include evaluation context but I believe it should.

I would like to update the architecture diagram used on the provider page with what you've created. Could you please move it to a less nested folder?

Could you make the "flag eval" section of the images a bit larger? Also, The typical feature flag system image doesn't include evaluation context but I believe it should.

Yep, I can make the ‘flag eval’ text a bit bigger.
I intentionally left some detail out of the first diagram in the hopes of making it a less busy/overwhelming.

I would like to update the architecture diagram used on the provider page with what you've created. Could you please move it to a less nested folder?

Yep happy to. Do you have a specific location that you think would be best?

Yep happy to. Do you have a specific location that you think would be best?

I think moving it up one folder would work.

@beeme1mr I made the "flag eval" part a bit bigger, and moved the images. LMK if you need anything else!


Error when instrumenting a worker using Launch Darkly's edge SDK

I'm using Launch Darkly's edge SDK in a Cloudflare worker. When I add instrumentation to the app I see an error triggered when fetching a Launch Darkly flag (which is stored in a KV store).
{"name":"TypeError","message":"Cannot read properties of undefined (reading 'Symbol(unwrap)')","stack":"TypeError: Cannot read properties of undefined (reading 'Symbol(unwrap)')\n    at isWrapped (worker.js:15817:16)\n    at wrap (worker.js:15820:7)\n    at instrumentKVFn (worker.js:16563:10)\n    at Object.get (worker.js:16570:14)\n    at proxyHandler.get (worker.js:15829:25)\n    at JSON.stringify (<anonymous>)\n    at createOptions (worker.js:13348:105)\n    at new LDClient (worker.js:13358:28)\n    at init (worker.js:13399:10)\n    at init2 (worker.js:13432:10)"}

Here's a minimal repository that reproduces the issue. Follow the readme and you should be able to reproduce the issue. Thanks!

Hey @tygern, thanks so much for the repo, that was super helpful in tracking down the issue. I think Launch Darkly might be adding something to Env, which the library was choking on. But I think I got it solved in the latest 1.0.0-rc.9.. Could you give that a go on your actual app?

Thanks for getting to this so quickly @evanderkoogh. I've updated the sample repo above with the 1.0.0-rc.9 release. There's no error now, but I don't see any traces.
It's possible I'm not configuring the new spanProcessors correctly. I added the BatchTraceSpanProcessor since it looked like that was the previous default. is that correct?

Hey @tygern, there was indeed an issue with rc.9 that prevented traces from showing up in some instances. That should have been fixed in rc.10 that I just released to npm.


seems not work in search mode

titie is summary, in normal mode, works like a charm, not work in search mode

  vim.api.nvim_create_autocmd({ "InsertLeave", "VimEnter", "CmdlineLeave" }, {
      callback = function()
        local current_select = all_trim(vim.fn.system({ C.default_command }))
        vim.api.nvim_set_var("im_select_current_im_select", current_select)

        if current_select ~= C.default_method_selected then
          vim.fn.system({ C.default_command, C.default_method_selected })
        end
      end,
  })

seems like need to add CmdlineLeave

Thank you, this is a case I ignored past.
I'll take a look this weekend.

@ShiChenCong I have updated code command mode, you can find it in latest commit in master branch or this link
Thank you for your issue and sample code.


Downloading a plotly plot as png in python interactive does not appear to actually save anywhere

Environment data

VS Code version: 1.38.0
Extension version (available under the Extensions sidebar): 2019.9.34474
OS and version: MacOS 10.14.6
Python version (& distribution if applicable, e.g. Anaconda): 3.7.4
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): conda
Relevant/affected Python packages and their versions: plotly 4.1.0
Jedi or Language Server? (i.e. what is "python.jediEnabled" set to; more info #3977): True

Expected behaviour
After generating a plotly plot in Python Interactive, I want to save/download the plot as a png. I click on the little camera icon to “download plot as a png”. Two small screens appear saying “taking a snapshot, this may take a few seconds” then “Snapshot succeeded - newplot.png”. I would expect that file to then exist in my workspace.
Actual behaviour
The file does not appear in my workspace, and searching on my computer does not show any file existing.
Steps to reproduce:

Generate plotly plot in python interactive window.

import plotly.express as px

iris = px.data.iris()
px.scatter(iris, x="sepal_width", y="sepal_length")

Click download plot as png.
Unable to find said file.

Logs
Not comfortable dumping those right now because this is my work machine.

I believe this is a limitation of the webview API of VS Code (which the plotly code is running inside of)
It looks like under the covers plotly is doing this:
if(canUseSaveLink) {
            blob = helpers.createBlob(url, format);
            objectUrl = helpers.createObjectURL(blob);

            saveLink.href = objectUrl;
            saveLink.download = name;
            document.body.appendChild(saveLink);
            saveLink.click();

            document.body.removeChild(saveLink);
            helpers.revokeObjectURL(objectUrl);
            blob = null;

            return resolve(name);
        }

(https://github.com/plotly/plotly.js/blob/7e789b35e9daa5ca8243febe0027d29d402ff772/src/snapshot/filesaver.js#L55)
We might be able to override the 'saveLink' on a document node, not sure.

SO is saying yes, we can override the link click. Just need to figure out what to do with it:
document.addEventListener('click', event => {
    let node = event && event.target;
    while (node) {
        if (node.tagName && node.tagName === 'A' && node.href) {
            // Handle click here by posting data back to VS Code
            // for your extension to handle
            vscode.postMessage({ ... });
            event.preventDefault();
            return;
        }
        node = node.parentNode;
    }
}, true);``

Validated


Support for multijob: phases as lanes and status for current build

The multijob integration is working as follows:

you should order the jobs by phase (new order plugin)
when "multijobLanes" is selected in the settings, the "columns" slider disappears, and the jobs will then have a width of 100% / jobs in that phase for the parent multijob
you should not mix jobs from different multijobs projects, as they will be mixed up in the view
when a new multijob run starts, the view is smart enough to show only the job status for that multijob run (thanks @brantone for #98)

Functionally, this implementation looks exactly as I though it should.
I'm do not think it is good enough from a code perspective. I was not able to add any tests, and I think I might be adding an unwanted dependency in some points. Do you have any pointers on that?

Many thanks for your contribution @lpenz , I'll review it as soon as I'm done with the performance issue mentioned in #151


chore: add Node.js 10

Thanks for the PR could you please elaborate why this is useful.

Node.js 10 is the current stable branch, 8 the LTS branch. I sometimes see projects failing on Node.js 10 due to code or dependency issues.
Both, stable and LTS, should be tested against, to always ensure that it works there.

Thanks for this @DanielRuf. Couple of notes about this:
Breakages that happen because of Node.js would most likely occur because of external dependencies breaking. PixiJS is mostly designed for browser and build packaging systems like Webpack and it's not a traditional module run in Node.js directly. I think it's more valid and useful to test against those browser/webpack environments than making sure the build system works on Node 10.
Also, will only consider this change for v5 (next branch), currently we are locking down v4 (dev) for major and critical bug fixes only.

Thanks for this @DanielRuf. Couple of notes about this:
Breakages that happen because of Node.js would most likely occur because of external dependencies breaking. PixiJS is designed for browser and build packaging systems like Webpack and it's not a traditional module run in Node.js directly or utilizing Node.js APIs. I think it's more valid and useful to test against those browser/webpack environments than making sure the build system works on Node 10.
Also, will only consider this change for v5 (next branch), currently we are locking down v4 (dev) for major and critical bug fixes only.

Ok but keep in mind that CI is mainly just for dev (contributors) and many (including me and my team) use Node.js 10 by default.

Also, will only consider this change for v5 (next branch), currently we are locking down v4 (dev) for major and critical bug fixes only.

Why not just change the branch then instead of closing the PR?

Because dev and next are not an easy merge right now.

Also, Travis deploys artifacts (build and docs) to our CDN. Not sure how that works with multiple versions of Node.js, do you?

Because dev and next are not an easy merge right now.

I already switched the branch of the PR ;-)

Also, Travis deploys artifacts (build and docs) to our CDN. Not sure how that works with multiple versions of Node.js, do you?

You can use only and branch and jobs / build matrix feature to do this only with one version / job.

See https://docs.travis-ci.com/user/customizing-the-build#Build-Matrix

DanielRuf changed the base branch from dev  to next  2 hours ago

;-)
And the change can be cleanly applied. But we have to use the build matrix feature then (push another commit to this branch / PR).

We probably only want to deploy using builds and docs generated with Node.js 8. Could you figure out how to add that to the Travis file?

Rebased it now.

Could you add support on Travis only deploying using Node.js 8?

Will do so this week.

Hey @DanielRuf, any update on this?

Hi @bigtimebuddy, sorry for the late answer. I was at enterJS and was a bit busy in the last days. I'll try to prioritize it for this weekend.

I'm going to close to inactivity. If you have time to rework, feel free to re-open.

I'm going to close to inactivity. If you have time to rework, feel free to re-open.

Simple contributors can not reopen closed PRs. Just you can.

If you have time to rework, feel free to re-open.

I would like to if I could, see my previous PR.
I general closing PRs because of inactivity is not so nice as private life and others things often get inbetween and other things, please keep this in your mind ;-)

Just you can.

Or a maintainer with the needed rights.

Sorry. We often close because of unresponsive-ness. Sometimes people just drop off leaving PRs in limbo. Closing keeps from piling up cruft.
This PR is incomplete and needs to address the deployment issue with Travis. If you don’t have time, no problem. Just holler if you want to make changes and we can reopen.

If you don’t have time, no problem. Just holler if you want to make changes and we can reopen.

I would like to if I could