UNPKG

@rabama/dynapi

Version:

a third party library to use dynamics 365 web api using httpntlm module.

132 lines (110 loc) 3.31 kB
# Dynamics Web Api This is a third party interface for using microsoft dynamics 365 using ntlm authentication. this package is mainly using [httpntlm](https://www.npmjs.com/package/httpntlm) module to send http request. ## Installation use bellow command to add dynapi to your dependencies: `npm install dynapi --save` ## Simple Example You can use the module like the example below: ``` // Import the required modules const { Credential, QueryBuilder } = require("rabama-dynapi""); // Specify credentials to login to dynamics 365 server const credential = new Credential({ url: "http://example.com/organization", username: "testUsername", password: "TestPassword", domain: "testDomain", version: "8.2", //Optional workstation: "app" //Optional }); // Send a query to fetch name of 3 accounts as a result. const result = new QueryBuilder(credential) .get("accounts") .top(3) .select("name") .send(); ``` ## API ### Credential: Create a new credential instance to authenticate through dynamics 365 server then pass it into the QueryBuilder constructor. ``` const credential = new Credential({ url: "http://example.com/organization", username: "testUsername", password: "TestPassword", domain: "testDomain", version: "8.2", //Optional workstation: "app" //Optional}) ``` ### QueryBuilder: There are 5 types of methods that you can send to the dynamics 365 as Web API Request. ##### .create(entitySetName) Create new account with the name of test. You can set any attribute value in the set method. ``` new QueryBuilder(credential) .create("accounts") .set({ name: "test" }) .send(); ``` ##### .update(entitySetName, entityId) Update an account with the specified id and change its name to test. You can set any attribute value in the set method. ``` new QueryBuilder(credential) .update("accounts", recordId) .set({ name: "test" }) .send(); ``` ##### .delete(entitySetName, entityId) Delete an account with the specified Id. ``` new QueryBuilder(credential) .delete("accounts", recordId) .send(); ``` ##### .read(entitySetName[, recordId]) Retrieve any account with the specified id. You can use select method while retrieving a single record to get those attributes only. ``` new QueryBuilder(credential) .read("accounts", recordId) .select("name", "createdon") .send(); ``` Or just retrieve all accounts as you desire. You can use multiple kind of filters while retrieving multiple records. ``` new QueryBuilder(credential) .read("accounts") .select("name", "createdon") .top(10) .filter("name eq test") .send(); ``` It is also possible to append any pathname to the url to get more information about a field(for example a lookup field) by passing pathname into send method parameter. ``` // The result here would be about the user who created this account. new QueryBuilder(credential) .read("accounts", recordId) .select("name", "createdon", "createdby") .send("/createdby"); ``` ##### .execute(actionName, method [, entitySetName, id]) You can execute any kind of action including globals. ``` new QueryBuilder(credential) .execute("WhoAmI", "get") .send(); ``` ## Debugging You can include `dynapi` in the `process.env.DEBUG` to see the sent requests for debugging purposes.