diff --git a/remoting_client/API-docs/content.html b/remoting_client/API-docs/content.html index c8eb8151641e2e921e813b5751516b7b77ff53f4..00590071d584d34c9c1205e276f6a44d9165579d 100644 --- a/remoting_client/API-docs/content.html +++ b/remoting_client/API-docs/content.html @@ -1,44 +1,159 @@ - - ISPCOnfig 3 remote API documentation - - - - - - - -
-

Home

-
-ISPConfig 3 remote API documentation. -
- - + + + + ISPCOnfig 3 remote API documentation + + + + + + + +
+

ISPConfig 3 Remote API Documentation

+
+

Notes

+ +

These notes are new for v3.2 and the content will change.
+ This is currently in FAQ format, because the topics seem to be Frequently Asked Questions.
+ Over time, notes will also be added to individual function pages.
+ If you would like to help with this process, please visit the forum, and add your comments to this thread + which has been created for this purpose.
+ Thank you for your patience and collaboration. +

+ +

What do we do to get started with API calls?

+
+

Create a "Remote" User in the ISPConfig UI. Check boxes there to assign permissions for + the kinds of queries that can be processed by that user.

+

Almost all API queries require a session_id. To get that, call the login function, sending the remote + username and password. The response will be a single value which will be used as your session ID for + a limited time period for all other requests.

+

Finishing with a logout request is recommended, but optional since the session IDs expire.

+
+ +

How do I get all records with a _get request?

+
Rather than using a single integer ID as a primary key selector (domain_id, group_id, + etc), use -1. Where the primary key for a _get request is a string, use an empty array ' [] '. Do not + use an empty string ' "" ', which is itself a valid string and will/should return an empty array result. +
+ +

Are defaults used if we only send some of the defined parameters?

+
No, there are no default values except where explicitly noted. For example, in the + system_config_get function, the key element is optional because it is documented as defaulting to an + empty string. For all requests, except where documented otherwise, send all documented parameters.
+ +

Examples are provided for SOAP, why not for REST?

+
The REST API supports all functions and can be exactly substituted for SOAP examples. + For all functions, the request and response parameters are the same for SOAP and REST.
+ +

Are there examples for cURL? Python? C#? JavaScript? (anything else...)

+
The documentation details request and response parameters which can be passed using any + language or toolchain. The URL always includes the function name. Queries are always sent via POST. The + result is always in the same JSON format. Use Postman or another tool to generate code in your preferred + languages.
+ +

I created a new record (domain, mail user, etc). Why isn't it showing in the UI?

+
If a parent ID is invalid, a transaction may be accepted, with a record created under a + different parent entity. +
+ +

Why does a response show a successful result when there is no data?

+
Carefully check the names and values being sent. Invalid name/value pairs are ignored. A + request that does not include a valid request paramenter is requesting nothing, so the return value is + nothing. The query was successful, and returned no data.
+ +

Why are parameters $session_id and others being ignored?

+
The documentation shows PHP function syntax. SOAP and REST parameters do not include the + leading $dollar-sign
+ +

Key Concept:

+
Based on the above you may be thinking there is very little error checking with this + API. That is correct. As noted by Jesse Norell:
"The api is largely just an interface to the + database tables, and will usually accept what you send, whether that's consistent/correct or not. It + can be a feature, eg. you can create a mail alias first before creating the mailbox to which it + forwards, but it does mean you have a lot more testing to do on your side because you can't just + rely on an error to be thrown if you send inconsistent data."
+
+ +

What is sys_userid and sys_groupid?

+
+

These fields are referenced often in the developer forum and in code, usually with some confusion. + These internal database fields are used in SQL queries to determine parent/child client + relationships. The fields are not passed to API calls, with the exception of one function, + client_get_id which is a convenience function to return the client_id for a sys_userid. In the past + other functions included these keys in the request. Now, when a function request includes a + client_id, at query time a lookup is done to get the internal sys_userid for that client.

+

The sys_userid can identify the creator of a record. This may be the ID of the local/UI user or the + remote/API user that is logging in to create records. If a client record is created without a + reseller, both the sys_userid and the sys_groupid are the same user ID.

+

If a client record is created with a reseller, the meaning of the fields is completely different. The + sys_userid is not a logged-in user ID. It is a new ID that represents the client under the reseller. + The sys_groupid for a client under a reseller is (a foreign-key to) the sys_userid of the client + record for the reseller. In this scenario, the sys_groupid establishes a child-to-parent + relationship.

+
+ +

What domains are the 'domains_' functions operating on?

+
The 'domains_' functions update the 'domains' table, which is used by the domain limit + module. Clients and resellers are restricted to the domains in this table. To activate domain limits, go + to System > Interface > Main Config, then to the Domains tab. Logout/in. Then go to Sites, Add or Edit a + site, the "Domain" dropdown list uses this table.
+ +

What will be here next?

+
Maybe something you write...
+ +
+
+ + + + \ No newline at end of file