diff --git a/cs/src/Contracts/TunnelServiceProperties.cs b/cs/src/Contracts/TunnelServiceProperties.cs
index 25b4a60c..dfba0116 100644
--- a/cs/src/Contracts/TunnelServiceProperties.cs
+++ b/cs/src/Contracts/TunnelServiceProperties.cs
@@ -41,9 +41,18 @@ public class TunnelServiceProperties
///
///
/// Used for authenticating AAD/MSA users, and service principals outside the AME tenant,
- /// in the PPE and DEV service environments.
+ /// in the PPE service environments.
///
- internal const string NonProdFirstPartyAppId = "54c45752-bacd-424a-b928-652f3eca2b18";
+ internal const string PpeFirstPartyAppId = "54c45752-bacd-424a-b928-652f3eca2b18";
+
+ ///
+ /// First-party app ID: `DEV-VSTunnels`
+ ///
+ ///
+ /// Used for authenticating AAD/MSA users, and service principals outside the AME tenant,
+ /// in the DEV service environment
+ ///
+ internal const string DevFirstPartyAppId = "9c63851a-ba2b-40a5-94bd-890be43b9284";
///
/// Third-party app ID: `tunnels-prod-app-sp`
@@ -116,7 +125,7 @@ private TunnelServiceProperties(
///
public static TunnelServiceProperties Staging { get; } = new TunnelServiceProperties(
$"https://{PpeDnsName}/",
- NonProdFirstPartyAppId,
+ PpeFirstPartyAppId,
PpeThirdPartyAppId,
NonProdGitHubAppClientId);
@@ -125,7 +134,7 @@ private TunnelServiceProperties(
///
public static TunnelServiceProperties Development { get; } = new TunnelServiceProperties(
$"https://{DevDnsName}/",
- NonProdFirstPartyAppId,
+ DevFirstPartyAppId,
DevThirdPartyAppId,
NonProdGitHubAppClientId);
diff --git a/go/tunnels/manager.go b/go/tunnels/manager.go
index 4d1ae05f..0cfdc3b7 100644
--- a/go/tunnels/manager.go
+++ b/go/tunnels/manager.go
@@ -25,14 +25,14 @@ var ServiceProperties = TunnelServiceProperties{
var PpeServiceProperties = TunnelServiceProperties{
ServiceURI: fmt.Sprintf("https://%s/", ppeDnsName),
- ServiceAppID: nonProdFirstPartyAppID,
+ ServiceAppID: ppeFirstPartyAppID,
ServiceInternalAppID: ppeThirdPartyAppID,
GitHubAppClientID: nonProdGitHubAppClientID,
}
var DevServiceProperties = TunnelServiceProperties{
ServiceURI: fmt.Sprintf("https://%s/", devDnsName),
- ServiceAppID: nonProdFirstPartyAppID,
+ ServiceAppID: devFirstPartyAppID,
ServiceInternalAppID: devThirdPartyAppID,
GitHubAppClientID: nonProdGitHubAppClientID,
}
diff --git a/go/tunnels/tunnel_service_properties.go b/go/tunnels/tunnel_service_properties.go
index 6eddbcf6..4429096b 100644
--- a/go/tunnels/tunnel_service_properties.go
+++ b/go/tunnels/tunnel_service_properties.go
@@ -47,8 +47,14 @@ var prodFirstPartyAppID = "46da2f7e-b5ef-422a-88d4-2a7f9de6a0b2"
// First-party app ID: `Visual Studio Tunnel Service - Test`
//
// Used for authenticating AAD/MSA users, and service principals outside the AME tenant,
-// in the PPE and DEV service environments.
-var nonProdFirstPartyAppID = "54c45752-bacd-424a-b928-652f3eca2b18"
+// in the PPE service environments.
+var ppeFirstPartyAppID = "54c45752-bacd-424a-b928-652f3eca2b18"
+
+// First-party app ID: `DEV-VSTunnels`
+//
+// Used for authenticating AAD/MSA users, and service principals outside the AME tenant,
+// in the DEV service environment
+var devFirstPartyAppID = "9c63851a-ba2b-40a5-94bd-890be43b9284"
// Third-party app ID: `tunnels-prod-app-sp`
//
diff --git a/go/tunnels/tunnels.go b/go/tunnels/tunnels.go
index 0435a614..1fd4e93d 100644
--- a/go/tunnels/tunnels.go
+++ b/go/tunnels/tunnels.go
@@ -10,7 +10,7 @@ import (
"github.com/rodaine/table"
)
-const PackageVersion = "0.1.8"
+const PackageVersion = "0.1.9"
func (tunnel *Tunnel) requestObject() (*Tunnel, error) {
convertedTunnel := &Tunnel{
diff --git a/java/src/main/java/com/microsoft/tunnels/contracts/TunnelServiceProperties.java b/java/src/main/java/com/microsoft/tunnels/contracts/TunnelServiceProperties.java
index dec22fc3..375e8cad 100644
--- a/java/src/main/java/com/microsoft/tunnels/contracts/TunnelServiceProperties.java
+++ b/java/src/main/java/com/microsoft/tunnels/contracts/TunnelServiceProperties.java
@@ -44,9 +44,17 @@ public class TunnelServiceProperties {
* First-party app ID: `Visual Studio Tunnel Service - Test`
*
* Used for authenticating AAD/MSA users, and service principals outside the AME
- * tenant, in the PPE and DEV service environments.
+ * tenant, in the PPE service environments.
*/
- static final String nonProdFirstPartyAppId = "54c45752-bacd-424a-b928-652f3eca2b18";
+ static final String ppeFirstPartyAppId = "54c45752-bacd-424a-b928-652f3eca2b18";
+
+ /**
+ * First-party app ID: `DEV-VSTunnels`
+ *
+ * Used for authenticating AAD/MSA users, and service principals outside the AME
+ * tenant, in the DEV service environment
+ */
+ static final String devFirstPartyAppId = "9c63851a-ba2b-40a5-94bd-890be43b9284";
/**
* Third-party app ID: `tunnels-prod-app-sp`
diff --git a/java/src/main/java/com/microsoft/tunnels/contracts/TunnelServicePropertiesStatics.java b/java/src/main/java/com/microsoft/tunnels/contracts/TunnelServicePropertiesStatics.java
index 7366dc6f..1ce3c514 100644
--- a/java/src/main/java/com/microsoft/tunnels/contracts/TunnelServicePropertiesStatics.java
+++ b/java/src/main/java/com/microsoft/tunnels/contracts/TunnelServicePropertiesStatics.java
@@ -22,7 +22,7 @@ class TunnelServicePropertiesStatics {
*/
static final TunnelServiceProperties staging = new TunnelServiceProperties(
"https://" + TunnelServiceProperties.ppeDnsName + "/",
- TunnelServiceProperties.nonProdFirstPartyAppId,
+ TunnelServiceProperties.ppeFirstPartyAppId,
TunnelServiceProperties.ppeThirdPartyAppId,
TunnelServiceProperties.nonProdGitHubAppClientId);
@@ -31,7 +31,7 @@ class TunnelServicePropertiesStatics {
*/
static final TunnelServiceProperties development = new TunnelServiceProperties(
"https://" + TunnelServiceProperties.devDnsName + "/",
- TunnelServiceProperties.nonProdFirstPartyAppId,
+ TunnelServiceProperties.devFirstPartyAppId,
TunnelServiceProperties.devThirdPartyAppId,
TunnelServiceProperties.nonProdGitHubAppClientId);
diff --git a/rs/src/contracts/tunnel.rs b/rs/src/contracts/tunnel.rs
index 3e71632f..16a78133 100644
--- a/rs/src/contracts/tunnel.rs
+++ b/rs/src/contracts/tunnel.rs
@@ -2,12 +2,12 @@
// Licensed under the MIT license.
// Generated from ../../../cs/src/Contracts/Tunnel.cs
+use chrono::{DateTime, Utc};
use crate::contracts::TunnelAccessControl;
use crate::contracts::TunnelEndpoint;
use crate::contracts::TunnelOptions;
use crate::contracts::TunnelPort;
use crate::contracts::TunnelStatus;
-use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
diff --git a/rs/src/contracts/tunnel_access_control_entry.rs b/rs/src/contracts/tunnel_access_control_entry.rs
index fa7f985a..b36863a9 100644
--- a/rs/src/contracts/tunnel_access_control_entry.rs
+++ b/rs/src/contracts/tunnel_access_control_entry.rs
@@ -2,8 +2,8 @@
// Licensed under the MIT license.
// Generated from ../../../cs/src/Contracts/TunnelAccessControlEntry.cs
-use crate::contracts::TunnelAccessControlEntryType;
use chrono::{DateTime, Utc};
+use crate::contracts::TunnelAccessControlEntryType;
use serde::{Deserialize, Serialize};
// Data contract for an access control entry on a `Tunnel` or `TunnelPort`.
diff --git a/rs/src/contracts/tunnel_constraints.rs b/rs/src/contracts/tunnel_constraints.rs
index 142bc27f..fd4eb0e5 100644
--- a/rs/src/contracts/tunnel_constraints.rs
+++ b/rs/src/contracts/tunnel_constraints.rs
@@ -110,7 +110,7 @@ pub const TUNNEL_ALIAS_PATTERN: &str = r#"[0123456789bcdfghjklmnpqrstvwxz]{3,60}
pub const TUNNEL_NAME_PATTERN: &str = r#"([a-z0-9][a-z0-9-]{1,58}[a-z0-9])|(^$)"#;
// Regular expression that can match or validate tunnel or port labels.
-pub const LABEL_PATTERN: &str = r"[\w-=]{1,50}";
+pub const LABEL_PATTERN: &str = r#"[\w-=]{1,50}"#;
// Regular expression that can match or validate tunnel domains.
//
diff --git a/rs/src/contracts/tunnel_environments.rs b/rs/src/contracts/tunnel_environments.rs
index 224f5119..cfd00c0f 100644
--- a/rs/src/contracts/tunnel_environments.rs
+++ b/rs/src/contracts/tunnel_environments.rs
@@ -24,7 +24,7 @@ pub fn env_staging() -> TunnelServiceProperties {
pub fn env_development() -> TunnelServiceProperties {
TunnelServiceProperties {
service_uri: format!("https://{}", DEV_DNS_NAME),
- service_app_id: NON_PROD_FIRST_PARTY_APP_ID.to_owned(),
+ service_app_id: DEV_FIRST_PARTY_APP_ID.to_owned(),
service_internal_app_id: DEV_THIRD_PARTY_APP_ID.to_owned(),
github_app_client_id: NON_PROD_GITHUB_APP_CLIENT_ID.to_owned(),
}
diff --git a/rs/src/contracts/tunnel_port.rs b/rs/src/contracts/tunnel_port.rs
index 89611508..1fd3e41a 100644
--- a/rs/src/contracts/tunnel_port.rs
+++ b/rs/src/contracts/tunnel_port.rs
@@ -43,7 +43,7 @@ pub struct TunnelPort {
// A client that connects to a tunnel (by ID or name) without specifying a port number
// will connect to the default port for the tunnel, if a default is configured. Or if
// the tunnel has only one port then the single port is the implicit default.
- //
+ //
// Selection of a default port for a connection also depends on matching the
// connection to the port `TunnelPort.Protocol`, so it is possible to configure
// separate defaults for distinct protocols like `TunnelProtocol.Http` and
diff --git a/rs/src/contracts/tunnel_service_properties.rs b/rs/src/contracts/tunnel_service_properties.rs
index 53486b37..6097876e 100644
--- a/rs/src/contracts/tunnel_service_properties.rs
+++ b/rs/src/contracts/tunnel_service_properties.rs
@@ -49,8 +49,14 @@ pub const PROD_FIRST_PARTY_APP_ID: &str = "46da2f7e-b5ef-422a-88d4-2a7f9de6a0b2"
// First-party app ID: `Visual Studio Tunnel Service - Test`
//
// Used for authenticating AAD/MSA users, and service principals outside the AME tenant,
-// in the PPE and DEV service environments.
-pub const NON_PROD_FIRST_PARTY_APP_ID: &str = "54c45752-bacd-424a-b928-652f3eca2b18";
+// in the PPE service environments.
+pub const PPE_FIRST_PARTY_APP_ID: &str = "54c45752-bacd-424a-b928-652f3eca2b18";
+
+// First-party app ID: `DEV-VSTunnels`
+//
+// Used for authenticating AAD/MSA users, and service principals outside the AME tenant,
+// in the DEV service environment
+pub const DEV_FIRST_PARTY_APP_ID: &str = "9c63851a-ba2b-40a5-94bd-890be43b9284";
// Third-party app ID: `tunnels-prod-app-sp`
//
diff --git a/ts/src/connections/package.json b/ts/src/connections/package.json
index ecf57b9c..9a2121ff 100644
--- a/ts/src/connections/package.json
+++ b/ts/src/connections/package.json
@@ -18,8 +18,8 @@
"buffer": "^5.2.1",
"debug": "^4.1.1",
"vscode-jsonrpc": "^4.0.0",
- "@microsoft/dev-tunnels-contracts": ">1.1.24",
- "@microsoft/dev-tunnels-management": ">1.1.24",
+ "@microsoft/dev-tunnels-contracts": ">1.1.26",
+ "@microsoft/dev-tunnels-management": ">1.1.26",
"@microsoft/dev-tunnels-ssh": "^3.11.36",
"@microsoft/dev-tunnels-ssh-tcp": "^3.11.36",
"uuid": "^3.3.3",
diff --git a/ts/src/contracts/tunnelServiceProperties.ts b/ts/src/contracts/tunnelServiceProperties.ts
index 2248e428..c80a81e2 100644
--- a/ts/src/contracts/tunnelServiceProperties.ts
+++ b/ts/src/contracts/tunnelServiceProperties.ts
@@ -65,9 +65,17 @@ export const prodFirstPartyAppId = '46da2f7e-b5ef-422a-88d4-2a7f9de6a0b2';
* First-party app ID: `Visual Studio Tunnel Service - Test`
*
* Used for authenticating AAD/MSA users, and service principals outside the AME tenant,
- * in the PPE and DEV service environments.
+ * in the PPE service environments.
*/
-export const nonProdFirstPartyAppId = '54c45752-bacd-424a-b928-652f3eca2b18';
+export const ppeFirstPartyAppId = '54c45752-bacd-424a-b928-652f3eca2b18';
+
+/**
+ * First-party app ID: `DEV-VSTunnels`
+ *
+ * Used for authenticating AAD/MSA users, and service principals outside the AME tenant,
+ * in the DEV service environment
+ */
+export const devFirstPartyAppId = '9c63851a-ba2b-40a5-94bd-890be43b9284';
/**
* Third-party app ID: `tunnels-prod-app-sp`
diff --git a/ts/src/contracts/tunnelServicePropertiesStatics.ts b/ts/src/contracts/tunnelServicePropertiesStatics.ts
index da15374d..2f715fcc 100644
--- a/ts/src/contracts/tunnelServicePropertiesStatics.ts
+++ b/ts/src/contracts/tunnelServicePropertiesStatics.ts
@@ -4,7 +4,8 @@
import {
TunnelServiceProperties as ITunnelServiceProperties,
prodFirstPartyAppId,
- nonProdFirstPartyAppId,
+ ppeFirstPartyAppId,
+ devFirstPartyAppId,
prodThirdPartyAppId,
ppeThirdPartyAppId,
devThirdPartyAppId,
@@ -30,7 +31,7 @@ export const production = {
*/
export const staging = {
serviceUri: `https://${ppeDnsName}/`,
- serviceAppId: nonProdFirstPartyAppId,
+ serviceAppId: ppeFirstPartyAppId,
serviceInternalAppId: ppeThirdPartyAppId,
gitHubAppClientId: nonProdGitHubAppClientId,
};
@@ -40,7 +41,7 @@ export const staging = {
*/
export const development = {
serviceUri: `https://${devDnsName}/`,
- serviceAppId: nonProdFirstPartyAppId,
+ serviceAppId: devFirstPartyAppId,
serviceInternalAppId: devThirdPartyAppId,
gitHubAppClientId: nonProdGitHubAppClientId,
};
diff --git a/ts/src/management/package.json b/ts/src/management/package.json
index 176ba5db..758d67b3 100644
--- a/ts/src/management/package.json
+++ b/ts/src/management/package.json
@@ -18,7 +18,7 @@
"buffer": "^5.2.1",
"debug": "^4.1.1",
"vscode-jsonrpc": "^4.0.0",
- "@microsoft/dev-tunnels-contracts": ">1.1.24",
+ "@microsoft/dev-tunnels-contracts": ">1.1.26",
"axios": "^1.6.6"
}
}