Ressource de données (API REST Azure Data Catalog)
Annoter
Annote une ressource.
etag
la propriété est facultative et est utilisée pour le contrôle d’accès concurrentiel.
POST https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}/{view_item_id}/{nested_view_name}?api-version={api-version}
Notes
Certaines implémentations de client HTTP peuvent émettre automatiquement des demandes en réponse à une erreur 302 du serveur, mais en général supprimer les en-têtes d’autorisation de la demande. Étant donné que l’en-tête d’autorisation est nécessaire pour effectuer des demandes à ADC, vous devez vous assurer que l’en-tête d’autorisation est toujours fourni lors de la réexécriture d’une demande vers un emplacement de redirection spécifié par ADC. Voici un exemple de code illustrant cela à l’aide de l’objet HttpWebRequest .NET.
Paramètres d’URI
Nom | Description | Type de données |
---|---|---|
catalog_name | Nom du catalogue ou « DefaultCatalog » pour utiliser le catalogue par défaut. | String |
view_name | Nom de l’affichage des ressources de données. | String |
view_item_id | ID d’un élément View. | String |
nested_view_name | Nom d’un élément d’affichage imbriqué. | String |
api-version | Version de l'API. | String |
Exemple : Ajouter des experts
POST https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0...1be45ecd462a/experts?api-version=2016-03-30
En-tête
Content-Type: application/json
x-ms-client-request-id: 13d9f885…a92d-8a9f8cf9f707
Authorization: Bearer eyJ0eX ... FWSXfwtQ
Corps
{
"etag": "59085E253E2244A59F664A2F447E675E",
"properties":
{
"fromSourceSystem": false,
"key": "22c3fa019b3945dc97143ebc3ad74cbf--1111fa019b3945dc97143ebc3ad74cbf",
"expert":
{
"upn": "expert1@contoso.com",
"objectId": "1111fa019b3945dc97143ebc3ad74cbf"
},
}
}
Exemple : Ajouter des balises de terme de glossaire
POST https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0...1be45ecd462a/termTags?api-version=2016-03-30
En-tête
Content-Type: application/json
x-ms-client-request-id: 13d9f885…a92d-8a9f8cf9f707
Authorization: Bearer eyJ0eX ... FWSXfwtQ
Corps
{
"etag": "59085E253E2244A59F664A2F447E675E",
"properties":
{
"fromSourceSystem": false,
"key": "22c3fa019b3945dc97143ebc3ad74cbf--1111fa019b3945dc97143ebc3ad74cbf",
"termId": "https://test.catalog.com/catalogs/DefaultCatalog/glossaries/DefaultGlossary/terms/ed975c9d-2fb2-49a3-b6f2-222389cefd7e",
}
}
Exemple : Ajouter des balises de terme de colonne de glossaire
POST https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0...1be45ecd462a/columnTermTags?api-version=2016-03-30
En-tête
Content-Type: application/json
x-ms-client-request-id: 13d9f885…a92d-8a9f8cf9f707
Authorization: Bearer eyJ0eX ... FWSXfwtQ
body
{
"etag": "59085E253E2244A59F664A2F447E675E",
"properties":
{
"fromSourceSystem": false,
"key": "22c3fa019b3945dc97143ebc3ad74cbf--1111fa019b3945dc97143ebc3ad74cbf",
"columnName": "Col1",
"termId": "https://test.catalog.com/catalogs/DefaultCatalog/glossaries/DefaultGlossary/terms/ed975c9d-2fb2-49a3-b6f2-222389cefd7e",
}
}
response
Codes d’état
Code | Description |
---|---|
201 | Créé. La demande a été satisfaite et une nouvelle annotation a été créée. |
200 | OK. Une annotation existante a été mise à jour. |
412 | Échec de la condition préalable. La demande a été annulée en raison de l’incompatibilité ETag dans au moins un élément. |
Content-Type
application/json
En-tête
HTTP/1.1 201 Created
x-ms-request-id: 72cf83c0…058f2b2a0c68
Location: https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0...1be45ecd462a/experts/22c3fa019b3945dc97143ebc3ad74cbf-1111fa019b3945dc97143ebc3ad74cbf
Inscrire ou mettre à jour
Inscrit une nouvelle ressource de données ou met à jour une ressource existante si une ressource avec la même identité existe déjà. Les éléments peuvent éventuellement contenir des valeurs ETag pour activer le contrôle d’accès concurrentiel optimiste pour eux.
Exemple de prise en main sur GitHub
Requête
POST https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}?api-version={api-version}
Notes
Certaines implémentations de client HTTP peuvent émettre automatiquement des demandes en réponse à une erreur 302 du serveur, mais en général supprimer les en-têtes d’autorisation de la demande. Étant donné que l’en-tête d’autorisation est nécessaire pour effectuer des demandes à ADC, vous devez vous assurer que l’en-tête d’autorisation est toujours fourni lors de la réexécriture d’une demande vers un emplacement de redirection spécifié par ADC. Voici un exemple de code illustrant cela à l’aide de l’objet HttpWebRequest .NET.
Paramètres d’URI
Nom | Description | Type de données |
---|---|---|
catalog_name | Nom du catalogue ou « DefaultCatalog » pour utiliser le catalogue par défaut. | String |
view_name | Nom de l’affichage des ressources de données. | String |
api-version | Version de l'API. | String |
Exemple POST
POST https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables?api-version=2016-03-30
En-tête
Content-Type: application/json
x-ms-client-request-id: 13c45c14…46ab469473f0
Authorization: Bearer eyJ0eX ... FWSXfwtQ
Exemple de corps
{
"roles": [
{
"role": "Contributor",
"members": [
{
"objectId": "00000000-0000-0000-0000-000000000201"
}
]
}
],
"properties": {
"fromSourceSystem": true,
"name": "Orders",
"dataSource": {
"sourceType": "SQL Server",
"objectType": "Table"
},
"dsl": {
"protocol": "tds",
"authentication": "windows",
"address": {
"server": "MyServer.contoso.com",
"database": "NORTHWND",
"schema": "dbo",
"object": "Orders"
}
},
"lastRegisteredBy": {
"upn": "user1@contoso.com",
"firstName": "User1FirstName",
"lastName": "User1LastName"
},
"containerId": "containers/3b2c00be-...-1f15367f54e4"
},
"annotations": {
"schema": {
"roles": [
{
"role": "Contributor",
"members": [
{
"objectId": "00000000-0000-0000-0000-000000000201"
}
]
}
],
"properties": {
"fromSourceSystem": true,
"columns": [
{
"name": "OrderID",
"isNullable": false,
"type": "int",
"maxLength": 4,
"precision": 10
},
{
"name": "CustomerID",
"isNullable": true,
"type": "nchar",
"maxLength": 10,
"precision": 0
},
{
"name": "EmployeeID",
"isNullable": true,
"type": "int",
"maxLength": 4,
"precision": 10
},
{
"name": "OrderDate",
"isNullable": true,
"type": "datetime",
"maxLength": 8,
"precision": 23
}
]
}
}
}
}
response
Codes d’état
Code | Description |
---|---|
200 | OK. Une ressource existante a été mise à jour. |
201 | Créé. La demande a été satisfaite et une nouvelle ressource a été créée. |
412 | Échec de la condition préalable. La demande a été annulée en raison de l’incompatibilité ETag dans au moins un élément. |
Content-Type
application/json
En-tête
HTTP/1.1 201 Created
x-ms-request-id: 72cf83c0…058f2b2a0c68
Location: https://e2255231-6dd3-1a0d-a6d8-7fc96dd780c2-mycatalog.api.azuredatacatalog.com/catalogs/MyCatalog/views/tables/042297b0…1be45ecd462a
Sources de données prises en charge
Pour obtenir la liste des objets sources de données actuellement pris en charge, consultez Azure Data Catalog sources de données prises en charge.
Exemple
Cet exemple vous montre comment obtenir un jeton d’accès Azure AD et effectuer une opération d’inscription .
Note Cet exemple utilise le mot clé DefaultCatalog pour mettre à jour le catalogue par défaut de l’utilisateur. Vous pouvez également spécifier le nom réel du catalogue. Pour trouver le nom du catalogue, connectez-vous à Azure Data Catalog, puis choisissez Utilisateur. Le nom du catalogue s’affiche.
using System;
using System.Net;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System.IO;
...
//To learn how to register a client app and get a Client ID,
// see https://msdn.microsoft.com/library/azure/mt403303.aspx#clientID
static string clientIDFromAzureAppRegistration = "{clientID}";
static void Main(string[] args)
{
//Note: This example uses the "DefaultCatalog" keyword to update the user's default catalog. You may alternately
//specify the actual catalog name.
string catalogName = "DefaultCatalog";
string registerJson = Register(catalogName, OrdersJsonWithEveryoneContributor());
Console.ReadLine();
}
static AuthenticationResult AccessToken()
{
//Get access token:
// To call a Data Catalog REST operation, create an instance of AuthenticationContext and call AcquireToken
// AuthenticationContext is part of the Active Directory Authentication Library NuGet package
// To install the Active Directory Authentication Library NuGet package in Visual Studio,
// run "Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory" from the nuget Package Manager Console.
//Resource Uri for Data Catalog API
string resourceUri = "https://api.azuredatacatalog.com";
//To learn how to register a client app and get a Client ID, see https://msdn.microsoft.com/library/azure/mt403303.aspx#clientID
string clientId = clientIDFromAzureAppRegistration;
//A redirect uri gives AAD more details about the specific application that it will authenticate.
//Since a client app does not have an external service to redirect to, this Uri is the standard placeholder for a client app.
string redirectUri = "https://login.live.com/oauth20_desktop.srf";
// Create an instance of AuthenticationContext to acquire an Azure access token
// OAuth2 authority Uri
string authorityUri = "https://login.windows.net/common/oauth2/authorize";
AuthenticationContext authContext = new AuthenticationContext(authorityUri);
// Call AcquireToken to get an Azure token from Azure Active Directory token issuance endpoint
// AcquireToken takes a Client Id that Azure AD creates when you register your client app.
return authContext.AcquireToken(resourceUri, clientId, new Uri(redirectUri), PromptBehavior.RefreshSession);
}
static string Register(string catalogName, string json)
{
string location = string.Empty;
string fullUri = string.Format("https://api.azuredatacatalog.com/catalogs/{0}/views/{1}?api-version=2016-03-30", catalogName, viewType);
//Create a POST WebRequest as a Json content type
HttpWebRequest request = System.Net.WebRequest.Create(fullUri) as System.Net.HttpWebRequest;
request.KeepAlive = true;
request.Method = "POST";
try
{
var response = SetRequestAndGetResponse(request, json);
//Get the Response header which contains the data asset ID
//The format is: tables/{data asset ID}
location = httpWebResponse.Headers["Location"];
}
catch (WebException ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.Status);
if (ex.Response != null)
{
// can use ex.Response.Status, .StatusDescription
if (ex.Response.ContentLength != 0)
{
using (var stream = ex.Response.GetResponseStream())
{
using (var reader = new StreamReader(stream))
{
Console.WriteLine(reader.ReadToEnd());
}
}
}
}
location = null;
}
return location;
}
static HttpWebResponse SetRequestAndGetResponse(HttpWebRequest request, string payload = null)
{
while (true)
{
//To authorize the operation call, you need an access token which is part of the Authorization header
request.Headers.Add("Authorization", AccessToken().CreateAuthorizationHeader());
//Set to false to be able to intercept redirects
request.AllowAutoRedirect = false;
if (!string.IsNullOrEmpty(payload))
{
byte[] byteArray = Encoding.UTF8.GetBytes(payload);
request.ContentLength = byteArray.Length;
request.ContentType = "application/json";
//Write JSON byte[] into a Stream
request.GetRequestStream().Write(byteArray, 0, byteArray.Length);
}
else
{
request.ContentLength = 0;
}
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
// Requests to **Azure Data Catalog (ADC)** may return an HTTP 302 response to indicate
// redirection to a different endpoint. In response to a 302, the caller must re-issue
// the request to the URL specified by the Location response header.
if (response.StatusCode == HttpStatusCode.Redirect)
{
string redirectedUrl = response.Headers["Location"];
HttpWebRequest nextRequest = WebRequest.Create(redirectedUrl) as HttpWebRequest;
nextRequest.Method = request.Method;
request = nextRequest;
}
else
{
return response;
break;
}
}
}
static string OrdersJsonWithEveryoneContributor()
{
return @"
{
'roles': [
{
'role': 'Contributor',
'members': [
{
'objectId': '00000000-0000-0000-0000-000000000201'
}
]
}
],
'properties': {
'fromSourceSystem': 'true',
'name': 'Orders',
'dataSource': {
'sourceType': 'SQL Server',
'objectType': 'Table'
},
'dsl': {
'protocol': 'tds',
'authentication': 'windows',
'address': {
'server': 'MyServer.contoso.com',
'database': 'NORTHWND',
'schema': 'dbo',
'object': 'Orders'
}
},
'lastRegisteredBy': {
'upn': 'user1@contoso.com',
'firstName': 'User1FirstName',
'lastName': 'User1LastName'
},
'containerId': 'containers/a9f8a2e1-d826-7c0c-b186-c7f4334a6b4f'
},
'annotations': {
'schema': {
'roles': [
{
'role': 'Contributor',
'members': [
{
'objectId': '00000000-0000-0000-0000-000000000201'
}
]
}
],
'properties': {
'fromSourceSystem': 'true',
'columns': [
{
'name': 'OrderID',
'isNullable': false,
'type': 'int',
'maxLength': 4,
'precision': 10
},
{
'name': 'CustomerID',
'isNullable': true,
'type': 'nchar',
'maxLength': 10,
'precision': 0
},
{
'name': 'EmployeeID',
'isNullable': true,
'type': 'int',
'maxLength': 4,
'precision': 10
},
{
'name': 'OrderDate',
'isNullable': true,
'type': 'datetime',
'maxLength': 8,
'precision': 23
}
]
}
}
}
}";
}
Obtenir avec des annotations
Obtient une ressource de données avec des annotations.
Il prend en charge le paramètre adc.metadata
d’en-tête Accept facultatif qui demande l’inclusion d’ETags dans la réponse pour tous les éléments. Utilisez des valeurs minimales ou complètes pour obtenir des ETags en réponse. Les valeurs valides sont none
, minimal
et full
.
Requête
GET https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}/{view_item_id}?api-version={api-version}
Notes
Certaines implémentations de client HTTP peuvent émettre automatiquement des demandes en réponse à un 302 à partir du serveur, mais généralement supprimer les en-têtes d’autorisation de la requête. Étant donné que l’en-tête d’autorisation est nécessaire pour effectuer des demandes à ADC, vous devez vous assurer que l’en-tête d’autorisation est toujours fourni lors de la rééplération d’une demande vers un emplacement de redirection spécifié par ADC. Vous trouverez ci-dessous un exemple de code illustrant cela à l’aide de l’objet HttpWebRequest .NET.
Paramètres d’URI
Nom | Description | Type de données |
---|---|---|
catalog_name | Nom du catalogue ou « DefaultCatalog » pour utiliser le catalogue par défaut. | String |
view_name | Nom de l’affichage des ressources de données. | String |
view_item_id | ID d’un élément View. | String |
api-version | Version de l'API. | String |
Exemple GET
GET https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b...1be45ecd462a?api-version=2016-03-30
En-tête
x-ms-client-request-id: 8091955f…8f5b4c0acede
Authorization: Bearer eXJ0eyAiOiJKV1QiLCJhbGciOi...
Accept: application/json;adc.metadata=full
response
Codes d’état
Code | Description |
---|---|
200 | OK. La réponse contient la vue de ressource demandée. |
Content-Type
application/json
En-tête
x-ms-request-id: 1095e88c…caffabd6dabd
Content-Type: application/json; charset=utf-8
Corps
{
"id": "https://e2255231-6dd3-1a0d-a6d8-7fc96dd780c2-mycatalog.api.azuredatacatalog.com/catalogs/MyCatalog/views/tables/042297b0-...-1be45ecd462a",
"etag": "1234567891",
"timestamp": "2015-05-15T03:48:39.2425547",
"roles": [
{
"role": "Contributor",
"members": [
{
"objectId": "00000000-0000-0000-0000-000000000201"
}
]
}
],
"effectiveRights": [
"Read",
"Delete",
"ChangeOwnership",
"ChangeVisibility",
"ViewPermissions",
"ViewRoles",
"Update",
"TakeOwnership"
],
"properties": {
"fromSourceSystem": true,
"name": "Orders",
"dataSource": {
"sourceType": "SQL Server",
"objectType": "Table"
},
"dsl": {
"protocol": "tds",
"authentication": "windows",
"address": {
"server": "MyServer.contoso.com",
"database": "NORTHWND",
"schema": "dbo",
"object": "Orders"
}
},
"lastRegisteredBy": {
"upn": "user1@contoso.com",
"firstName": "User1FirstName",
"lastName": "User1LastName"
},
"containerId": "containers/3b2c00be-...-1f15367f54e4"
},
"annotations": {
"schema": {
"id": "https://e2255231-6dd3-1a0d-a6d8-7fc96dd780c2-mycatalog.api.azuredatacatalog.com/catalogs/MyCatalog/views/tables/042297b0-...-1be45ecd462a/schema",
"etag": "1234567892",
"timestamp": "2015-05-15T03:48:39.2425547",
"roles": [
{
"role": "Contributor",
"members": [
{
"objectId": "00000000-0000-0000-0000-000000000201"
}
]
}
],
"effectiveRights": [
"Read",
"Delete",
"ViewRoles",
"Update"
],
"properties": {
"fromSourceSystem": true,
"columns": [
{
"name": "OrderID",
"isNullable": false,
"type": "int",
"maxLength": 4,
"precision": 10
},
{
"name": "CustomerID",
"isNullable": true,
"type": "nchar",
"maxLength": 10,
"precision": 0
},
{
"name": "EmployeeID",
"isNullable": true,
"type": "int",
"maxLength": 4,
"precision": 10
},
{
"name": "OrderDate",
"isNullable": true,
"type": "datetime",
"maxLength": 8,
"precision": 23
}
]
}
},
"experts": [
{
"id": "https://e2255231-6dd3-1a0d-a6d8-7fc96dd780c2-mycatalog.api.azuredatacatalog.com/catalogs/MyCatalog/views/tables/042297b0-...-1be45ecd462a/experts/22c3fa019b3945dc97143ebc3ad74cbf-1111fa019b3945dc97143ebc3ad74cbf",
"etag": "1234567893",
"timestamp": "2015-05-15T03:48:39.2425547",
"roles": [
{
"role": "Contributor",
"members": [
{
"objectId": "22c3fa01-9b39-45dc-9714-3ebc3ad74cbf"
}
]
}
],
"effectiveRights": [
"Read",
"Delete",
"ViewRoles",
"Update"
],
"properties": {
"fromSourceSystem": false,
"key": "22c3fa019b3945dc97143ebc3ad74cbf-1111fa019b3945dc97143ebc3ad74cbf",
"expert": {
"upn": "expert1@contoso.com",
"objectId": "1111fa019b3945dc97143ebc3ad74cbf"
}
}
}
]
}
}
Recherche
Effectue des recherches sur les ressources de données en fonction des termes de recherche fournis.
Requête
GET https://api.azuredatacatalog.com/catalogs/{catalog_name}/search/search?api-version={api-version}&searchTerms={search_terms}&facets={facet_terms}&startPage={start_page}&count={count}&view={data_source}
Notes
Certaines implémentations de client HTTP peuvent émettre automatiquement des demandes en réponse à un 302 à partir du serveur, mais généralement supprimer les en-têtes d’autorisation de la requête. Étant donné que l’en-tête d’autorisation est nécessaire pour effectuer des demandes à ADC, vous devez vous assurer que l’en-tête d’autorisation est toujours fourni lors de la rééplération d’une demande vers un emplacement de redirection spécifié par ADC. Vous trouverez ci-dessous un exemple de code illustrant cela à l’aide de l’objet HttpWebRequest .NET.
Paramètres d’URI
Nom | Description | Type de données |
---|---|---|
catalog_name | Nom du catalogue ou « DefaultCatalog » pour utiliser le catalogue par défaut. | String |
api-version | Version de l'API. | String |
Paramètres de requête
Nom | Description | Type de données |
---|---|---|
searchTerms | Obligatoire. Termes à rechercher. | String |
facettes | Facultatif : Noms de champs séparés par des virgules pour la facette des résultats. | String |
startPage | Page de démarrage facultative des résultats utilisés pour la pagination avec le paramètre count. Les valeurs autorisées sont supérieures à 0. Si une valeur inférieure ou égale à 0 est transmise, une erreur HTTP avec le code d’erreur 400 est retournée. | String |
count | Nombre facultatif de résultats recherchés dans une page (pagination). La valeur par défaut est 10. Les valeurs autorisées sont comprises entre 1 et 100 inclus. Si une valeur hors de cette plage est transmise, une erreur HTTP avec le code d’erreur 400 est retournée. Pour obtenir la partie suivante des résultats de la recherche, répétez la demande, mais augmentez startPage de 1. | Integer |
vue | Facultatif Obtient l’affichage que le client souhaite voir, pour l’instant la seule option prise en charge dans DataSource. | String |
Exemple GET
https://api.azuredatacatalog.com/catalogs/DefaultCatalog/search/search?searchTerms=My_Server&count=10&startPage=1&api-version=2016-03-30
En-tête
x-ms-client-request-id: 546f053a…a1612f3a3d69
Authorization: Bearer eXJ0eyAiOiJKV1QiLCJhbGciOi...
response
Codes d’état
Code | Description |
---|---|
200 | OK. Opération réussie avec résultat de recherche. |
Content-Type
application/json
En-tête
x-ms-request-id: 0ab2e798…088223257ad2
Content-Length: 3926
Corps
{
"query": {
"id": "bd067219...4ba9a56e204b",
"searchTerms": "My_server",
"startIndex": 1,
"startPage": 1,
"count": 1,
"id": "bd067219...4ba9a56e204b",
"totalResults": 508,
"startIndex": 1,
"itemsPerPage": 1,
"results": [{
"updated": "0001-01-01T00:00:00",
"content": {
"properties": {
"fromSourceSystem": true,
"name": "MyTable",
"dsl": {
"protocol": "tds",
"authentication": "windows",
"address": {
"server": "My_SERVER",
"database": "my_DB",
"schema": "my_SCHEMA",
"object": "my_TABLE"
}
},
"dataSource": {
"sourceType": "SQL Server",
"objectType": "Table"
},
"lastRegisteredBy": {
"upn": "user1@contoso.com",
"firstName": "User1FirstName",
"lastName": "User1LastName"
},
"containerId": "https://e2255231-6dd3-1a0d-a6d8-7fc96dd780c2-mycatalog.api.azuredatacatalog.com/catalogs/MyCatalog/views/containers/a9f8a2e1-d826-7c0c-b186-c7f4334a6b4f"
},
"id": "https://e2255231-6dd3-1a0d-a6d8-7fc96dd780c2-mycatalog.api.azuredatacatalog.com/catalogs/MyCatalog/views/tables/08d91f0d-26a0-1e8e-ab3b-d463ac3e62cb",
"type": "Microsoft.DataSource.Table.1",
"timestamp": "2016-03-15T23:20:12.5423855",
"annotations": {
"schema": {
"properties": {
"fromSourceSystem": true,
"columns": [
{
"name": "ID",
"type": "int",
"maxLength": 4,
"precision": 10,
"isNullable": false
},
{
"name": "Column2",
"type": "nchar",
"maxLength": 10,
"precision": 0,
"isNullable": true
}
]
},
"id": "https://e2255231-6dd3-1a0d-a6d8-7fc96dd780c2-mycatalog.api.azuredatacatalog.com/catalogs/MyCatalog/views/tables/08d91f0d-26a0-1e8e-ab3b-d463ac3e62cb/schema",
"type": "Microsoft.DataSource.Schema.1",
"timestamp": "2016-03-15T23:20:12.5423855",
"roles": [
{
"role": "Contributor",
"members": [
{
"objectId": "00000000-0000-0000-0000-000000000201"
}
]
}
],
"effectiveRights": [
"Read",
"Delete",
"ViewRoles",
"Update"
]
}
},
"roles": [
{
"role": "Contributor",
"members": [
{
"objectId": "00000000-0000-0000-0000-000000000201"
}
]
}
],
"effectiveRights": [
"Read",
"Delete",
"ChangeOwnership",
"ChangeVisibility",
"ViewPermissions",
"ViewRoles",
"Update",
"TakeOwnership"
]
},
"hitProperties": [{
"fieldPath": "properties.dsl.address.server",
"highlightDetail": [{
"highlightedWords": [{
"word": "My_sERVER"
}],
"highlightedFragment": "My_sERVER"
}]
},
{
"fieldPath": "properties.dataSource.sourceType",
"highlightDetail": [{
"highlightedWords": [{
"word": "Server"
}],
"highlightedFragment": "SQL Server"
}]
},
{
"fieldPath": "properties.dsl.address.object",
"highlightDetail": [{
"highlightedWords": [{
"word": "my"
}],
"highlightedFragment": "my_TABLE"
}]
},
{
"fieldPath": "properties.dsl.address.database",
"highlightDetail": [{
"highlightedWords": [{
"word": "my"
}],
"highlightedFragment": "my_DB"
}]
},
{
"fieldPath": "properties.dsl.address.schema",
"highlightDetail": [{
"highlightedWords": [{
"word": "my"
}],
"highlightedFragment": "my_SCHEMA"
}]
}]
}]
}
Exemple
Cet exemple montre comment obtenir un jeton d’accès Azure AD et effectuer une opération de recherche .
Note Pour rechercher le nom du catalogue, connectez-vous à Azure Data Catalog, puis choisissez Utilisateur. Le nom du catalogue s’affiche.
using System;
using System.Net;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System.IO;
...
//To learn how to register a client app and get a Client ID,
// see https://msdn.microsoft.com/library/azure/mt403303.aspx#clientID
static string clientIDFromAzureAppRegistration = "{clientID}";
static void Main(string[] args)
{
//Note: This example uses the "DefaultCatalog" keyword to update the user's default catalog. You may alternately
//specify the actual catalog name.
string catalogName = "DefaultCatalog";
//Search everything
string searchTerm = string.Empty;
string searchJson = Search(catalogName, searchTerm);
//Other examples "tags:=Sales", "upn:{username}"
Console.WriteLine(searchJson);
}
static AuthenticationResult AccessToken()
{
//Get access token:
// To call a Data Catalog REST operation, create an instance of AuthenticationContext and call AcquireToken
// AuthenticationContext is part of the Active Directory Authentication Library NuGet package
// To install the Active Directory Authentication Library NuGet package in Visual Studio,
// run "Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory" from the nuget Package Manager Console.
//Resource Uri for Data Catalog API
string resourceUri = "https://api.azuredatacatalog.com";
//To learn how to register a client app and get a Client ID, see https://msdn.microsoft.com/library/azure/mt403303.aspx#clientID
string clientId = clientIDFromAzureAppRegistration;
//A redirect uri gives AAD more details about the specific application that it will authenticate.
//Since a client app does not have an external service to redirect to, this Uri is the standard placeholder for a client app.
string redirectUri = "https://login.live.com/oauth20_desktop.srf";
// Create an instance of AuthenticationContext to acquire an Azure access token
// OAuth2 authority Uri
string authorityUri = "https://login.windows.net/common/oauth2/authorize";
AuthenticationContext authContext = new AuthenticationContext(authorityUri);
// Call AcquireToken to get an Azure token from Azure Active Directory token issuance endpoint
// AcquireToken takes a Client Id that Azure AD creates when you register your client app.
return authContext.AcquireToken(resourceUri, clientId, new Uri(redirectUri), PromptBehavior.RefreshSession);
}
static string Search(string catalogName, string searchTerm)
{
string responseContent = string.Empty;
//NOTE: To find the Catalog Name, sign into Azure Data Catalog, and choose User. You will see a list of Catalog names.
string fullUri =
string.Format("https://api.azuredatacatalog.com/catalogs/{0}/search/search?searchTerms={1}&count=10&api-version=2016-03-30", catalogName, searchTerm);
//Create a GET WebRequest
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(fullUri);
request.Method = "GET";
try
{
//Get HttpWebResponse from GET request
using (HttpWebResponse httpResponse = SetRequestAndGetResponse(request))
{
//Get StreamReader that holds the response stream
using (StreamReader reader = new System.IO.StreamReader(httpResponse.GetResponseStream()))
{
responseContent = reader.ReadToEnd();
}
}
}
catch (WebException ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.Status);
if (ex.Response != null)
{
// can use ex.Response.Status, .StatusDescription
if (ex.Response.ContentLength != 0)
{
using (var stream = ex.Response.GetResponseStream())
{
using (var reader = new StreamReader(stream))
{
Console.WriteLine(reader.ReadToEnd());
}
}
}
}
return null;
}
return responseContent;
}
static HttpWebResponse SetRequestAndGetResponse(HttpWebRequest request, string payload = null)
{
while (true)
{
//To authorize the operation call, you need an access token which is part of the Authorization header
request.Headers.Add("Authorization", AccessToken().CreateAuthorizationHeader());
//Set to false to be able to intercept redirects
request.AllowAutoRedirect = false;
if (!string.IsNullOrEmpty(payload))
{
byte[] byteArray = Encoding.UTF8.GetBytes(payload);
request.ContentLength = byteArray.Length;
request.ContentType = "application/json";
//Write JSON byte[] into a Stream
request.GetRequestStream().Write(byteArray, 0, byteArray.Length);
}
else
{
request.ContentLength = 0;
}
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
// Requests to **Azure Data Catalog (ADC)** may return an HTTP 302 response to indicate
// redirection to a different endpoint. In response to a 302, the caller must re-issue
// the request to the URL specified by the Location response header.
if (response.StatusCode == HttpStatusCode.Redirect)
{
string redirectedUrl = response.Headers["Location"];
HttpWebRequest nextRequest = WebRequest.Create(redirectedUrl) as HttpWebRequest;
nextRequest.Method = request.Method;
request = nextRequest;
}
else
{
return response;
break;
}
}
}
DELETE
Supprime une ressource de données et toutes les annotations (le cas échéant) qui y sont attachées.
Il prend en charge l’en-tête If-Match facultatif pour le contrôle d’accès concurrentiel optimiste. Seul le format faible, tel que W/"123456789 », est pris en charge.
Requête
DELETE https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}/{view_item_id}?api-version={api-version}
Notes
Certaines implémentations de client HTTP peuvent émettre automatiquement des demandes en réponse à un 302 à partir du serveur, mais généralement supprimer les en-têtes d’autorisation de la requête. Étant donné que l’en-tête d’autorisation est nécessaire pour effectuer des demandes à ADC, vous devez vous assurer que l’en-tête d’autorisation est toujours fourni lors de la rééplération d’une demande vers un emplacement de redirection spécifié par ADC. Vous trouverez ci-dessous un exemple de code illustrant cela à l’aide de l’objet HttpWebRequest .NET.
Paramètres d’URI
Nom | Description | Type de données |
---|---|---|
catalog_name | Nom du catalogue ou « DefaultCatalog » pour utiliser le catalogue par défaut. | String |
view_name | Nom de l’affichage des ressources de données. | String |
view_item_id | ID d’un élément View. | String |
api-version | Version de l'API. | String |
Exemple DELETE
DELETE https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0...1be45ecd462a?api-version=2016-03-30
En-tête
x-ms-client-request-id: 59b68a46…46dc3ec8dcb8
Authorization: Bearer eXJ0eyAiOiJKV1QiLCJhbGciOi...
If-Match: W/"123456789"
response
Codes d’état
Code | Description |
---|---|
204 | Pas de contenu REMARQUE : La sémantique de l’opération de suppression est « delete if exists », donc si l’élément ou l’annotation n’existe pas succès status code 204 (NoContent) est retourné. |
412 | Échec de la condition préalable. La demande a été annulée en raison de l’incompatibilité ETag. |
Content-Type
application/json
En-tête
x-ms-request-id: 664f86cf…5e512fa78e92
Mettre à jour une annotation
Mises à jour une annotation.
Les éléments peuvent éventuellement contenir des valeurs ETag pour activer le contrôle d’accès concurrentiel optimiste pour eux.
Requête
PUT https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}/{view_item_id}/{nested_view_name}/{nested_non_singleton_view_item_id}?api-version={api-version}
PUT https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}/{view_item_id}/{nested_view_name}?api-version={api-version}
Notes
Certaines implémentations de client HTTP peuvent émettre automatiquement des demandes en réponse à un 302 à partir du serveur, mais généralement supprimer les en-têtes d’autorisation de la requête. Étant donné que l’en-tête d’autorisation est nécessaire pour effectuer des demandes à ADC, vous devez vous assurer que l’en-tête d’autorisation est toujours fourni lors de la rééplération d’une demande vers un emplacement de redirection spécifié par ADC. Vous trouverez ci-dessous un exemple de code illustrant cela à l’aide de l’objet HttpWebRequest .NET.
Paramètres d’URI
Nom | Description | Type de données |
---|---|---|
catalog_name | Nom du catalogue ou « DefaultCatalog » pour utiliser le catalogue par défaut. | String |
view_name | Nom de l’affichage des ressources de données. | String |
view_item_id | ID d’un élément View. | String |
nested_view_name | Nom d’une vue imbriquée. | String |
nested_non_singleton_view_item_id | ID d’un élément d’affichage non singleton imbriqué. Doit être fourni pour une vue autre que singleton. | String |
api-version | Version de l'API. | String |
Exemple PUT pour une vue documentation singleton
PUT https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0...1be45ecd462a/documentation?api-version=2016-03-30
En-tête
Content-Type: application/json; charset=utf-8
x-ms-client-request-id: 059692ee-...-57490fcec42c
Authorization: Bearer eXJ0eyAiOiJKV1QiLCJhbGciOi...
Schéma de corps
Body:
{
"fromSourceSystem": false,
"etag": "123456789",
"content": "<new documentation content>",
"mimetype": "text",
}
response
Codes d’état
Code | Description |
---|---|
200 | OK. Une annotation existante a été mise à jour. |
412 | Échec de la condition préalable. La demande a été annulée en raison de l’incompatibilité ETag dans au moins un élément. |
Content-Type
application/json
En-tête
x-ms-request-id: 3b8668da…1558d0f407c0
Supprimer une annotation
Supprime une annotation et toutes les annotations imbriquées (le cas échéant).
Il prend en charge l’en-tête If-Match facultatif pour le contrôle d’accès concurrentiel optimiste. Seul le format faible, tel que W/"123456789 », est pris en charge.
Requête
DELETE https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}/{view_item_id}/{nested_view_name}/{nested_non_singleton_view_item_id}?api-version={api-version}
DELETE https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}/{view_item_id}/{nested_view_name}?api-version={api-version}
Notes
Certaines implémentations de client HTTP peuvent émettre automatiquement des demandes en réponse à un 302 à partir du serveur, mais généralement supprimer les en-têtes d’autorisation de la requête. Étant donné que l’en-tête d’autorisation est nécessaire pour effectuer des demandes à ADC, vous devez vous assurer que l’en-tête d’autorisation est toujours fourni lors de la rééplération d’une demande vers un emplacement de redirection spécifié par ADC. Vous trouverez ci-dessous un exemple de code illustrant cela à l’aide de l’objet HttpWebRequest .NET.
Paramètres d’URI
Nom | Description | Type de données |
---|---|---|
catalog_name | Nom du catalogue ou « DefaultCatalog » pour utiliser le catalogue par défaut. | String |
view_name | Nom de l’affichage des ressources de données. | String |
view_item_id | ID d’un élément View. | String |
nested_view_name | Nom d’une vue imbriquée. | String |
nested_non_singleton_view_item_id | ID d’un élément d’affichage non singleton imbriqué. Doit être fourni pour une vue autre que singleton. | String |
api-version | Version de l'API. | String |
Exemple DELETE
DELETE https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0-c187-49cc-8f30-1be45ecd462a/experts/22c3fa019b3945dc97143ebc3ad74cbf-1111fa019b3945dc97143ebc3ad74cbf?api-version=2016-03-30
En-tête
x-ms-client-request-id: c8da5f08…67b203d77b2d
Authorization: Bearer eXJ0eyAiOiJKV1QiLCJhbGciOi...
If-Match: W/"123456789"
response
Codes d’état
Code | Description |
---|---|
204 | Pas de contenu |
412 | Échec de la condition préalable. La demande a été annulée en raison de l’incompatibilité ETag. |
Content-Type
application/json
En-tête
x-ms-request-id: 276b9dc4…e5f7017805c