Teilen über


Web API-Funktionen- und Aktionen-Beispiel

In dieser Beispielgruppe wird veranschaulicht, wie gebundene und ungebundene Funktionen und Aktionen, einschließlich benutzerdefinierter Aktionen, mithilfe der Microsoft Dataverse-Web-API ausgeführt werden. Das Beispiel wird als separates Projekt für die folgenden Sprachen implementiert:

Dieser Artikel erläutert die Struktur und den Inhalt des Beispiels auf einer höheren, sprachneutralen Ebene. Informationen zu sprachspezifischen Implementierungsdetails zum Ausführen der in diesem Artikel beschriebenen Vorgänge finden Sie in den verknüpften Beispielartikeln.

Veranschaulichung

Dieses Beispiel ist in die folgenden Prinzipal-Abschnitte unterteilt, die Web-API-Funktionen und Vorgänge enthalten, die in den zugehörigen konzeptionellen Artikeln ausführlicher behandelt werden.

Abschnitt Artikel Zugehörige(r) Artikel
Abschnitt 1: Ungebundene Funktion WhoAmI WhoAmI-Funktion
Ungebundene Funktionen
Abschnitt 2: Ungebundene Funktion FormatAddress FormatAddress-Funktion
Übergeben von Parametern an eine Funktion
Abschnitt 3: Ungebundene Funktion InitializeFrom InitializeFrom-Funktion
Erstellen Sie einen Datensatz aus einem anderen Datensatz
Tabellenspalten zuordnen
Anpassen von Tabellen- und Spalten-Zuordnungen
Abschnitt 4: Ungebundene Funktion RetrieveCurrentOrganization RetrieveCurrentOrganization-Funktion
Abschnitt 6: Gebundene Funktion IsSystemAdmin Custom-API Gebundene Funktionen
Gebundene Funktionen verwenden
Beispiel: IsSystemAdmin Custom-API
Benutzerdefinierte APIs erstellen und verwenden
Abschnitt 7: Ungebundene Aktion GrantAccess GrantAccess-Aktion
Freigeben und Zuweisen
RetrievePrincipalAccess Funktion
Abschnitt 8: Gebundene Aktionen AddPrivilegesRole Gebundene Aktionen
Gebundene Aktionen verwenden
AddPrivilegesRole-Aktion
Sicherheitsrolle-(Role-)Tabellen-/Entitätsreferenz
Abschnitt 9: Beispielaufzeichnungen löschen Grundlegende Löschung
Ausführen von Batchbetrieben mithilfe der Web-API

Die folgenden Abschnitte enthalten eine kurze Erläuterung der Dataverse-Web-API-Vorgänge sowie die entsprechenden HTTP-Nachrichten und die zugehörige Konsolenausgabe.

Abschnitt 1: Ungebundene Funktion WhoAmI

Die WhoAmI-Funktion ist eine einfache und häufig verwendete ungebundene Funktion.

Anforderung:

GET [Organization Uri]/api/data/v9.2/WhoAmI HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

Antwort:

HTTP/1.1 200 OK
OData-Version: 4.0

{
  "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.WhoAmIResponse",
  "BusinessUnitId": "11bb11bb-cc22-dd33-ee44-55ff55ff55ff",
  "UserId": "22cc22cc-dd33-ee44-ff55-66aa66aa66aa",
  "OrganizationId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
}

Konsolenausgabe:

WhoAmI tells us:
WhoAmIResponse.BusinessUnitId:11bb11bb-cc22-dd33-ee44-55ff55ff55ff
WhoAmIResponse.UserId:22cc22cc-dd33-ee44-ff55-66aa66aa66aa
WhoAmIResponse.OrganizationId:00aa00aa-bb11-cc22-dd33-44ee44ee44ee

Verwenden Sie den BusinessUnitId hier abgerufenen Wert in Abschnitt 8: Bound Action AddPrivilegesRole.

Abschnitt 2: Ungebundene Funktion FormatAddress

Die FormatAddress-Funktion ist eine ungebundene Funktion, die Parameter erfordert. Sie gibt eine Zeichenfolge zurück, die eine Adresse gemäß den spezifischen Anforderungen des Landes oder des regionalen Formats darstellt.

Legen Sie in diesem Beispiel die Parameter mithilfe von Abfragezeichenfolgenparameterwerten fest.

  1. Eine Anfrage nach einer Adresse in den Vereinigten Staaten:

    Anforderung:

    GET [Organization Uri]/api/data/v9.2/FormatAddress(Line1=@p1,City=@p2,StateOrProvince=@p3,PostalCode=@p4,Country=@p5)?@p1='123%20Maple%20St.'&@p2='Seattle'&@p3='WA'&@p4='98007'&@p5='USA' HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    

    Antwort:

    HTTP/1.1 200 OK
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.FormatAddressResponse",
    "Address": "123 Maple St.\r\nSeattle, WA 98007\r\nUSA"
    }
    

    Konsolenausgabe:

    USA Formatted Address:
    123 Maple St.
    Seattle, WA 98007
    USA
    
  2. Eine Anfrage nach einer Adresse in Japan.

    Anforderung:

    GET [Organization Uri]/api/data/v9.2/FormatAddress(Line1=@p1,City=@p2,StateOrProvince=@p3,PostalCode=@p4,Country=@p5)?@p1='1-2-3%20Sakura'&@p2='Nagoya'&@p3='Aichi'&@p4='455-2345'&@p5='JAPAN' HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    

    Antwort:

    HTTP/1.1 200 OK
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.FormatAddressResponse",
    "Address": "455-2345\r\nAichi\r\nNagoya\r\n1-2-3 Sakura\r\nJAPAN"
    }
    

    Konsolenausgabe:

    JAPAN Formatted Address:
    455-2345
    Aichi
    Nagoya
    1-2-3 Sakura
    JAPAN
    

Abschnitt 3: Ungebundene Funktion InitializeFrom

Die Funktion InitializeFrom ist eine ungebundene Funktion, die Parameter erfordert. Diese Funktion gibt die Daten für einen neuen Datensatz zurück, der im Kontext eines vorhandenen Datensatzes erstellt werden soll. Abhängig von den Konfigurationsdaten, um zu steuern, welche Daten kopiert werden sollen, enthält die zurückgegebenen Datensatzdaten Daten, die aus dem ursprünglichen Datensatz kopiert wurden.

Weitere Informationen:

  1. Erstellen Sie einen Datensatz als Originaldatensatz:

    Anforderung:

    POST [Organization Uri]/api/data/v9.2/accounts HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "accountcategorycode": 1,
    "address1_addresstypecode": 3,
    "address1_city": "Redmond",
    "address1_country": "USA",
    "address1_line1": "123 Maple St.",
    "address1_name": "Corporate Headquarters",
    "address1_postalcode": "98000",
    "address1_shippingmethodcode": 4,
    "address1_stateorprovince": "WA",
    "address1_telephone1": "555-1234",
    "customertypecode": 3,
    "description": "Contoso is a business consulting company.",
    "emailaddress1": "info@contoso.com",
    "industrycode": 7,
    "name": "Contoso Consulting",
    "numberofemployees": 150,
    "ownershipcode": 2,
    "preferredcontactmethodcode": 2,
    "telephone1": "(425) 555-1234"
    }
    

    Antwort:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/accounts(22cc22cc-dd33-ee44-ff55-66aa66aa66aa)
    
  2. Verwenden Sie InitializeFrom, um die Daten für einen neuen Datensatz aus dem ursprünglichen Datensatz zu erhalten.

    Anforderung:

    GET [Organization Uri]/api/data/v9.2/InitializeFrom(EntityMoniker=@p1,TargetEntityName=@p2,TargetFieldType=@p3)?@p1={'@odata.id':'accounts(22cc22cc-dd33-ee44-ff55-66aa66aa66aa)'}&@p2='account'&@p3=Microsoft.Dynamics.CRM.TargetFieldType'ValidForCreate' HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    

    Antwort:

    HTTP/1.1 200 OK
    Preference-Applied: return=representation
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#accounts/$entity",
    "@odata.type": "#Microsoft.Dynamics.CRM.account",
    "parentaccountid@odata.bind": "accounts(22cc22cc-dd33-ee44-ff55-66aa66aa66aa)"
    }
    

    Konsolenausgabe:

    New data based on original record:
    {
    "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts/$entity",
    "@odata.type": "#Microsoft.Dynamics.CRM.account",
    "parentaccountid@odata.bind": "accounts(22cc22cc-dd33-ee44-ff55-66aa66aa66aa)"
    }
    

    Anmerkung

    Wenn für diese Beziehung keine Spalten zugeordnet sind, werden nur die minimalen Spaltenwerte eingeschlossen, wie im vorherigen Beispiel gezeigt. In diesem Fall ist der einzige Wert der parentaccountid-Lookup, um den neuen Datensatz dem Original zuzuordnen.

    Wenn alle verfügbaren Spalten für diese Beziehung zugeordnet sind, enthält der zurückgegebene Wert z.B. mehr Daten aus dem ursprünglichen Datensatz:

    {
       "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts/$entity",
       "@odata.type": "#Microsoft.Dynamics.CRM.account",
       "territorycode": 1,
       "address2_freighttermscode": 1,
       "address2_shippingmethodcode": 1,
       "address1_telephone1": "555-1234",
       "accountclassificationcode": 1,
       "creditonhold": false,
       "donotbulkemail": false,
       "donotsendmm": false,
       "emailaddress1": "info@contoso.com",
       "address1_line1": "123 Maple St.",
       "customertypecode": 3,
       "ownershipcode": 2,
       "businesstypecode": 1,
       "donotpostalmail": false,
       "donotbulkpostalmail": false,
       "name": "Contoso Consulting",
       "address1_city": "Redmond",
       "description": "Contoso is a business consulting company.",
       "donotemail": false,
       "address2_addresstypecode": 1,
       "donotphone": false,
       "statuscode": 1,
       "address1_name": "Corporate Headquarters",
       "followemail": true,
       "preferredcontactmethodcode": 2,
       "numberofemployees": 150,
       "industrycode": 7,
       "telephone1": "(425) 555-1234",
       "address1_shippingmethodcode": 4,
       "donotfax": false,
       "address1_addresstypecode": 3,
       "customersizecode": 1,
       "marketingonly": false,
       "accountratingcode": 1,
       "shippingmethodcode": 1,
       "address1_country": "USA",
       "participatesinworkflow": false,
       "accountcategorycode": 1,
       "address1_postalcode": "98000",
       "address1_stateorprovince": "WA",
       "parentaccountid@odata.bind": "accounts(fe9873ac-2f1b-ed11-b83e-00224837179f)"
    }     
    
  3. Erstellen Sie einen neuen Datensatz mithilfe der von InitializeFrom zurückgegebenen Daten.

    Anforderung:

    POST [Organization Uri]/api/data/v9.2/accounts HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#accounts/$entity",
    "@odata.type": "#Microsoft.Dynamics.CRM.account",
    "parentaccountid@odata.bind": "accounts(22cc22cc-dd33-ee44-ff55-66aa66aa66aa)",
    "name": "Contoso Consulting Chicago Branch",
    "address1_city": "Chicago",
    "address1_line1": "456 Elm St.",
    "address1_name": "Chicago Branch Office",
    "address1_postalcode": "60007",
    "address1_stateorprovince": "IL",
    "address1_telephone1": "(312) 555-3456",
    "numberofemployees": 12
    }
    

    Antwort:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/accounts(33dd33dd-ee44-ff55-aa66-77bb77bb77bb)
    

    Konsolenausgabe:

    New Record:
    {
    "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts/$entity",
    "@odata.type": "#Microsoft.Dynamics.CRM.account",
    "parentaccountid@odata.bind": "accounts(22cc22cc-dd33-ee44-ff55-66aa66aa66aa)",
    "name": "Contoso Consulting Chicago Branch",
    "address1_city": "Chicago",
    "address1_line1": "456 Elm St.",
    "address1_name": "Chicago Branch Office",
    "address1_postalcode": "60007",
    "address1_stateorprovince": "IL",
    "address1_telephone1": "(312) 555-3456",
    "numberofemployees": 12
    }
    

Abschnitt 4: Ungebundene Funktion RetrieveCurrentOrganization

Die RetrieveCurrentOrganization-Funktion gibt Informationen zur aktuellen Organisation zurück. Er benötigt einen EndpointAccessType enum Typ Wert als Parameter.

RetrieveCurrentOrganization gibt einen komplexen RetrieveCurrentOrganizationResponse-Typ zurück, der eine Detail Eigenschaft enthält, die einen komplexen Typ "OrganizationDetail" darstellt. Dieser komplexe Typ verfügt über Eigenschaften, die den komplexen Typ "EndpointCollection", den Enumerationstyp "EndpointType" und den Enumerationstyp "OrganizationState" verwenden.

Anmerkung

Die URL übergibt den AccessTypeEnum-Typ-Parameterwert EndpointAccessType. Es benötigt den vollqualifizierten Namen mit dem ausgewählten Mitgliedsnamen.

Anforderung:

GET [Organization Uri]/api/data/v9.2/RetrieveCurrentOrganization(AccessType=@p1)?@p1=Microsoft.Dynamics.CRM.EndpointAccessType'Default' HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

Antwort:

HTTP/1.1 200 OK
OData-Version: 4.0

{
  "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.RetrieveCurrentOrganizationResponse",
  "Detail": {
    "OrganizationId": "11bb11bb-cc22-dd33-ee44-55ff55ff55ff",
    "FriendlyName": "[Organization Name]",
    "OrganizationVersion": "9.2.22074.168",
    "EnvironmentId": "Default-aaaabbbb-0000-cccc-1111-dddd2222eeee",
    "DatacenterId": "695014e1-bafd-4d7e-9d3d-2261d4aaf780",
    "Geo": "NA",
    "TenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
    "UrlName": "org619726b5",
    "UniqueName": "org0335df44",
    "State": "Enabled",
    "Endpoints": {
      "Count": 3,
      "IsReadOnly": false,
      "Keys": [
        "WebApplication",
        "OrganizationService",
        "OrganizationDataService"
      ],
      "Values": [
        "[Organization URI]/",
        "[Organization URI]/XRMServices/2011/Organization.svc",
        "[Organization URI]/XRMServices/2011/OrganizationData.svc"
      ]
    }
  }
}

Konsolenausgabe:

Data returned with RetrieveCurrentOrganizationResponse:
{
  "OrganizationId": "11bb11bb-cc22-dd33-ee44-55ff55ff55ff",
  "FriendlyName": "[Organization Name]",
  "OrganizationVersion": "9.2.22074.168",
  "EnvironmentId": "Default-aaaabbbb-0000-cccc-1111-dddd2222eeee",
  "DatacenterId": "695014e1-bafd-4d7e-9d3d-2261d4aaf780",
  "Geo": "NA",
  "TenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
  "UrlName": "org619726b5",
  "UniqueName": "org0335df44",
  "Endpoints": {
    "Count": 3,
    "IsReadOnly": false,
    "Keys": [
      "WebApplication",
      "OrganizationService",
      "OrganizationDataService"
    ],
    "Values": [
      "[Organization URI]/",
      "[Organization URI]/XRMServices/2011/Organization.svc",
      "[Organization URI]/XRMServices/2011/OrganizationData.svc"
    ]
  },
  "State": "Enabled"
}

Abschnitt 5: Ungebundene Funktion RetrieveTotalRecordCount

Die RetrieveTotalRecordCount-Funktion gibt Daten zur Gesamtzahl der Datensätze für bestimmte Entitäten zurück. Die Funktion ruft Daten aus einer Momentaufnahme ab, die weniger als 24 Stunden alt ist, sodass es sich nicht um eine genaue Anzahl zu einem bestimmten Zeitpunkt handelt.

Anforderung:

GET [Organization Uri]/api/data/v9.2/RetrieveTotalRecordCount(EntityNames=@p1)?@p1=["account","contact"] HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

Antwort:

HTTP/1.1 200 OK
OData-Version: 4.0

{
  "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.RetrieveTotalRecordCountResponse",
  "EntityRecordCountCollection": {
    "Count": 2,
    "IsReadOnly": false,
    "Keys": [
      "account",
      "contact"
    ],
    "Values": [
      19,
      3
    ]
  }
}

Konsolenausgabe:

The number of records for each table according to RetrieveTotalRecordCount:
        account:19
        contact:3

Abschnitt 6: Gebundene Funktion IsSystemAdmin benutzerdefinierte API

Um eine gebundene Funktion zu demonstrieren, importiert dieses Beispiel eine angepasste Nachricht, die in einer Lösung definiert wurde, bevor dieser Teil des Beispiels ausgeführt wird.

Das Beispiel verwendet die angepasste Nachricht sample_IsSystemAdmin, die über eine Custom-API definiert wird. Details zu dieser Custom-API finden Sie hier: Beispiel: IsSystemAdmin Custom-API.

Anmerkung

Wenn Sie eine gebundene Funktion oder Aktion verwenden, müssen Sie den vollständig qualifizierten Namen angeben, der Microsoft.Dynamics.CRM. + <Funktions- oder Aktionsname> in der URL enthält.

Anforderung:

GET [Organization Uri]/api/data/v9.2/systemusers(ce31e691-f559-ec11-8f8f-000d3a308de4)/Microsoft.Dynamics.CRM.sample_IsSystemAdmin HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

Antwort:

HTTP/1.1 200 OK
OData-Version: 4.0

{
  "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.sample_IsSystemAdminResponse",
  "HasRole": false
}

In diesem Beispiel werden 10 Benutzerdatensätze abgerufen und jeder benutzer getestet, um zu ermitteln, ob jeder Benutzer über die Sicherheitsrolle "Systemadministrator" verfügt.

Konsolenausgabe:

Der tatsächliche Wert der Namen hängt von den Personen in Ihrer Umgebung ab.

Top 10 users and whether they have System Administrator role.
        Gediminas Matulis does not have the System Administrator role.
        Gaby Frost does not have the System Administrator role.
        Henrikas Martinkus does not have the System Administrator role.
        Alain Davignon HAS the System Administrator role.
        Isobel Macintyre HAS the System Administrator role.
        Ale Laukaitiene HAS the System Administrator role.
        Rudabeh Yekta HAS the System Administrator role.
        Grazina Januliene HAS the System Administrator role.
        Pranciskus Sukys HAS the System Administrator role.
        Asha Sawant HAS the System Administrator role.

Ein weiteres Beispiel für eine gebundene Funktion finden Sie in der Verwendung der Funktion RetrievePrincipalAccess im nächsten Beispiel.

Abschnitt 7: Ungebundene Aktion GrantAccess

Mithilfe der GrantAccess-Aktion können Benutzer bestimmte Berechtigungen für andere Benutzer in ihrer Umgebung freigeben.

Der Beispielcode demonstriert die folgenden Vorgänge:

  1. Erstellen Sie einen freizugebenden Datensatz.

  2. Suchen Sie einen anderen aktivierten Benutzer als den aktuellen Benutzer.

  3. Verwenden Sie die RetrievePrincipalAccess-Funktion , um zu überprüfen, welche Zugriffsrechte der Benutzer für den von Ihnen erstellten Datensatz hat.

    Anforderung:

    GET [Organization Uri]/api/data/v9.2/systemusers(ce31e691-f559-ec11-8f8f-000d3a308de4)/Microsoft.Dynamics.CRM.RetrievePrincipalAccess(Target=@p1)?@p1={'@odata.id':'accounts(659876fd-6d29-ed11-9db1-00224804f8e2)'} HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    

    Antwort:

    HTTP/1.1 200 OK
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.RetrievePrincipalAccessResponse",
    "AccessRights": "ShareAccess"
    }
    

    Konsolenausgabe:

    Testing user: Gediminas Matulis
    Current users access: ShareAccess
    
  4. Wenn der Benutzer nicht über AccessRightsDeleteAccess verfügt, gewähren Sie dem Benutzer diesen Zugriff mithilfe der GrantAccess Aktion.

    Anforderung:

    POST [Organization Uri]/api/data/v9.2/GrantAccess HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "Target": {
       "accountid": "659876fd-6d29-ed11-9db1-00224804f8e2",
       "@odata.type": "Microsoft.Dynamics.CRM.account"
    },
    "PrincipalAccess": {
       "AccessMask": "DeleteAccess",
       "Principal": {
          "systemuserid": "ce31e691-f559-ec11-8f8f-000d3a308de4",
          "@odata.type": "Microsoft.Dynamics.CRM.systemuser"
       }
     }
    }
    

    Antwort:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    
  5. Nach dem Erteilen DeleteAccesszeigt derselbe Aufruf der RetrievePrincipalAccess-Funktion an, dass der Benutzer jetzt Zugriff auf das Löschen dieses Datensatzes hat:

    Anforderung:

    GET [Organization Uri]/api/data/v9.2/systemusers(ce31e691-f559-ec11-8f8f-000d3a308de4)/Microsoft.Dynamics.CRM.RetrievePrincipalAccess(Target=@p1)?@p1={'@odata.id':'accounts(659876fd-6d29-ed11-9db1-00224804f8e2)'} HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    

    Antwort:

    HTTP/1.1 200 OK
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.RetrievePrincipalAccessResponse",
    "AccessRights": "DeleteAccess, ShareAccess"
    }
    

    Konsolenausgabe:

    Gediminas Matulis was granted DeleteAccess
    

Abschnitt 8: Gebundene Aktion AddPrivilegesRole

AddPrivilegesRole Aktion ist eine Aktion, die an den Rollen Entität Typ gebunden ist. Verwenden Sie sie, um einer Sicherheitsrolle Berechtigungen hinzuzufügen.

Der Beispielcode führt die folgenden Vorgänge aus:

  1. Erstellen Sie eine Sicherheitsrolle. Sie müssen die Rolle mit einer Geschäftseinheit verknüpfen. Sie haben den Wert der Geschäftseinheits-ID in Abschnitt 1: Ungebundene Funktion WhoAmI abgerufen.

    Anforderung:

    POST [Organization Uri]/api/data/v9.2/roles HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "businessunitid@odata.bind": "businessunits(cca3985e-c618-ea11-a811-000d3a33f066)",
    "name": "Test Role"
    }
    

    Antwort:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    OData-EntityId: [Organization Uri]/api/data/v9.2/roles(44ee44ee-ff55-aa66-bb77-88cc88cc88cc)
    
  2. Rufen Sie die Rolle ab und erweitern Sie die sammlungsbewertete roleprivileges_association-Navigationseigenschaft, um die in der Rolle enthaltenen Berechtigungen einzuschließen.

    Anforderung:

    GET [Organization Uri]/api/data/v9.2/roles(44ee44ee-ff55-aa66-bb77-88cc88cc88cc)?$select=roleid&$expand=roleprivileges_association($select=name) HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    

    Antwort:

    HTTP/1.1 200 OK
    ETag: W/"13278232"
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#roles(roleid,roleprivileges_association(name))/$entity",
    "@odata.etag": "W/\"13278232\"",
    "roleid": "44ee44ee-ff55-aa66-bb77-88cc88cc88cc",
    "roleprivileges_association": [
       {
          "@odata.etag": "W/\"142279\"",
          "name": "prvReadSharePointData",
          "privilegeid": "fecbd29c-df64-4ede-a611-47226b402c22"
       },
       {
          "@odata.etag": "W/\"142304\"",
          "name": "prvReadSdkMessage",
          "privilegeid": "94c3ac2c-eb23-41cb-a903-4e2e49e910b4"
       },
       {
          "@odata.etag": "W/\"142421\"",
          "name": "prvWriteSharePointData",
          "privilegeid": "cfdd12cf-090b-4599-8302-771962d2350a"
       },
       {
          "@odata.etag": "W/\"142477\"",
          "name": "prvReadSdkMessageProcessingStepImage",
          "privilegeid": "122e085f-8c52-47e8-8415-875dee1c961e"
       },
       {
          "@odata.etag": "W/\"142695\"",
          "name": "prvReadSdkMessageProcessingStep",
          "privilegeid": "db10a828-ec49-4035-8b7e-c58efaf169ec"
       },
       {
          "@odata.etag": "W/\"142713\"",
          "name": "prvReadPluginAssembly",
          "privilegeid": "f5b50296-a212-488a-be92-cbcca8971717"
       },
       {
          "@odata.etag": "W/\"142735\"",
          "name": "prvCreateSharePointData",
          "privilegeid": "5eb85025-363b-46ea-a77e-ce24159cd231"
       },
       {
          "@odata.etag": "W/\"142740\"",
          "name": "prvReadPluginType",
          "privilegeid": "9365005c-4703-473b-8d3c-d073cfd8670c"
       },
       {
          "@odata.etag": "W/\"142761\"",
          "name": "prvReadSharePointDocument",
          "privilegeid": "d71fc8d0-99bc-430e-abd7-d95c64f11e9c"
       }
    ]
    }
    
  3. Zeigen Sie die Anzahl der Berechtigungen an, die standardmäßig für die neue Rolle erstellt wurden.

    Konsolenausgabe:

    Number of privileges in new role: 9
          prvReadSharePointData
          prvReadSdkMessage
          prvWriteSharePointData
          prvReadSdkMessageProcessingStepImage
          prvReadSdkMessageProcessingStep
          prvReadPluginAssembly
          prvCreateSharePointData
          prvReadPluginType
          prvReadSharePointDocument
    
  4. Rufen Sie die Definition der prvCreateAccount- und prvReadAccount-Berechtigungen aus der Berechtigung EntityType ab.

    Anforderung:

    GET [Organization Uri]/api/data/v9.2/privileges?$select=name&$filter=name eq 'prvCreateAccount' or name eq 'prvReadAccount' HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    

    Antwort:

    HTTP/1.1 200 OK
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#privileges(name)",
    "value": [
       {
          "@odata.etag": "W/\"142189\"",
          "name": "prvReadAccount",
          "privilegeid": "886b280c-6396-4d56-a0a3-2c1b0a50ceb0"
       },
       {
          "@odata.etag": "W/\"142359\"",
          "name": "prvCreateAccount",
          "privilegeid": "d26fe964-230b-42dd-ad93-5cc879de411e"
       }
     ]
    }
    
  5. Bereiten Sie eine Liste der Instanzen RolePrivilege ComplexType für die prvCreateAccount- und prvReadAccount-Berechtigungen vor, wobei die Depth-Eigenschaft auf PrivilegeDepth „Grundlegend“ festgelegt ist.

  6. Übergeben Sie die Liste als den AddPrivilegesRole.Privileges-Parameter.

    Anforderung:

    POST [Organization Uri]/api/data/v9.2/roles(44ee44ee-ff55-aa66-bb77-88cc88cc88cc)/Microsoft.Dynamics.CRM.AddPrivilegesRole HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    
    {
    "Privileges": [
       {
          "Depth": "Basic",
          "PrivilegeId": "886b280c-6396-4d56-a0a3-2c1b0a50ceb0",
          "BusinessUnitId": "cca3985e-c618-ea11-a811-000d3a33f066",
          "PrivilegeName": "prvReadAccount"
       },
       {
          "Depth": "Basic",
          "PrivilegeId": "d26fe964-230b-42dd-ad93-5cc879de411e",
          "BusinessUnitId": "cca3985e-c618-ea11-a811-000d3a33f066",
          "PrivilegeName": "prvCreateAccount"
       }
     ]
    }
    

    Antwort:

    HTTP/1.1 204 NoContent
    OData-Version: 4.0
    
  7. Rufen Sie die Berechtigungen ab, die der Rolle zugeordnet sind, um zu bestätigen, dass Sie sie hinzugefügt haben.

    Anforderung:

    GET [Organization Uri]/api/data/v9.2/roles(44ee44ee-ff55-aa66-bb77-88cc88cc88cc)?$select=roleid&$expand=roleprivileges_association($select=name) HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    If-None-Match: null
    Accept: application/json
    

    Antwort:

    HTTP/1.1 200 OK
    ETag: W/"13278248"
    OData-Version: 4.0
    
    {
    "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#roles(roleid,roleprivileges_association(name))/$entity",
    "@odata.etag": "W/\"13278248\"",
    "roleid": "44ee44ee-ff55-aa66-bb77-88cc88cc88cc",
    "roleprivileges_association": [
       {
          "@odata.etag": "W/\"142189\"",
          "name": "prvReadAccount",
          "privilegeid": "886b280c-6396-4d56-a0a3-2c1b0a50ceb0"
       },
       {
          "@odata.etag": "W/\"142279\"",
          "name": "prvReadSharePointData",
          "privilegeid": "fecbd29c-df64-4ede-a611-47226b402c22"
       },
       {
          "@odata.etag": "W/\"142304\"",
          "name": "prvReadSdkMessage",
          "privilegeid": "94c3ac2c-eb23-41cb-a903-4e2e49e910b4"
       },
       {
          "@odata.etag": "W/\"142359\"",
          "name": "prvCreateAccount",
          "privilegeid": "d26fe964-230b-42dd-ad93-5cc879de411e"
       },
       {
          "@odata.etag": "W/\"142421\"",
          "name": "prvWriteSharePointData",
          "privilegeid": "cfdd12cf-090b-4599-8302-771962d2350a"
       },
       {
          "@odata.etag": "W/\"142477\"",
          "name": "prvReadSdkMessageProcessingStepImage",
          "privilegeid": "122e085f-8c52-47e8-8415-875dee1c961e"
       },
       {
          "@odata.etag": "W/\"142695\"",
          "name": "prvReadSdkMessageProcessingStep",
          "privilegeid": "db10a828-ec49-4035-8b7e-c58efaf169ec"
       },
       {
          "@odata.etag": "W/\"142713\"",
          "name": "prvReadPluginAssembly",
          "privilegeid": "f5b50296-a212-488a-be92-cbcca8971717"
       },
       {
          "@odata.etag": "W/\"142735\"",
          "name": "prvCreateSharePointData",
          "privilegeid": "5eb85025-363b-46ea-a77e-ce24159cd231"
       },
       {
          "@odata.etag": "W/\"142740\"",
          "name": "prvReadPluginType",
          "privilegeid": "9365005c-4703-473b-8d3c-d073cfd8670c"
       },
       {
          "@odata.etag": "W/\"142761\"",
          "name": "prvReadSharePointDocument",
          "privilegeid": "d71fc8d0-99bc-430e-abd7-d95c64f11e9c"
       }
    ]
    }
    

    Konsolenausgabe:

    Number of privileges after: 11
          prvReadAccount
          prvReadSharePointData
          prvReadSdkMessage
          prvCreateAccount
          prvWriteSharePointData
          prvReadSdkMessageProcessingStepImage
          prvReadSdkMessageProcessingStep
          prvReadPluginAssembly
          prvCreateSharePointData
          prvReadPluginType
          prvReadSharePointDocument
    

Abschnitt 9: Beispielaufzeichnungen löschen

Fügen Sie jeden datensatz, den Sie in diesem Beispiel erstellen, zu einer Liste hinzu, damit Sie sie am Ende löschen können. Verwenden Sie eine $batch Anforderung zum Löschen dieser Datensätze.

Anforderung:

POST [Organization Uri]/api/data/v9.2/$batch HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

--batch_d6010246-cd97-429f-bc05-cf20054cfe8a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-Length: 121

DELETE /api/data/v9.2/accounts(22cc22cc-dd33-ee44-ff55-66aa66aa66aa) HTTP/1.1


--batch_d6010246-cd97-429f-bc05-cf20054cfe8a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-Length: 121

DELETE /api/data/v9.2/accounts(33dd33dd-ee44-ff55-aa66-77bb77bb77bb) HTTP/1.1


--batch_d6010246-cd97-429f-bc05-cf20054cfe8a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-Length: 122

DELETE /api/data/v9.2/solutions(b37bc86a-4c3a-41be-b35d-ddfd129276c5) HTTP/1.1


--batch_d6010246-cd97-429f-bc05-cf20054cfe8a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-Length: 121

DELETE /api/data/v9.2/accounts(659876fd-6d29-ed11-9db1-00224804f8e2) HTTP/1.1


--batch_d6010246-cd97-429f-bc05-cf20054cfe8a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-Length: 118

DELETE /api/data/v9.2/roles(44ee44ee-ff55-aa66-bb77-88cc88cc88cc) HTTP/1.1


--batch_d6010246-cd97-429f-bc05-cf20054cfe8a--

Antwort:

HTTP/1.1 200 OK
OData-Version: 4.0

--batchresponse_cb852192-c300-4ed7-a54f-dc5fc7ee27c3
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
OData-Version: 4.0


--batchresponse_cb852192-c300-4ed7-a54f-dc5fc7ee27c3
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
OData-Version: 4.0


--batchresponse_cb852192-c300-4ed7-a54f-dc5fc7ee27c3
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
OData-Version: 4.0


--batchresponse_cb852192-c300-4ed7-a54f-dc5fc7ee27c3
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
OData-Version: 4.0


--batchresponse_cb852192-c300-4ed7-a54f-dc5fc7ee27c3
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
OData-Version: 4.0


--batchresponse_cb852192-c300-4ed7-a54f-dc5fc7ee27c3--

Konsolenausgabe:

Deleting created records.

Siehe auch

Verwenden der Dataverse-Web-API
Nutzen von Web-API-Funktionen
Web-API-Aktionen verwenden
Internet-API-Funktionen- und Aktionen-Beispiel (C#)
Beispiele von Funktionen und Aktionen (clientseitiges JavaScript)
Web-API-Funktionen und -Aktionen (Beispiel) (PowerShell)