OpenCORE RPC

From Openpanel Documentation Wiki

Jump to: navigation, search

This is an overview of the RPC calls implemented in opencore. For clarity, data has been transcribed as XML trees, but be aware that opencore currently only communicates to the outside world using JSON data.

Contents

bind

Creates a new session bound to a specific User object.

id 
The user id
password 
The user's plaintext password

request

    <dict id="header">
        <string id="command">bind</string>
    </dict>
    <dict id="body">
        <string id="id">admin@example.net</string>
        <string id="password">foobar</string>
    </dict>

response

    <dict id="header">
        <string id="session_id">5b9d38c5-6d8f-4c8d-9b15-32e30ecb3a91</string>
        <integer id="errorid">0</integer>
        <string id="error">OK</string>
    </dict>

getrecords

Fetch records out of the database. Note that calling this with an empty classid is currently possible but may be deprecated in the future.

classid
The requested class, or empty for all classes in context.
parentid
The uuid of the parent object, or empty for ROOT.

request

    <dict id="header">
        <string id="command">getrecords</string>
        <string id="session_id">5b9d38c5-6d8f-4c8d-9b15-32e30ecb3a91</string>
    </dict>
    <dict id="body">
        <string id="classid">User</string>
        <string id="parentid">6e648b70-a5e3-4be9-339d-2d6846c4d5ff</string>
    </dict>

response

    <dict id="header">
        <string id="session_id">5b9d38c5-6d8f-4c8d-9b15-32e30ecb3a91</string>
        <integer id="errorid">0</integer>
        <string id="error">OK</string>
    </dict>
    <dict id="body">
        <dict id="data">
            <dict id="User" type="class">
                <dict id="admin@example.net" type="object">
                    <string id="password"/>
                    <string id="class">User</string>
                    <string id="uuid">1e873ae9-65f5-4449-429f-6f094147ac11</string>
                    <string id="parentid">6e648b70-a5e3-4be9-339d-2d6846c4d5ff</string>
                    <string id="id">admin@example.net</string>
                    <string id="metaid">admin@example.net</string>
                    <string id="childclasses"/>
                </dict>
            </dict>
            <dict id="info">
                <integer id="total">1</integer>
            </dict>
        </dict>
    </dict>

request 2

    <dict id="header">
        <string id="command">getrecords</string>
        <string id="session_id">5b9d38c5-6d8f-4c8d-9b15-32e30ecb3a91</string>
    </dict>
    <dict id="body">
        <string id="classid">Domain</string>
    </dict>

response 2

    <dict id="header">
        <string id="session_id">5b9d38c5-6d8f-4c8d-9b15-32e30ecb3a91</string>
        <integer id="errorid">0</integer>
        <string id="error">OK</string>
    </dict>
    <dict id="body">
        <dict id="data">
            <dict id="Domain">
                <dict id="$prototype:master$">
                    <string id="class">Domain</string>
                    <string id="uuid">650ac76d-7a33-4567-a154-a6f36cf273e7</string>
                    <string id="id">$prototype:master$</string>
                    <string id="metaid">$prototype:master$</string>
                    <dict id="childclasses">
                        <integer id="DNSDomain">1</integer>
                    </dict>
                </dict>
                <dict id="lameass.net">
                    <string id="class">Domain</string>
                    <string id="uuid">0cc947cf-9454-4eab-70cf-bf4c1e637430</string>
                    <string id="ownerid">6e648b70-a5e3-4be9-339d-2d6846c4d5ff</string>
                    <string id="id">lameass.net</string>
                    <string id="metaid">lameass.net</string>
                    <string id="childclasses"/>
                </dict>
            </dict>
            <dict id="info">
                <integer id="total">2</integer>
            </dict>
        </dict>
    </dict>

getrecord

Fetch a single record out of the database.

classid
The requested class, or empty for all classes in context.
parentid
The uuid of the parent object, or empty for ROOT.

request

    <dict id="header">
        <string id="command">getrecord</string>
        <string id="session_id">5b9d38c5-6d8f-4c8d-9b15-32e30ecb3a91</string>
    </dict>
    <dict id="body">
        <string id="classid">Domain</string>
        <string id="objectid">lameass.net</string>
    </dict>

request (by uuid only)

    <dict id="header">
        <string id="command">getrecord</string>
        <string id="session_id">5b9d38c5-6d8f-4c8d-9b15-32e30ecb3a91</string>
    </dict>
    <dict id="body">
        <string id="objectid">0cc947cf-9454-4eab-70cf-bf4c1e637430</string>
    </dict>

response

    <dict id="header">
        <string id="session_id">5b9d38c5-6d8f-4c8d-9b15-32e30ecb3a91</string>
        <integer id="errorid">0</integer>
        <string id="error">OK</string>
    </dict>
    <dict id="body">
        <dict id="data">
            <dict id="object">
                <dict id="Domain">
                    <string id="uuid">0cc947cf-9454-4eab-70cf-bf4c1e637430</string>
                    <string id="version">1</string>
                    <string id="ownerid">6e648b70-a5e3-4be9-339d-2d6846c4d5ff</string>
                    <string id="id">lameass.net</string>
                    <string id="metaid">lameass.net</string>
                </dict>
            </dict>
            <string id="layout">default</string>
        </dict>
    </dict>

create

Create a new instance of an object.

classid 
The requested class.
parentid 
The uuid of the parent object, or empty for root.
objectid 
The requested metaid (if the class indexing is set to manual)

request

    <dict id="header">
        <string id="command">create</string>
        <string id="session_id">5b9d38c5-6d8f-4c8d-9b15-32e30ecb3a91</string>
    </dict>
    <dict id="body">
        <string id="objectid">lameass.net</string>
        <string id="parentid">0cc947cf-9454-4eab-70cf-bf4c1e637430</string>
        <string id="classid">DNSDomain</string>
        <dict id="data">
            <string id="type">master</string>
            <string id="primaryns">10.0.0.1</string>
            <string id="secondaryns">10.0.0.2</string>
            <string id="admin">hostmaster@lameass.net</string>
        </dict>
    </dict>

response

    <dict id="header">
        <string id="session_id">5b9d38c5-6d8f-4c8d-9b15-32e30ecb3a91</string>
        <integer id="errorid">0</integer>
        <string id="error">OK</string>
    </dict>
    <dict id="body">
        <dict id="data">
            <string id="objid">1baf7671-4abf-4058-7314-eebc2d59328c</string>
        </dict>
    </dict>

update

Update an instance of an object.

request

    <dict id="header">
        <string id="command">update</string>
        <string id="session_id">5b9d38c5-6d8f-4c8d-9b15-32e30ecb3a91</string>
    </dict>
    <dict id="body">
        <string id="classid">DNSDomain</string>
        <string id="objectid">1baf7671-4abf-4058-7314-eebc2d59328c</string>
        <dict id="data">
            <string id="primaryns">10.1.1.1</string>
            <string id="secondaryns">10.1.1.2</string>
        </dict>
    </dict>

response

    <dict id="header">
        <string id="session_id">5b9d38c5-6d8f-4c8d-9b15-32e30ecb3a91</string>
        <integer id="errorid">0</integer>
        <string id="error">OK</string>
    </dict>

delete

Delete an object.

classid
The object's class.
parentid
The uuid of the parent object (only needed if objectid is meta)
objectid
The uuid or metaid of an object.

request

    <dict id="header">
        <string id="command">delete</string>
        <string id="session_id">5b9d38c5-6d8f-4c8d-9b15-32e30ecb3a91</string>
    </dict>
    <dict id="body">
        <string id="classid">DNSDomain</string>
        <string id="objectid">1baf7671-4abf-4058-7314-eebc2d59328c</string>
    </dict>

response

    <dict id="header">
        <string id="session_id">5b9d38c5-6d8f-4c8d-9b15-32e30ecb3a91</string>
        <integer id="errorid">0</integer>
        <string id="error">OK</string>
    </dict>

ping

Keep session alive.

request

    <dict id="header">
        <string id="command">ping</string>
        <string id="session_id">5b9d38c5-6d8f-4c8d-9b15-32e30ecb3a91</string>
    </dict>

response

    <dict id="header">
        <string id="session_id">5b9d38c5-6d8f-4c8d-9b15-32e30ecb3a91</string>
        <integer id="errorid">0</integer>
        <string id="error">OK</string>
    </dict>


classinfo

Get meta-information about a class.

classid 
The class to inspect.

request

    <dict id="header">
        <string id="command">classinfo</string>
        <string id="session_id">5b9d38c5-6d8f-4c8d-9b15-32e30ecb3a91</string>
    </dict>
    <dict id="body">
        <string id="classid">Domain</string>
    </dict>

response

    <dict id="header">
        <string id="session_id">54a9fef8-06ca-40de-061b-71726fee570d</string>
        <integer id="errorid">0</integer>
        <string id="error">OK</string>
    </dict>
    <dict id="body">
        <dict id="data">
            <dict id="structure">
                <dict id="parameters">
                    <dict id="id">
                        <string id="description">Domain name</string>
                        <string id="type">string</string>
                        <bool id="enabled">true</bool>
                        <bool id="visible">true</bool>
                        <bool id="required">false</bool>
                        <string id="regexp">^([a-z0-9][a-z0-9-]*)(\.[a-z0-9][a-z0-9-]*)+$</string>
                        <string id="example"/>
                        <string id="default"/>
                        <string id="tooltip"/>
                    </dict>
                </dict>
                <string id="methods"/>
            </dict>
            <dict id="capabilities">
                <bool id="create">true</bool>
                <bool id="delete">true</bool>
                <bool id="update">true</bool>
                <bool id="getinfo">false</bool>
            </dict>
            <string id="enums"/>
            <dict id="class">
                <string id="id">Domain</string>
                <string id="uuid">78c10b86-2250-4327-9978-0470fb41ad0c</string>
                <string id="shortname">domain</string>
                <string id="title">Domain</string>
                <string id="menuclass"/>
                <string id="description">A collection of domain-related services</string>
                <string id="explanation"/>
                <integer id="sortindex">20</integer>
                <integer id="version">1</integer>
                <string id="magicdelimiter"/>
                <string id="parentrealm"/>
                <string id="prototype"/>
                <string id="singleton"/>
                <string id="metatype">none</string>
                <string id="metabase"/>
                <string id="metadescription"/>
                <string id="metachildren"/>
                <string id="indexing">manual</string>
            </dict>
            <dict id="info">
                <dict id="children">
                    <dict id="59417a58-d793-4ec7-a909-a9acb0236971">
                        <string id="id">Domain:Vhost</string>
                        <string id="shortname">vhost</string>
                        <string id="menuclass"/>
                        <string id="description">Virtual host configuration</string>
                    </dict>
                    <dict id="01a3286f-f41e-4964-89b7-4637539bfec8">
                        <string id="id">Domain:HTTPForward</string>
                        <string id="shortname">forward</string>
                        <string id="menuclass"/>
                        <string id="description">HTTP Forwarding</string>
                    </dict>
                    <dict id="660fecfd-bde5-4358-ac62-20dcbbf3b207">
                        <string id="id">Domain:Alias</string>
                        <string id="shortname">alias</string>
                        <string id="menuclass"/>
                        <string id="description">A secondary aliased domain</string>
                    </dict>
                    <dict id="17302eb3-bee7-4827-b0c6-4812d45b8c4d">
                        <string id="id">Meta:DNSDomain</string>
                        <string id="shortname">dnsdomain</string>
                        <string id="menuclass"/>
                        <string id="description">DNS zone</string>
                    </dict>
                    <dict id="4629fca4-5672-4273-bc92-b9ad863c9028">
                        <string id="id">DNSDomain:Master</string>
                        <string id="shortname">masterdomain</string>
                        <string id="menuclass"/>
                        <string id="description">DNS Master zone</string>
                    </dict>
                    <dict id="cb7272f4-5fdb-4ec9-9cb2-ca30b925c381">
                        <string id="id">DNSDomain:Slave</string>
                        <string id="shortname">slavedomain</string>
                        <string id="menuclass"/>
                        <string id="description">DNS Slave zone</string>
                    </dict>
                    <dict id="82c1223c-0667-4a7f-8a19-ff42588c9360">
                        <string id="id">FTP:Master</string>
                        <string id="shortname">ftp-user</string>
                        <string id="menuclass"/>
                        <string id="description">FTP master account</string>
                    </dict>
                    <dict id="b34b170d-2e8b-4c16-ae9a-a7009fc427ae">
                        <string id="id">Mail</string>
                        <string id="shortname">email</string>
                        <string id="menuclass"/>
                        <string id="description">Email domain configuration</string>
                    </dict>
                </dict>
            </dict>
        </dict>
    </dict>

getreferences

Resolve references.

refstring 
The reference string in the form "classname/fieldname".

request

    <dict id="header">
        <string id="command">getreferences</string>
        <string id="session_id">39eec423-840f-405f-757a-35e2442c6f20</string>
    </dict>
    <dict id="body">
        <string id="refstring">Network:Interface/address</string>
    </dict>

response

    <dict id="header">
        <string id="session_id">39eec423-840f-405f-757a-35e2442c6f20</string>
        <integer id="errorid">0</integer>
        <string id="error">OK</string>
    </dict>
    <dict id="body">
        <dict id="data">
            <string id="dummy0">127.0.0.8</string>
        </dict>
    </dict>
Personal tools