Ativo de dados (API REST do Azure Catálogo de Dados)
Anotar
Anota um ativo.
etag
a propriedade é opcional e é usada para o controle de simultaneidade.
POST https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}/{view_item_id}/{nested_view_name}?api-version={api-version}
Observação
Algumas implementações de cliente HTTP podem reemitir solicitações automaticamente em resposta a um 302 do servidor, mas normalmente removem cabeçalhos de autorização da solicitação. Como o cabeçalho De autorização é necessário para fazer solicitações ao ADC, você deve garantir que o cabeçalho autorização ainda seja fornecido ao emitir novamente uma solicitação para um local de redirecionamento especificado pelo ADC. Veja abaixo o código de exemplo que demonstra isso usando o objeto HttpWebRequest do .NET.
Parâmetros do URI
Nome | Descrição | Tipo de Dados |
---|---|---|
Catalog_name | Nome do catálogo ou "DefaultCatalog" para usar o catálogo padrão. | String |
view_name | Nome do Modo de Exibição do Ativo de Dados. | String |
view_item_id | ID de um item view. | String |
nested_view_name | Nome de um item de Exibição aninhado. | String |
api-version | A versão da API. | String |
Exemplo: Adicionar especialistas
POST https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0...1be45ecd462a/experts?api-version=2016-03-30
parâmetro
Content-Type: application/json
x-ms-client-request-id: 13d9f885…a92d-8a9f8cf9f707
Authorization: Bearer eyJ0eX ... FWSXfwtQ
Corpo
{
"etag": "59085E253E2244A59F664A2F447E675E",
"properties":
{
"fromSourceSystem": false,
"key": "22c3fa019b3945dc97143ebc3ad74cbf--1111fa019b3945dc97143ebc3ad74cbf",
"expert":
{
"upn": "expert1@contoso.com",
"objectId": "1111fa019b3945dc97143ebc3ad74cbf"
},
}
}
Exemplo: Adicionar marcas de termo do glossário
POST https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0...1be45ecd462a/termTags?api-version=2016-03-30
parâmetro
Content-Type: application/json
x-ms-client-request-id: 13d9f885…a92d-8a9f8cf9f707
Authorization: Bearer eyJ0eX ... FWSXfwtQ
Corpo
{
"etag": "59085E253E2244A59F664A2F447E675E",
"properties":
{
"fromSourceSystem": false,
"key": "22c3fa019b3945dc97143ebc3ad74cbf--1111fa019b3945dc97143ebc3ad74cbf",
"termId": "https://test.catalog.com/catalogs/DefaultCatalog/glossaries/DefaultGlossary/terms/ed975c9d-2fb2-49a3-b6f2-222389cefd7e",
}
}
Exemplo: Adicionar marcas de termo de coluna de glossário
POST https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0...1be45ecd462a/columnTermTags?api-version=2016-03-30
parâmetro
Content-Type: application/json
x-ms-client-request-id: 13d9f885…a92d-8a9f8cf9f707
Authorization: Bearer eyJ0eX ... FWSXfwtQ
Corpo
{
"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",
}
}
Resposta
Códigos de status
Código | Descrição |
---|---|
201 | Criado. A solicitação foi atendida e uma nova anotação foi criada. |
200 | OK. Uma anotação existente foi atualizada. |
412 | Falha na pré-condição. A solicitação foi cancelada devido à incompatibilidade de ETag em pelo menos um item. |
Tipo de conteúdo
application/json
parâmetro
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
Registrar ou atualizar
Registra um novo ativo de dados ou atualiza um existente se um ativo com a mesma identidade já existir. Opcionalmente, os itens podem conter valores ETag para habilitar o controle de simultaneidade otimista para eles.
Exemplo de introdução no GitHub
Solicitação
POST https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}?api-version={api-version}
Observação
Algumas implementações de cliente HTTP podem reemitir solicitações automaticamente em resposta a um 302 do servidor, mas normalmente removem cabeçalhos de autorização da solicitação. Como o cabeçalho De autorização é necessário para fazer solicitações ao ADC, você deve garantir que o cabeçalho autorização ainda seja fornecido ao emitir novamente uma solicitação para um local de redirecionamento especificado pelo ADC. Veja abaixo o código de exemplo que demonstra isso usando o objeto HttpWebRequest do .NET.
Parâmetros do URI
Nome | Descrição | Tipo de Dados |
---|---|---|
Catalog_name | Nome do catálogo ou "DefaultCatalog" para usar o catálogo padrão. | String |
view_name | Nome do Modo de Exibição do Ativo de Dados. | String |
api-version | A versão da API. | String |
Exemplo POST
POST https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables?api-version=2016-03-30
parâmetro
Content-Type: application/json
x-ms-client-request-id: 13c45c14…46ab469473f0
Authorization: Bearer eyJ0eX ... FWSXfwtQ
Exemplo de corpo
{
"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
}
]
}
}
}
}
Resposta
Códigos de status
Código | Descrição |
---|---|
200 | OK. Um ativo existente foi atualizado. |
201 | Criado. A solicitação foi atendida e um novo ativo foi criado. |
412 | Falha na pré-condição. A solicitação foi cancelada devido à incompatibilidade de ETag em pelo menos um item. |
Tipo de conteúdo
application/json
parâmetro
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
Fontes de dados com suporte
Consulte a Catálogo de Dados fontes de dados com suporte do Azure para obter a lista de objetos de fontes de dados com suporte no momento.
Exemplo
Este exemplo mostra como obter um token de acesso Azure AD e executar uma operação de Registro.
Nota Este exemplo usa o palavra-chave DefaultCatalog para atualizar o catálogo padrão do usuário. Como alternativa, você pode especificar o nome real do catálogo. Para localizar o nome do Catálogo, entre no Azure Catálogo de Dados e escolha Usuário. Você verá o Nome do catálogo .
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
}
]
}
}
}
}";
}
Obter com anotações
Obtém um ativo de dados com anotações.
Ele dá suporte ao parâmetro adc.metadata
de cabeçalho Accept opcional que solicita que as ETags sejam incluídas na resposta para todos os itens. Use valores mínimos ou completos para obter ETags em resposta. Os valores válidos são none
, minimal
e full
.
Solicitação
GET https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}/{view_item_id}?api-version={api-version}
Observação
Algumas implementações de cliente HTTP podem emitir solicitações automaticamente em resposta a um 302 do servidor, mas normalmente removem cabeçalhos de autorização da solicitação. Como o cabeçalho Authorization é necessário para fazer solicitações ao ADC, você deve garantir que o cabeçalho De autorização ainda seja fornecido ao emitir novamente uma solicitação para um local de redirecionamento especificado pelo ADC. Veja abaixo o código de exemplo que demonstra isso usando o objeto HttpWebRequest do .NET.
Parâmetros do URI
Nome | Descrição | Tipo de Dados |
---|---|---|
Catalog_name | Nome do catálogo ou "DefaultCatalog" para usar o catálogo padrão. | String |
view_name | Nome da Exibição de Ativos de Dados. | String |
view_item_id | ID de um item De exibição. | String |
api-version | A versão da API. | String |
Exemplo GET
GET https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b...1be45ecd462a?api-version=2016-03-30
parâmetro
x-ms-client-request-id: 8091955f…8f5b4c0acede
Authorization: Bearer eXJ0eyAiOiJKV1QiLCJhbGciOi...
Accept: application/json;adc.metadata=full
Resposta
Códigos de status
Código | Descrição |
---|---|
200 | OK. A resposta contém a exibição de ativo solicitada. |
Tipo de conteúdo
application/json
parâmetro
x-ms-request-id: 1095e88c…caffabd6dabd
Content-Type: application/json; charset=utf-8
Corpo
{
"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"
}
}
}
]
}
}
Pesquisar
Pesquisa ativos de dados com base nos termos de pesquisa fornecidos.
Solicitação
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}
Observação
Algumas implementações de cliente HTTP podem emitir solicitações automaticamente em resposta a um 302 do servidor, mas normalmente removem cabeçalhos de autorização da solicitação. Como o cabeçalho Authorization é necessário para fazer solicitações ao ADC, você deve garantir que o cabeçalho De autorização ainda seja fornecido ao emitir novamente uma solicitação para um local de redirecionamento especificado pelo ADC. Veja abaixo o código de exemplo que demonstra isso usando o objeto HttpWebRequest do .NET.
Parâmetros do URI
Nome | Descrição | Tipo de Dados |
---|---|---|
Catalog_name | Nome do catálogo ou "DefaultCatalog" para usar o catálogo padrão. | String |
api-version | A versão da API. | String |
Parâmetros de consulta
Nome | Descrição | Tipo de Dados |
---|---|---|
Searchterms | Obrigatórios. Termos para pesquisar. | String |
Facetas | Opcional Um nome de campo separado por vírgula para facetar os resultados. | String |
Startpage | Página Inicial opcional dos resultados usados para Paginação junto com o parâmetro count. Os valores permitidos são maiores que 0, se um valor menor ou igual a 0 for passado, um erro HTTP com o código de erro 400 será retornado. | String |
count | Número opcional de resultados desejados em uma página (Paginação). O valor padrão é 10. Os valores permitidos estão no intervalo de 1 a 100, inclusive. Se um valor fora desse intervalo for passado, um erro HTTP com o código de erro 400 será retornado. Para obter a próxima parte dos resultados da pesquisa, repita a solicitação, mas aumente startPage em 1. | Inteiro |
exibição | Opcional Obtém a exibição que o cliente deseja ver, por enquanto, a única opção com suporte no DataSource. | String |
Exemplo GET
https://api.azuredatacatalog.com/catalogs/DefaultCatalog/search/search?searchTerms=My_Server&count=10&startPage=1&api-version=2016-03-30
parâmetro
x-ms-client-request-id: 546f053a…a1612f3a3d69
Authorization: Bearer eXJ0eyAiOiJKV1QiLCJhbGciOi...
Resposta
Códigos de status
Código | Descrição |
---|---|
200 | OK. Uma operação bem-sucedida com o resultado da pesquisa. |
Tipo de conteúdo
application/json
parâmetro
x-ms-request-id: 0ab2e798…088223257ad2
Content-Length: 3926
Corpo
{
"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"
}]
}]
}]
}
Exemplo
Este exemplo mostra como obter um token de acesso Azure AD e executar uma operação de Pesquisa.
Nota Para localizar o Nome do catálogo, entre no Azure Catálogo de Dados e escolha Usuário. Você verá o Nome do catálogo .
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;
}
}
}
Excluir
Exclui um ativo de dados e todas as anotações (se houver) anexadas a ele.
Ele dá suporte ao cabeçalho If-Match opcional para controle de simultaneidade otimista. Há suporte apenas para formato fraco, como W/"123456789".
Solicitação
DELETE https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}/{view_item_id}?api-version={api-version}
Observação
Algumas implementações de cliente HTTP podem reemitir solicitações automaticamente em resposta a um 302 do servidor, mas normalmente removem cabeçalhos de autorização da solicitação. Como o cabeçalho De autorização é necessário para fazer solicitações ao ADC, você deve garantir que o cabeçalho autorização ainda seja fornecido ao emitir novamente uma solicitação para um local de redirecionamento especificado pelo ADC. Veja abaixo o código de exemplo que demonstra isso usando o objeto HttpWebRequest do .NET.
Parâmetros do URI
Nome | Descrição | Tipo de Dados |
---|---|---|
Catalog_name | Nome do catálogo ou "DefaultCatalog" para usar o catálogo padrão. | String |
view_name | Nome do Modo de Exibição do Ativo de Dados. | String |
view_item_id | ID de um item view. | String |
api-version | A versão da API. | String |
Exemplo DELETE
DELETE https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0...1be45ecd462a?api-version=2016-03-30
parâmetro
x-ms-client-request-id: 59b68a46…46dc3ec8dcb8
Authorization: Bearer eXJ0eyAiOiJKV1QiLCJhbGciOi...
If-Match: W/"123456789"
Resposta
Códigos de status
Código | Descrição |
---|---|
204 | NoContent OBSERVAÇÃO: excluir a semântica da operação é "excluir se existir", portanto, se o ativo ou a anotação não existirem com êxito status código 204 (NoContent) for retornado. |
412 | Falha na pré-condição. A solicitação foi cancelada devido à incompatibilidade de ETag. |
Tipo de conteúdo
application/json
parâmetro
x-ms-request-id: 664f86cf…5e512fa78e92
Atualizar anotação
Atualizações uma anotação.
Opcionalmente, os itens podem conter valores ETag para habilitar o controle de simultaneidade otimista para eles.
Solicitação
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}
Observação
Algumas implementações de cliente HTTP podem reemitir solicitações automaticamente em resposta a um 302 do servidor, mas normalmente removem cabeçalhos de autorização da solicitação. Como o cabeçalho De autorização é necessário para fazer solicitações ao ADC, você deve garantir que o cabeçalho autorização ainda seja fornecido ao emitir novamente uma solicitação para um local de redirecionamento especificado pelo ADC. Veja abaixo o código de exemplo que demonstra isso usando o objeto HttpWebRequest do .NET.
Parâmetros do URI
Nome | Descrição | Tipo de Dados |
---|---|---|
Catalog_name | Nome do catálogo ou "DefaultCatalog" para usar o catálogo padrão. | String |
view_name | Nome do Modo de Exibição do Ativo de Dados. | String |
view_item_id | ID de um item view. | String |
nested_view_name | Nome de um Modo de Exibição aninhado. | String |
nested_non_singleton_view_item_id | Id de um item de exibição não singleton aninhado. Deve ser fornecido para uma exibição não singleton. | String |
api-version | A versão da API. | String |
Exemplo put para uma exibição de Documentação singleton
PUT https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0...1be45ecd462a/documentation?api-version=2016-03-30
parâmetro
Content-Type: application/json; charset=utf-8
x-ms-client-request-id: 059692ee-...-57490fcec42c
Authorization: Bearer eXJ0eyAiOiJKV1QiLCJhbGciOi...
Esquema de corpo
Body:
{
"fromSourceSystem": false,
"etag": "123456789",
"content": "<new documentation content>",
"mimetype": "text",
}
Resposta
Códigos de status
Código | Descrição |
---|---|
200 | OK. Uma anotação existente foi atualizada. |
412 | Falha na pré-condição. A solicitação foi cancelada devido à incompatibilidade de ETag em pelo menos um item. |
Tipo de conteúdo
application/json
parâmetro
x-ms-request-id: 3b8668da…1558d0f407c0
Excluir anotação
Exclui uma anotação e todas as anotações aninhadas (se houver).
Ele dá suporte ao cabeçalho If-Match opcional para controle de simultaneidade otimista. Há suporte apenas para formato fraco, como W/"123456789".
Solicitação
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}
Observação
Algumas implementações de cliente HTTP podem reemitir solicitações automaticamente em resposta a um 302 do servidor, mas normalmente removem cabeçalhos de autorização da solicitação. Como o cabeçalho De autorização é necessário para fazer solicitações ao ADC, você deve garantir que o cabeçalho autorização ainda seja fornecido ao emitir novamente uma solicitação para um local de redirecionamento especificado pelo ADC. Veja abaixo o código de exemplo que demonstra isso usando o objeto HttpWebRequest do .NET.
Parâmetros do URI
Nome | Descrição | Tipo de Dados |
---|---|---|
Catalog_name | Nome do catálogo ou "DefaultCatalog" para usar o catálogo padrão. | String |
view_name | Nome do Modo de Exibição do Ativo de Dados. | String |
view_item_id | ID de um item De exibição. | String |
nested_view_name | Nome de uma Exibição aninhada. | String |
nested_non_singleton_view_item_id | ID de um item de exibição não singleton aninhado. Deve ser fornecido para um Modo de Exibição não singleton. | String |
api-version | A versão da API. | String |
Exemplo DELETE
DELETE https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0-c187-49cc-8f30-1be45ecd462a/experts/22c3fa019b3945dc97143ebc3ad74cbf-1111fa019b3945dc97143ebc3ad74cbf?api-version=2016-03-30
parâmetro
x-ms-client-request-id: c8da5f08…67b203d77b2d
Authorization: Bearer eXJ0eyAiOiJKV1QiLCJhbGciOi...
If-Match: W/"123456789"
Resposta
Códigos de status
Código | Descrição |
---|---|
204 | NoContent |
412 | Falha na pré-condição. A solicitação foi cancelada devido à incompatibilidade de ETag. |
Tipo de conteúdo
application/json
parâmetro
x-ms-request-id: 276b9dc4…e5f7017805c