django-orchestra/docs/API.rst

223 lines
10 KiB
ReStructuredText

=================================
Orchestra REST API Specification
=================================
:Version: 0.1
Resources
---------
.. contents::
:local:
Panel [application/vnd.orchestra.Panel+json]
============================================
A Panel represents a user's view of all accessible resources.
A "Panel" resource model contains the following fields:
========================== ============ ========== ===========================
**Field name** **Type** **Occurs** **Description**
========================== ============ ========== ===========================
uri URI 1 A GET against this URI refreshes the client representation of the resources accessible to this user.
services Object[] 0..1 {'DNS': {'names': "names_URI", 'zones': "zones_URI}, {'Mail': {'Virtual_user': "virtual_user_URI" ....
accountancy Object[] 0..1
administration Object[] 0..1
========================== ============ ========== ===========================
Contact [application/vnd.orchestra.Contact+json]
================================================
A Contact represents
========================== ============ ========== ===========================
**Field name** **Type** **Occurs** **Description**
========================== ============ ========== ===========================
uri URI 1
name String 1
surname String 0..1
second_surname String 0..1
national_id String 1
type String 1
language String 1
address String 1
city String 1
zipcode Number 1
province String 1
country String 1
fax String 0..1
emails String[] 1
phones String[] 1
billing_contact Contact 0..1
technical_contact Contact 0..1
administrative_contact Contact 0..1
========================== ============ ========== ===========================
TODO: phone and emails for this contacts this contacts should be equal to Contact on Django models
User [application/vnd.orchestra.User+json]
==========================================
A User represents
========================== ============ ========== ===========================
**Field name** **Type** **Occurs** **Description**
========================== ============ ========== ===========================
username String
uri URI 1
contact Contact
password String
first_name String
last_name String
email_address String
active Boolean
staff_status Boolean
superuser_status Boolean
groups Group
user_permissions Permission[]
last_login String
date_joined String
system_user SystemUser
virtual_user VirtualUser
========================== ============ ========== ===========================
SystemUser [application/vnd.orchestra.SystemUser+json]
======================================================
========================== =========== ========== ===========================
**Field name** **Type** **Occurs** **Description**
========================== =========== ========== ===========================
user User
uri URI 1
user_shell String
user_uid Number
primary_group Group
homedir String
only_ftp Boolean
========================== =========== ========== ===========================
VirtualUser [application/vnd.orchestra.VirtualUser+json]
========================================================
========================== ============ ========== ===========================
**Field name** **Type** **Occurs** **Description**
========================== ============ ========== ===========================
user User
uri URI 1
emailname String
domain Name <VirtualDomain?>
home String
========================== ============ ========== ===========================
Zone [application/vnd.orchestra.Zone+json]
==========================================
========================== ============ ========== ===========================
**Field name** **Type** **Occurs** **Description**
========================== ============ ========== ===========================
origin String
uri URI 1
contact Contact
primary_ns String
hostmaster_email String
serial Number
slave_refresh Number
slave_retry Number
slave_expiration Number
min_caching_time Number
records Object[] Domain record i.e. {'name': ('type', 'value') }
========================== ============ ========== ===========================
Name [application/vnd.orchestra.Name+json]
==========================================
========================== ============ ========== ===========================
**Field name** **Type** **Occurs** **Description**
========================== ============ ========== ===========================
name String
extension String
uri URI 1
contact Contact
register_provider String
name_server Object[] Name server key/value i.e. {'ns1.pangea.org': '1.1.1.1'}
virtual_domain Boolean <TODO: is redundant with virtual domain type?>
virtual_domain_type String
zone Zone
========================== ============ ========== ===========================
VirtualHost [application/vnd.orchestra.VirtualHost+json]
========================================================
<TODO: REST and dynamic attributes (resources, contacts)>
A VirtualHost represents an Apache-like virtualhost configuration, which is useful for generating all the configuration files on the web server.
A VirtualHost resource model contains the following fields:
========================== ============ ========== ===========================
**Field name** **Type** **Occurs** **Description**
========================== ============ ========== ===========================
server_name String
uri URI
contact Contact
ip String
port Number
domains Name[]
document_root String
custom_directives String[]
fcgid_user String
fcgid_group string String
fcgid_directives Object Fcgid custom directives represented on a key/value pairs i.e. {'FcgidildeTimeout': 1202}
php_version String
php_directives Object PHP custom directives represented on key/value pairs i.e. {'display errors': 'True'}
resource_swap_current Number PHP custom directives represented on key/value pairs i.e. {'display errors': 'True'}
resource_swap_limit Number PHP custom directives represented on key/value pairs i.e. {'display errors': 'True'}
resource_cpu_current Number
resource_cpu_limit Number
========================== ============ ========== ===========================
Daemon [application/vnd.orchestra.Daemon+json]
==============================================
========================== ============ ========== ===========================
**Field name** **Type** **Occurs** **Description**
========================== ============ ========== ===========================
name String
uri URI 1
content_type String
active Boolean
save_template String
save_method String
delete_template String
delete_method String
daemon_instances Object[] {'host': 'expression'}
========================== ============ ========== ===========================
Monitor [application/vnd.orchestra.Monitor+json]
================================================
========================== ============ ========== ===========================
**Field name** **Type** **Occurs** **Description**
========================== ============ ========== ===========================
uri URI 1
daemon Daemon
resource String
monitoring_template String
monitoring method String
exceed_template String <TODO: rename on monitor django model>
exceed_method String
recover_template String
recover_method String
allow_limit Boolean
allow_unlimit Boolean
default_initial Number
block_size Number
algorithm String
period String
interval String 0..1
crontab String 0..1
========================== ============ ========== ===========================
#Layout inspired from http://kenai.com/projects/suncloudapis/pages/CloudAPISpecificationResourceModels