Outil : create_workspace
Crée un espace de travail de développement dans un dépôt Dataform donné.
Un espace de travail est une version isolée et modifiable du dépôt. Utilisez un espace de travail lorsque vous devez créer ou réviser du code de pipeline dans plusieurs fichiers et le valider avant de l'envoyer. Modifiez les fichiers de l'espace de travail avec les outils write_file et remove_file, enregistrez le résultat avec l'outil commit_workspace_changes, puis publiez les modifications validées dans le dépôt avec l'outil push_git_commits.
N'utilisez pas l'outil commit_repository_changes pour le développement de pipelines standards. Cet outil écrit directement dans le dépôt. Il est destiné uniquement aux composants monofichiers tels que les notebooks ou les requêtes enregistrées. Il échoue sur les dépôts connectés à un hôte Git distant.
Prérequis : le dépôt parent doit exister.
La valeur du paramètre parent doit être au format projects/{project_id}/locations/{location}/repositories/{repository}.
La valeur du paramètre workspace_id correspond à l'ID à utiliser pour l'espace de travail.
La valeur du paramètre workspace contient l'espace de travail à créer.
L'exemple de code suivant montre comment utiliser curl pour appeler l'outil MCP create_workspace.
| Requête curl |
|---|
curl --location 'https://dataform.googleapis.com/mcp' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "create_workspace", "arguments": { // Provide these details according to the MCP tool specification. } }, "jsonrpc": "2.0", "id": 1 }' |
Schéma d'entrée
Message de requête CreateWorkspace.
CreateWorkspaceRequest
| Représentation JSON |
|---|
{
"parent": string,
"workspace": {
object ( |
| Champs | |
|---|---|
parent |
Obligatoire. Dépôt dans lequel créer l'espace de travail. Il doit respecter le format |
workspace |
Obligatoire. Espace de travail à créer. |
workspaceId |
Obligatoire. ID à utiliser pour l'espace de travail, qui constituera le composant final du nom de ressource de l'espace de travail. |
Espace de travail
| Représentation JSON |
|---|
{ "name": string, "createTime": string, "dataEncryptionState": { object ( |
| Champs | |
|---|---|
name |
Identifiant. Nom de l'espace de travail. |
createTime |
Uniquement en sortie. Code temporel de la création de l'espace de travail. Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : |
dataEncryptionState |
Uniquement en sortie. État de chiffrement des données d'un dépôt Git si cet espace de travail est protégé par une clé KMS. |
privateResourceMetadata |
Uniquement en sortie. Métadonnées indiquant si cette ressource est de portée utilisateur. Pour les ressources |
depth |
Facultatif. Uniquement en entrée. Immuable. Profondeur maximale du dépôt Git à extraire pour cet espace de travail. Si elle est définie et supérieure à 0, le dépôt Git sera créé en tant que clone superficiel avec la profondeur indiquée. Sinon, un clone complet sera effectué. Ce champ n'est disponible que pour les dépôts GitHub, GitLab et propriétaires pour lesquels la gestion des branches est activée. |
Champ d'union
|
|
internalMetadata |
Uniquement en sortie. Toutes les informations de métadonnées utilisées en interne pour diffuser la ressource. Par exemple : codes temporels, indicateurs, champs d'état, etc. Le format de ce champ est une chaîne JSON. |
Champ d'union
|
|
disableMoves |
Facultatif. Si la valeur est définie sur "true", les espaces de travail ne seront pas déplacés si leur dépôt associé l'est. Il sera supprimé. |
Champ d'union
|
|
originalBranch |
Facultatif. Uniquement en entrée. Immuable. Nom de la branche en amont par défaut pour toutes les opérations d'extraction/d'envoi dans le dépôt distant de cet espace de travail. Si ce champ est vide, la branche HEAD du dépôt sera utilisée. |
Champ d'union
|
|
enableBranchManagement |
Immuable. Contrôle l'activation de l'extraction de branche pour l'espace de travail. Lorsque cette valeur est définie sur "True", l'espace de travail est autorisé à extraire des branches. |
Champ d'union
|
|
shallow |
Uniquement en sortie. Si la valeur est "true", l'espace de travail a été créé en tant que clone superficiel. La valeur est définie sur "true" si le champ "depth" (profondeur) est défini sur une valeur supérieure à 0, et sur "false" dans le cas contraire. |
Horodatage
| Représentation JSON |
|---|
{ "seconds": string, "nanos": integer } |
| Champs | |
|---|---|
seconds |
Représente les secondes de l'heure UTC à partir de l'epoch Unix 1970-01-01T00:00:00Z. La valeur doit être comprise entre -62135596800 et 253402300799 inclus (ce qui correspond à 0001-01-01T00:00:00Z et 9999-12-31T23:59:59Z). |
nanos |
Fractions de secondes non négatives avec une précision de l'ordre de la nanoseconde. Ce champ correspond à la partie en nanosecondes de la durée, et non à une alternative aux secondes. Les valeurs de secondes négatives avec des fractions doivent toujours comporter des valeurs de nanosecondes non négatives comptabilisées dans le temps. La valeur doit être comprise entre 0 et 999 999 999 inclus. |
DataEncryptionState
| Représentation JSON |
|---|
{ "kmsKeyVersionName": string } |
| Champs | |
|---|---|
kmsKeyVersionName |
Obligatoire. Nom de la version de clé KMS avec laquelle les données d'une ressource sont chiffrées. |
PrivateResourceMetadata
| Représentation JSON |
|---|
{ "userScoped": boolean } |
| Champs | |
|---|---|
userScoped |
Uniquement en sortie. Si la valeur est "true", cette ressource est de portée utilisateur, ce qui signifie qu'elle est associée à un espace de travail ou provient d'un espace de travail. |
Schéma de sortie
Représente un espace de travail Git Dataform.
Espace de travail
| Représentation JSON |
|---|
{ "name": string, "createTime": string, "dataEncryptionState": { object ( |
| Champs | |
|---|---|
name |
Identifiant. Nom de l'espace de travail. |
createTime |
Uniquement en sortie. Code temporel de la création de l'espace de travail. Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : |
dataEncryptionState |
Uniquement en sortie. État de chiffrement des données d'un dépôt Git si cet espace de travail est protégé par une clé KMS. |
privateResourceMetadata |
Uniquement en sortie. Métadonnées indiquant si cette ressource est de portée utilisateur. Pour les ressources |
depth |
Facultatif. Uniquement en entrée. Immuable. Profondeur maximale du dépôt Git à extraire pour cet espace de travail. Si elle est définie et supérieure à 0, le dépôt Git sera créé en tant que clone superficiel avec la profondeur indiquée. Sinon, un clone complet sera effectué. Ce champ n'est disponible que pour les dépôts GitHub, GitLab et propriétaires pour lesquels la gestion des branches est activée. |
Champ d'union
|
|
internalMetadata |
Uniquement en sortie. Toutes les informations de métadonnées utilisées en interne pour diffuser la ressource. Par exemple : codes temporels, indicateurs, champs d'état, etc. Le format de ce champ est une chaîne JSON. |
Champ d'union
|
|
disableMoves |
Facultatif. Si la valeur est définie sur "true", les espaces de travail ne seront pas déplacés si leur dépôt associé l'est. Il sera supprimé. |
Champ d'union
|
|
originalBranch |
Facultatif. Uniquement en entrée. Immuable. Nom de la branche en amont par défaut pour toutes les opérations d'extraction/d'envoi dans le dépôt distant de cet espace de travail. Si ce champ est vide, la branche HEAD du dépôt sera utilisée. |
Champ d'union
|
|
enableBranchManagement |
Immuable. Contrôle l'activation de l'extraction de branche pour l'espace de travail. Lorsque cette valeur est définie sur "True", l'espace de travail est autorisé à extraire des branches. |
Champ d'union
|
|
shallow |
Uniquement en sortie. Si la valeur est "true", l'espace de travail a été créé en tant que clone superficiel. La valeur est définie sur "true" si le champ "depth" (profondeur) est défini sur une valeur supérieure à 0, et sur "false" dans le cas contraire. |
Horodatage
| Représentation JSON |
|---|
{ "seconds": string, "nanos": integer } |
| Champs | |
|---|---|
seconds |
Représente les secondes de l'heure UTC à partir de l'epoch Unix 1970-01-01T00:00:00Z. La valeur doit être comprise entre -62135596800 et 253402300799 inclus (ce qui correspond à 0001-01-01T00:00:00Z et 9999-12-31T23:59:59Z). |
nanos |
Fractions de secondes non négatives avec une précision de l'ordre de la nanoseconde. Ce champ correspond à la partie en nanosecondes de la durée, et non à une alternative aux secondes. Les valeurs de secondes négatives avec des fractions doivent toujours comporter des valeurs de nanosecondes non négatives comptabilisées dans le temps. La valeur doit être comprise entre 0 et 999 999 999 inclus. |
DataEncryptionState
| Représentation JSON |
|---|
{ "kmsKeyVersionName": string } |
| Champs | |
|---|---|
kmsKeyVersionName |
Obligatoire. Nom de la version de clé KMS avec laquelle les données d'une ressource sont chiffrées. |
PrivateResourceMetadata
| Représentation JSON |
|---|
{ "userScoped": boolean } |
| Champs | |
|---|---|
userScoped |
Uniquement en sortie. Si la valeur est "true", cette ressource est de portée utilisateur, ce qui signifie qu'elle est associée à un espace de travail ou provient d'un espace de travail. |
Annotations d'outils
Les annotations d'outil sont envoyées aux clients MCP pour décrire le risque de base d'un outil donné. La plupart des clients traitent ces indices comme non fiables, mais ils peuvent être utilisés pour déterminer quand un message de confirmation peut être envoyé à un utilisateur.
En plus de la chaîne de titre, les indications booléennes suivantes sont définies comme suit :
readOnlyHint: si la valeur est "true", l'outil ne modifie pas son environnement. Valeur par défaut : "false".destructiveHint: si la valeur est "true", l'outil peut effectuer des actions destructrices. Si la valeur est "false", l'outil ne peut effectuer que des actions d'ajout. Valeur par défaut : "true".idempotentHint: si la valeur est "true", appeler l'outil à plusieurs reprises avec les mêmes arguments n'aura aucun effet supplémentaire sur son environnement. Valeur par défaut : "false".openWorldHint: si la valeur est "true", l'outil peut interagir avec un "monde ouvert" d'entités externes. Si la valeur est "false", l'outil ne peut interagir qu'avec des entités internes. Par exemple, un outil de recherche Web serait en monde ouvert, tandis qu'un outil de mémoire ne le serait pas.
Indication destructive : ❌ | Indication d'idempotence : ❌ | Indication de lecture seule : ❌ | Indication de monde ouvert : ❌