AnsweredAssumed Answered

Can I use the API to Create and Configure a Place?

Question asked by Jonathan Block on Aug 17, 2016
Latest reply on Apr 27, 2017 by Jonathan Block

As we build out our Jive cloud instance, I'm looking into the process of fully automating place creation.  The major use case is to set up places for potentially thousands of company projects per year.  Note that these aren't Jive Projects, but would rather map to Groups or Spaces.  We don't want to leave it up to the individual project teams to figure out how to manually effect a consistent baseline place setup, and we really don't want everyone making up their own way of doing it.

 

I'm working my way through the API, and so far have made some good progress (basic steps below for anyone interested).  But I've now hit a significant wall:  I can't programmatically apply a template to the default activity page, and I don't seem to be able to apply a template to the place itself.  If I create a new place and then manually update the default page, even without changing anything, the page becomes visible to the API (/places/<id>/pages).  Without that manual intervention that API query comes up empty.  I really hope this is a bug or I'm totally missing something, because this is a dead-in-the-water obstacle.

 

I'm also curious about the ability to enable external storage using our pre-configured external storage setup.  I see an unanswered question about that (Creating place via v3 api with external storage.), so I'm a bit pessimistic that there's a good answer to be found on this point.

 

For reference, here are the API endpoints I'm using so far:

  • Check if the target space already exists, and, if not, grab the intended parent space:  GET /places
  • Grab the intended template:  GET /placeTemplates
  • Grab the intended place category:  GET /placeTopics
  • Create the place:  POST /places

{

  `"type`" : `"space`",

  `"name`" : `"<name>`",

  `"parent`" : `"<API reference to the parent place>`",

  `"displayName`" : `"<url slug based on the name>`",

  `"description`" : `"<description>`",

  `"status`" : `"Active`",

  `"visibleToExternalContributors`" : false,

  `"tags`" : [`"project`",`"project <identifier>`"],

  `"placeTopics`" : [`"<place category>`"]

}

  • Get the new place's pages (should only be the default Activity page):  GET /places/<placeID>/pages
    Response is empty unless the page has already been edited and saved manually.
  • Apply the template to the place:  PUT /pages/<pageID>

{

    `"template`" : {

        `"id`" : `"<template ID>`",

        `"name`" : `"<template name>`"

    }

}

Unable to test this step due to errors in the previous step.  Syntax could be completely wrong.

 

Intended additional steps:

  • Configure tiles within the template
  • Enable external storage (we can live without this if necessary)
  • Identify and assign place admins
  • In some cases, lock down access to a security group (created separately)

 

I'd appreciate any guidance available on the issues I've already encountered and any others you think I'm about to run into.

Outcomes