Qore CdsRestClient Module Reference 2.0
Loading...
Searching...
No Matches
CdsRestClient::CdsRestClient Class Reference

this class provides the REST client API for communication with Microsoft Dynamics 365 Common Data Service servers More...

#include <CdsRestClient.qm.dox.h>

Inheritance diagram for CdsRestClient::CdsRestClient:
[legend]

Public Member Methods

 constructor (hash< auto > opts, *softbool do_not_connect)
 creates the object with the given options
 
string getApi ()
 returns the CDS REST API version currently in use
 

Static Public Member Methods

static hash< auto > getOptions (hash< auto > opts)
 returns options for the CdsRestClient::CdsRestClient::constructor()
 
static raiseError (string fmt,...)
 throws an exception due to an error
 

Public Attributes

const ApiProfiles = ...
 API profiles.
 
const DefaultApiVersion = "9.2"
 Default API version.
 
const DefaultBusinessCentralBaseUri = "https://api.businesscentral.dynamics.com/"
 Default Dynamics 365 base URI.
 
const DefaultDynamicsPingHeaders = ...
 Default Dynamics ping headers.
 
const DefaultDynamicsPingMethod = "GET"
 Default Dynamics ping method.
 
const DefaultDynamicsPingPath = "{api_uri_path}/systemusers?$top=1&$select=identityid"
 Default Dynamics ping path.
 
const OAuth2AuthUriPathSuffix = "/oauth2/v2.0/authorize"
 OAuth2 auth URI path suffix.
 
const OAuth2BaseUrl = "https://login.microsoftonline.com/"
 OAuth2 auth URL.
 
const OAuth2TokenUriPathSuffix = "/oauth2/v2.0/token"
 OAuth2 token URI path suffix.
 
const RequestUriPathPrefix = "/api/data/v"
 Request URI path prefix.
 

Private Member Methods

hash< auto > sendAndDecodeResponse (*data body, string m, string path, hash< auto > hdr, *reference< hash< auto > > info, *softbool decode_errors)
 sends the outgoing HTTP message and recodes the response to data
 

Detailed Description

this class provides the REST client API for communication with Microsoft Dynamics 365 Common Data Service servers

This class requires the following options for Microsoft Dynamics 365 Common Data Service authentication and authorization to the target server:

  • client_id: the OAuth2 client ID
  • client_secret: the OAuth2 client secret
  • tenant: the tenant ID

Errors returned from Dynamics will have the following format:

  • err: will be the hex error code from Dynamics (ex: 0x8006088a)
  • desc: the exception message (ex: Resource not found for the segment 'WhoAmi'.)
  • arg: the error hash from the server plus a decoded_body argument with any decoded message body

Member Function Documentation

◆ constructor()

CdsRestClient::CdsRestClient::constructor ( hash< auto >  opts,
*softbool  do_not_connect 
)

creates the object with the given options

Example:
CdsRestClient rest({
"url": "https://my-instance.crm2.dynamics.com",
"client_id": client_id,
"client_secret": client_secret,
"tenant": "bef147c4-8dd3-4e18-9af8-9573d86d3738",
"oauth2_grant_type": "client_credentials",
});
Parameters
optsvalid options are the same as RestClient with the following differences:
  • api: the API version for CDS
  • api_profile: one of:
    • none (no options set)
    • dynamics (set client options for the MS Dynamics 365 API)
  • data: see DataSerializationOptions for possible values; the default is "json"
  • scope: the OAuth2 scope for the login; the default depends on the "api_profile" option
  • tenant: (required) the tenant ID
do_not_connectif False (the default), then a connection will be immediately established to the remote server
Exceptions
RESTCLIENT-ERRORinvalid option passed to constructor, unsupported data serialization, etc
CDSRESTCLIENT-ERRORmissing or invalid required option for REST authentication or communication