Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Maestrano currently provides four SDKs to facilitate the integration of Single Sign-On, Billing and Data Sharing. Current SDKs are: Java, PHP, Ruby and .NET.

If no SDKs are available in the language you currently use, then it may be necessary to revert to a SDK-free integration using our REST APIs directly. This guide explains how to proceed in such case.

Table of Contents
maxLevel2
stylenone

1 How to use the developer platform dynamic configuration endpoint?

After you configured an environment on the developer platform and linked it to one or many marketplace(s), you will be able to retrieve all your marketplaces' configuration using the dynamic configuration endpoint.

The dynamic configuration endpoint return a JSON document describing your configuration for every marketplace you are linked to. To know more about how to get your app ready for multiple marketplaces, you can read this article: multi-marketplace integration.

Below is a commented example of a dynamic configuration endpoint response:

...

languagejs
titleExample of dynamic configuration endpoint

...

Maestrano currently provides four SDKs to facilitate the integration of Single Sign-On, Billing and Data Sharing. Current SDKs are: Java, PHP, Ruby and .NET.

If no SDKs are available in the language you currently use, then it may be necessary to revert to a SDK-free integration using our REST APIs directly. This guide explains how to proceed in such case.


...

Table of Contents
maxLevel2
stylenone

...

1 - How to use the developer platform dynamic configuration endpoint?

After you configured an environment on the developer platform and linked it to one or many marketplace(s), you will be able to retrieve all your marketplaces' configuration using the dynamic configuration endpoint.

The dynamic configuration endpoint return a JSON document describing your configuration for every marketplace you are linked to. To know more about how to get your app ready for multiple marketplaces, you can read this article: multi-marketplace integration.

To retrieve the dynamic configuration, do a GET request to https://developer.maestrano.com/api/config/v1/marketplaces using your developer platform environment API Key and Secret.


Image Added
 

Below is a commented example of a dynamic configuration endpoint response:

Code Block
languagejs
titleExample of dynamic configuration endpoint
#Request
curl -u <Developer Platform API Key:<Developer Platform API Secret> -X "GET" -H 'Accept: application/json' https://developer.maestrano.com/api/config/v1/marketplaces
example
curl -u ddddfd-sdfsf-49b2-9675-sadfs:NRNEUmKskTyOdfdfx_1215454-X "GET" -H 'Accept: application/json' https://developer.maestrano.com/api/config/v1/marketplaces


# Response
{
  "marketplaces": [
    {
      # => marketplace
      # The name of this marketplace configuration.
      "marketplace": "maestrano",

      # => nid
      # NID of your app on this marketplace.
      "nid": "demo-app-production",

	  # => environment
      # The name of your application.
      "environment": "demo-app",

      # => host
      # This is your application informations.
      "app": {
        "host": "https://demo-app-uat.your-domain.com"
      },

 	  # => Marketplace (Mno-Hub) API
      # Informations & credentials for your app to connect to this marketplace API. 
      # Those values are provided automatically.
      "api": {
        "id": "608d42d2-4bf2-f76a-ba5a-f76a-XXXXXXXXXXXX",
        "key": "bdePCmsBXz4XXXXXXXXX",
        "host": "https://api-hub.maestrano.com",
        "base": "/api/v1/"
      },

      # => SSO configuration
      # Informations & credentials for your app to connect to this marketplace API. 
      # TheThose namevalues ofare thisprovided marketplace configurationautomatically.
      "marketplacesso": {
"maestrano",        # => nididm
      # NID of# yourBy appdefault onwe thisconsider marketplace.that the domain managing user identification is "nid": "demo-app-production",

	  # => environment
      # The name of your application.
the same as your application host (see above app.host parameter).
     "environment": "demo-app",  # If you have a dedicated #domain =>managing hostuser identification and therefore responsible for the #single Thissign-on is your application informations.
      "app": {handshake (e.g: https://idp.my-app.com) then you can specify it in the developer platform.
        "hostidm": "https://demo-app-uat.your-domain.com"",
    
   },   	  # => Marketplaceinit_path (Mno-Hubrequired)
 API       # This Informationsis &the credentialspath forin your appapplication that allows users to connectinitiate tothe thisSingle marketplaceSign-On APIhandshake.
        # Those values are provided automatically.
      "api": { Upon reaching this endpoint, users on your application will automatically create a SSO request and redirect the user to Maestrano. Maestrano will then authenticate and authorize the user.
        "idinit_path": "608d42d2-4bf2-f76a-ba5a-f76a-XXXXXXXXXXXX",/maestrano/auth/saml/init/maestrano-dev",

        #  "key": "bdePCmsBXz4XXXXXXXXX",=> consume_path (required)
        # This is your "host": "https://api-hub.maestrano.io",
        "base": "/api/v1/"application path to the SAML endpoint that allows users to finalize SSO authentication.
      },  # During the 'consume' action, your #application =>sets SSOusers configuration(and associated group) up and/or log them #in.
Informations & credentials for your app to connect to this marketplace API. "consume_path": "/maestrano/auth/saml/consume/maestrano-dev",

        # Those=> valuesidp
are provided automatically.      # "sso": {
    It corresponds to the platform host.
   # => idm   # The endpoint will provide you #the Bycorrect defaulthost wefor considerthe thatplatform theyou domainare managingbeing userconnected identificationto.
is the same as your application host (see above app.host parameter). "idp": "https://api-hub.maestrano.io",

        # If you have a dedicated domain managing user identification and therefore responsible for the single sign-on handshake (e.g: https://idp.my-app.com) then you can specify it in the developer platform=> x509_fingerprint and x509_certificate
        # The endpoint will provide you the correct host for the platform you are being connected to.
        "idmx509_fingerprint": "https://demo-app-uat.your-domain.com1A:89:28:62:78:CE:63:26:3A:20:23:9C:20:78:36:8A:B5:2E:CC:BE",
        "x509_certificate":     # => init_path (required)
        # This is the path in your application that allows users to initiate the Single Sign-On handshake.
"-----BEGIN CERTIFICATE-----\nMIIDcjCCAlqgA (...) wjlUbMnInFMUsqbw==\n-----END CERTIFICATE-----\n"
       # Upon reaching this endpoint},
users
on your application will automatically create a SSO request and redirect the user to Maestrano. Maestrano will then authenticate and authorize the user.
 # ===> Data Sharing
      # This section describes Connec!™ configuration
      "init_pathconnec": "/maestrano/auth/saml/init/maestrano-dev",{
         # => consume_pathconnec.host (required)
        # It Thiscorresponds isto yourthe applicationendpoint pathused to thefetch SAMLdata endpointfrom.
that allows users to finalize SSO authentication.  # It changes with the tenant and #the Duringenvironment. theWe 'consume' action, your application sets users (and associated group) up and/or log them inwill provide you the correct host for the platform you are being connected to.
        "consume_pathhost": "https:/maestrano/auth/saml/consume/maestrano-dev/api-connec.maestrano.com",
         # => idp"base_path": "/api/v2",
          # It corresponds to the platform host.
"timeout": 300
      },

      # The=> endpoint will provide you the correct host for the platform you are being connected to.
 Data Sharing
      # This section describes Connec!™ configuration
      "idpwebhooks": "https://api-hub.maestrano.io",

{
       # => x509_fingerprint and x509_certificate # Maestrano will issue a DELETE request to #the Thefollowing endpointpaths willto providenotify you
the  correct host for the platform you are# beingof connectedany to.service cancellation (group deletion) or any user being  "x509_fingerprint": "1A:89:28:62:78:CE:63:26:3A:20:23:9C:20:78:36:8A:B5:2E:CC:BE",removed from a group.
        # => "x509_certificate": "-----BEGIN CERTIFICATE-----\nMIIDcjCCAlqgA (...) wjlUbMnInFMUsqbw==\n-----END CERTIFICATE-----\n"
      },groups_path
        # => group_users_path
        "account": {
# ===> Data Sharing       # This section describes Connec!™ configuration"group_path": "/maestrano/account/groups/:id/maestrano-dev",
          "connecgroup_user_path": {"/maestrano/account/groups/:group_id/users/:id/maestrano-dev"
        # => connec.host (required)},

        # ItConnec correspondsSubscriptions/Webhook
to the endpoint used to fetch data from. # The following section configures the Connec!™ webhooks
# It changes with the tenant and the environment. We will provide you the correct host for the platform you are being connected to. "connec": {
          "external_ids": true,
          "hostinitialization_path": "https://api-connec.maestrano.com",null,
          # => "basenotifications_path": "/api/v2", (required)
          "timeout": 300
      },

      # => Data Sharing# This is the path of your application where notifications (created/updated entities) will be POSTed to.
          # ThisYou sectionshould describeshave Connec!™a configurationcontroller matching this path handling the update "webhooks": {
 of your internal entities
      # Maestrano will issue a DELETE# requestbased toon the following paths to notifyConnec!™ entities you receive
       # of any service cancellation (group deletion) or any user being removed from a group. "notification_path": "/maestrano/connec/notifications/maestrano-dev",
          "subscriptions": null
   # => groups_path   }
     # => group_users_path}
    },
    "account": {
          "group_path"nid": "/maestrano/account/groups/:id/maestrano-dev",
   demo-app-production",
      "group_user_pathmarketplace": "/maestrano/account/groups/:group_id/users/:id/maestrano-dev"some-telco",
        }"environment": "demo-app",
      "app": {
 # Connec Subscriptions/Webhook     "host": "https://demo-app-uat.your-domain.com",
  #  The following section configures the Connec!™ webhooks "synchronization_start_path": "/maestrano/maestrano-uat/synchronizations",
         "connec": {
"synchronization_toggle_path": "/maestrano/maestrano-uat/synchronizations/toggle_sync",
         "externalsynchronization_status_idspath": true,"/maestrano/maestrano-uat/synchronizations/:cld-uid"
      },
      "initialization_pathapi": null,{
        "id": "app-15dh",
 # => notifications_path (required)    "key": "6daaadfa07701c8819ca4a6ad85948cc4b84051e0e4927aa33f29dd3faee1303",
     # This is the path of your application where notifications (created/updated entities) will be POSTed to."host": "https://api-hub-uat.maestrano.io",
        "base": "/api/v1/"
      },
    # You should have a controller matching this path handling the update of your internal entities"sso": {
        "idm": "https://demo-app-uat.your-domain.com",
            # based on the Connec!™ entities you receive
"init_path": "/maestrano/auth/saml/init/maestrano-uat",
        "consume_path": "/maestrano/auth/saml/consume/maestrano-uat",
         "notification_pathidp": "https:/maestrano/connec/notifications/maestrano-dev/api-hub-uat.maestrano.io",
          "subscriptions": null
        }
      }
    },
"x509_fingerprint": "861e:2e:54:c4:67:80:68:47:81:18:f7:d3:29:87:77:f8:69:54:2f",
   {       "nidx509_certificate": "demo----app-production",
      "marketplace": "some-telco",
BEGIN CERTIFICATE-----\nMIIDezCCAuSgAwIBAgIJ (...) TnpziApEC7uUsBou2rlKmTGw==\n-----END CERTIFICATE-----\n"
     "environment": "demo-app" },
      "appconnec": {
        "host": "https://demoapi-appconnec-uat.your-domainmaestrano.comio",
        "synchronization_start_path": "/maestrano/maestrano-uat/synchronizations",
        "synchronization_togglebase_path": "/maestrano/maestrano-uat/synchronizations/toggle_sync",
        "synchronization_status_path": "/maestrano/maestrano-uat/synchronizations/:cld-uid" "/api/v2",
      },  "timeout": 300
   "api": {  },
      "idwebhooks": "app-15dh",{
        "keyaccount": "6daaadfa07701c8819ca4a6ad85948cc4b84051e0e4927aa33f29dd3faee1303",{
          "hostgroup_path": "https://api-hub-uat.maestrano.io",/maestrano/account/groups/:id/maestrano-uat",
          "basegroup_user_path": "/api/v1/"/maestrano/account/groups/:group_id/users/:id/maestrano-uat"
        },
        "ssoconnec": {
          "idmexternal_ids": true,
        "https://demo-app-uat.your-domain.com",  "initialization_path": null,
          "initnotification_path": "/maestrano/authconnec/saml/initnotifications/maestrano-uat",
          "consume_pathsubscriptions": "/maestrano/auth/saml/consume/maestrano-uat", null
        }
      }
    }
   "idp": "https://api-hub-uat.maestrano.io",
        "x509_fingerprint": "861e:2e:54:c4:67:80:68:47:81:18:f7:d3:29:87:77:f8:69:54:2f",
        "x509_certificate": "-----BEGIN CERTIFICATE-----\nMIIDezCCAuSgAwIBAgIJ (...) TnpziApEC7uUsBou2rlKmTGw==\n-----END CERTIFICATE-----\n"
      },
      "connec": {
        "host": "https://api-connec-uat.maestrano.io",
        "base_path": "/api/v2",
        "timeout": 300
      },
      "webhooks": {
        "account": {
          "group_path": "/maestrano/account/groups/:id/maestrano-uat",
          "group_user_path": "/maestrano/account/groups/:group_id/users/:id/maestrano-uat"
        },
        "connec": ]
}


...


2 - Single Sign-On 

Maestrano provides two different Single Sign-On protocols: SAML 2.0 and OpenID. OpenID has become fairly more popular than SAML and is also more supported by the community. Chances are you will find a library handling OpenID out-of-the-box for your language of choice. A few examples:

Our OpenID guide will give you all the details on the best way to integrate our OpenID provider into your application, just check it out here.



...

3 - Account Management API & Webhooks

Our account management API is a REST API allowing you to perform:

  • Membership Management: get details about your Maestrano customers (memberships) and get notified of service cancellation actions via webhooks.
    • Group/Organization
    • User
    • Groups Webhook  
    • Group Users Webhook - Mandatory
  • Billing Management: create/retrieve/cancel bills or recurring bills for your Maestrano customers.
    • Bill (Adhoc)
    • RecurringBill
Warning
titleRegarding App Id and Secret

Beware, the my-app-id and my-app-secret used to call these API needs to be retrieved previously using a GET call to https://developer.maestrano.com/api/config/v1/marketplaces

3.1 - Membership Management

Groups (company/organization) API

> Retrieve your list of customers (= list of companies having selected your application on Maestrano)

Code Block
languagebash
# Request
curl -u <my-app-id>:<my-app-secret> \
  -H "Accept: application/json" \
  https://api-hub.maestrano.com/api/v1/account/groups
 
# Response
{  
   "success":true,
   "errors":{},
   "data":[  
      {  
        "external_ids": true "object":"account_group",
          "initialization_pathid": null,
"cld-4",
         "notificationcreated_pathat": "/maestrano/connec/notifications/maestrano-uat"2014-05-21T04:04:53Z",
          "subscriptions": null
   updated_at":"2014-05-21T04:04:53Z",
    }       }
"has_credit_card":true,
   }
  ]
}

...

Maestrano provides two different Single Sign-On protocols: SAML 2.0 and OpenID. OpenID has become fairly more popular than SAML and is also more supported by the community. Chances are you will find a library handling OpenID out-of-the-box for your language of choice. A few examples:

Our OpenID guide will give you all the details on the best way to integrate our OpenID provider into your application, just check it out here.

3 Account Management API & Webhooks

Our account management API is a REST API allowing you to perform:

  • Membership Management: get details about your Maestrano customers (memberships) and get notified of service cancellation actions via webhooks.
    • Group/Organization
    • User
    • Groups Webhook  
    • Group Users Webhook - Mandatory
  • Billing Management: create/retrieve/cancel bills or recurring bills for your Maestrano customers.
    • Bill (Adhoc)
    • RecurringBill

3.1 Membership Management

Groups (company/organization) API

...

      "status":"running",
         "name":"Logistics Department - Sales",
         "free_trial_end_at":"2014-06-21T04:04:53Z",
         "email":"cld-4@example.com",
         "currency":"USD",
         "timezone":"America/Los_Angeles",
         "country":"US",
         "city":"Los Angeles"
      }
  ]
}


> Retrieve a specific customer

Code Block
languagebash
# Request
curl -u <my-app-id>:<my-app-secret> \
  -H "Accept: application/json" \
  https://api-hub.maestrano.com/api/v1/account/groups/cld-4
 
# Response
{  
   "success":true,
   "errors":{},
   "data":[  
      {  
  
      "object":"account_group",
         "id":"cld-4",
         "created_at":"2014-05-21T04:04:53Z",
 
       "updated_at":"2014-05-21T04:04:53Z",
 
       "has_credit_card":true,
 
       "status":"running",
 
       "name":"Logistics Department - Sales",
 
       "free_trial_end_at":"2014-06-21T04:04:53Z",
 
       "email":"cld-4@example.com",
 
       "currency":"USD",
 
       "timezone":"America/Los_Angeles",
         "country":"US",
 
       "city":"Los Angeles"
   
  }

 ]
}

...

}

Users API

> Retrieve the list of users with access to your application

Code Block
languagebash
# Request
curl -u <my-app-id>:<my-app-secret> \
  -H "Accept: application/json" \
  https://api-hub.maestrano.com/api/v1/account/groups/cld-4users
 
# Response
{  
   "success":true,
   "errors":{},
   "data":[ { 
       "object":"account_group",{  
     "id":"cld-4",       "created_atobject":"2014-05-21T04:04:53Zaccount_user",
         "updated_atid":"2014-05-21T04:04:53Zusr-2",

     "has_credit_card":true,       "statusname":"runningJohn",
      	 "namesurname":"Doe"Logistics,
Department - Sales",       "free_trial_end_atemail":"2014-06-21T04:04:53Zjohn.doe@gmail.com",
         "emailcountry":"cld-4@example.comAU",
         "currencysso_session":"USDd7kp1b5esnfgtz6xhiv9qwlja34yu8crm2o0",
         "timezonecreated_at":"America/Los_Angeles2014-05-21T00:37:34Z",
       "country":"US",  "updated_at":"2015-03-09T06:37:28Z"
      "city":"Los Angeles"}
   }]
}

...


> Retrieve the list of users with access to your applicationa specific user

Code Block
languagebash
# Request
curl -u <my-app-id>:<my-app-secret> \
  -H "Accept: application/json"  \
  https://api-hub.maestrano.com/api/v1/account/users/usr-2
 
# Response
{  
   "success":true,
   "errors":{},
   "data":[  
      {  
  
      "object":"account_user",
  
      "id":"usr-2",
  
      "name":"John",

     	 "surname":"Doe",
 
       "email":"john.doe@gmail.com",
 
       "country":"AU",
         "sso_session":"d7kp1b5esnfgtz6xhiv9qwlja34yu8crm2o0",
 
       "created_at":"2014-05-21T00:37:34Z",
 
       "updated_at":"2015-03-09T06:37:28Z"
 
    }
   ]
}

> Retrieve users of a specific usergiven customer

Code Block
languagebash
# Request
curl -u <my-app-id>:<my-app-secret> \
  -H "Accept: application/json"  \
  https://api-hub.maestrano.com/api/v1/account/users/usr-2
 ?group_id=cld-4
 
# Response
{  
   "success":true,
   "errors":{},
   "data":[  
      {  
         "object":"account_user",
         "id":"usr-2",
         "name":"John",
      	 "surname":"Doe",
         "email":"john.doe@gmail.com",
         "country":"AU",
         "sso_session":"d7kp1b5esnfgtz6xhiv9qwlja34yu8crm2o0",
         "created_at":"2014-05-21T00:37:34Z",
         "updated_at":"2015-03-09T06:37:28Z"
      }
   ]
}


Groups Webhook - getting notified a of Group cancelling their subscription to your service 
Status
subtletrue
colourRed
titleRequired

...

Code Block
languagebash
curl -u <my-app-id>:<my-app-secret> \
  -X "DELETE" \ 
  -H "Accept: application/json" \
  https://my-cloud-application.com/webhooks/maestrano/groups/cld-4/users/usr-2

3.2 - Billing Management 
Status
subtletrue
colourRed
titleRequired

Maestrano centralizes all billing functionalities. The goal is to provide to customers a single invoice at the end of the month summarising the expenses related to all the applications and services they have used during the month.

...

Code Block
languagebash
# Request
curl -u <my-app-id>:<my-app-secret> \ 
  -X "POST" \
  -H 'Accept: application/json' \
  -H "Content-type: application/json" \
  -d '{"group_id":"cld-4", "price_cents":2000, "description":"Product purchase"}' \
  https://api-hub.maestrano.com/api/v1/account/bills
 
# Response
{
   "success":true,
   "errors":{},
   "data":{
      "object":"account_bill",
      "id":"bill-520",
      "group_id":"cld-4",
      "created_at":"2015-06-03T05:00:33Z",
      "updated_at":"2015-06-03T05:00:33Z",
      "price_cents":2000,
      "status":"submitted",
      "currency":"AUD",
      "units":null,
      "description":"Product purchase",
      "period_started_at":null,
      "period_ended_at":null
   }
}

...

Code Block
languagebash
# Request
curl -u <my-app-id>:<my-app-secret> \ 
  -X "DELETE" \
  -H 'Accept: application/json' \
  https://api-hub.maestrano.com/api/v1/account/bills/bill-520
 
# Response
{
   "success":true,
   "errors":{},
   "data":{
      "object":"account_bill",
      "id":"bill-520",
      "group_id":"cld-4",
      "created_at":"2015-06-03T05:00:33Z",
      "updated_at":"2015-06-03T05:00:33Z",
      "price_cents":2000,
      "status":"cancelled",
      "currency":"AUD",
      "units":null,
      "description":"Product purchase",
      "period_started_at":null,
      "period_ended_at":null
   }
}

...

Code Block
languagebash
# Retrieve all your bills
curl -u <my-app-id>:<my-app-secret> \
  -H 'Accept: application/json' \
  https://api-hub.maestrano.com/api/v1/account/bills
 
# Retrieve a specific bill
curl -u <my-app-id>:<my-app-secret> \
 -H 'Accept: application/json' \
 https://api-hub.maestrano.com/api/v1/account/bills/bill-520

...

Code Block
languagebash
# Request
curl -u <my-app-id>:<my-app-secret> \ 
  -X "POST" \
  -H 'Accept: application/json' \
  -H "Content-type: application/json" \
  -d '{"group_id":"cld-4", "price_cents":2990, "description":"User license", "period": "Month", "start_date": "2015-08-27T23:22:37Z" }' \
  https://api-hub.maestrano.com/api/v1/account/recurring_bills
 
# Response
{
   "success":true,
   "errors":{},
   "data":{
      "object":"account_recurring_bill",
      "id":"rbill-523",
      "group_id":"cld-4",
      "created_at":"2015-06-03T05:02:19Z",
      "updated_at":"2015-06-03T05:02:19Z",
      "price_cents":2990,
      "status":"submitted",
      "currency":"AUD",
      "description":"User license",
      "start_date":"2015-08-27T23:22:37Z",
      "period":"month",
      "frequency":1,
      "cycles":null,
      "initial_cents":0,
      "last_execution_at":null,
      "next_execution_at":"2015-08-27T23:22:37Z",
      "remaining_cycles":null
   }
}

...

Code Block
languagebash
# Request
curl -u <my-app-id>:<my-app-secret> \ 
  -X "DELETE" \
  -H 'Accept: application/json' \
  https://api-hub.maestrano.com/api/v1/account/recurring_bills/rbill-523
 
# Response
{
   "success":true,
   "errors":{},
   "data":{
      "object":"account_recurring_bill",
      "id":"rbill-523",
      "group_id":"cld-4",
      "created_at":"2015-06-03T05:02:19Z",
      "updated_at":"2015-06-03T05:02:19Z",
      "price_cents":2990,
      "status":"cancelled",
      "currency":"AUD",
      "description":"User license",
      "start_date":"2015-08-27T23:22:37Z",
      "period":"month",
      "frequency":1,
      "cycles":null,
      "initial_cents":0,
      "last_execution_at":null,
      "next_execution_at":"2015-08-27T23:22:37Z",
      "remaining_cycles":null
   }
}

...

Code Block
languagebash
# Retrieve all your recurring bills
curl -u <my-app-id>:<my-app-secret> \
  -H 'Accept: application/json' \
  https://api-hub.maestrano.com/api/v1/account/recurring_bills
 
# Retrieve a specific recurring bill
curl -u <my-app-id>:<my-app-secret> \
 -H 'Accept: application/json' \
 https://api-hub.maestrano.com/api/v1/account/recurring_bills/rbill-523

...

FieldModeTypeRequiredDefaultDescription
idreadonlystring--The id of the recurring bill
group_idread/writestringYes-The id of the group you are charging
price_centsread/writeIntegerYes-The amount in cents to charge to the customer
descriptionread/writeStringYes-A description of the product billed as it should appear on customer invoice
periodread/writeString-MonthThe unit of measure for the billing cycle. Must be one of the following: 'Day', 'Week', 'SemiMonth', 'Month', 'Year'
frequencyread/writeInteger-1The number of billing periods that make up one billing cycle. The combination of billing frequency and billing period must be less than or equal to one year. If the billing period is SemiMonth, the billing frequency must be 1.
cyclesread/writeInteger-nilThe number of cycles this bill should be active for. In other words it's the number of times this recurring bill should charge the customer.
start_dateread/writeTime-NowThe date when this recurring bill should start billing the customer. Uses ISO 8601 format (e.g.: 2015-06-03T05:00:33Z)
created_atreadonlyTime--When the recurring bill was created. Uses ISO 8601 format (e.g.: 2015-06-03T05:00:33Z)
updated_atreadonlyTime--When the recurring bill was last updated. Uses ISO 8601 format (e.g.: 2015-06-03T05:00:33Z)
currencyread/writeString-AUDThe currency of the amount charged in ISO 4217 format (3 letter code)
statusreadonlyString--Status of the recurring bill. Either 'submitted', 'active', 'expired' or 'cancelled'.
initial_centsread/writeInteger-0Initial non-recurring payment amount - in cents - due immediately upon creating the recurring bill



...


4 - Connec!™ Data Sharing 
Status
subtletrue
colourRed
titleRequired

The Connec!™ Data Sharing REST API documentation can be found at the following URL: http://maestrano.github.io/connec/

More high level resources can also be found on this wiki, under the Connec!™ API V2 section: Connec!™ API V2 documentation