Creating a padoq (group)

Kate Santo Updated by Kate Santo

Padoq apps are made of padoqs (also known as groups in customer-facing communication). Padoqs are one of the central and most important features of our platform.

Find out how users create padoqs in the user version of this guide. If you're after the technical details of creating a padoq, keep reading.

Prerequisites

  • You can download the iOS or Android app on your phone to follow this journey along. And you can also log in or sing up to the web app here
  • You can also follow this journey by checking out the images you'll find throughout
  • The full API is documented in Swagger UI

Journey explained

  1. The journey starts when the user selects My Padoqs in the main menu
    1. The endpoint called here is getUserPadoqs, which returns a list of padoqs that the user has joined or requested to join. It takes only 1 compulsory parameter, which is the ID of the user that the request is for. And it returns an array of padoqs with relevant information. For example, it will specify the title, colour, image URI and interests of each existing padoq. Like this:
    2. {
      "padoqs": [
      {
      "name": "my-place",
      "title": "My Place",
      "colour": "pink",
      "exploreGroup": "string",
      "description": "A description of this padoq.",
      "location": {
      "name": "Europe/Manchester",
      "coordinates": [
      53.466667,
      -2.233333 ]
      },
      "memberCount": 100,
      "uri": "https://my-place.padoq.com/padoq/",
      "official": true,
      "visible": false,
      "pending": false,
      "sponsored": false,
      "interests": [
      "Music",
      "Food & Drink",
      "Travel" ],
      "imageUri": "https://media.padoq.com/avatar/66570917-c4d5-430d-ad2b-99bdd1eaf795" }
      ]
      }
  2. The user will then tap the Create Padoq button
    1. The button looks different in different platforms. Here's how it looks on Android (red overlay button on bottom right corner) and iOS (+ icon on top left):
  3. User completes fields through the UI, but no information is sent or saved yet
    1. Display name, description and icon
      1. On the first screen, the user will add that information, which looks like this in the code (note that name in the UI is title in the code. And name in the code is not set by the user, but generated automatically by the app):
      2. {
        "name": "my-place",
        "title": "My Place",
        "description": "A description of this padoq.",
        "promoImageUri": {
        "uri": "string",
        "title": "string",
        "displayText": "string",
        "imageUri": "string",
        "mediaType": "image/jpeg",
        "mediaData": {
        "height": 100,
        "width": 100 }
        }
        }
      3. There are 2 HEAD type endpoints that check whether the name the user is trying to give their padoq already exists (isPadoqNameUsed) and whether the title exists (isPadoqNameTitleUsed)
      4. The padoq's icon can come from the user's device library, it can be a photo taken on the spot with the device's camera or the user can choose an image from an existing library by Padoq. This library lives in the app itself
    2. Group type
      1. The next property the user will set is stereotype. The possible values of this property are: classic and broadcast. Each of these sets whether padoq members can or cannot post
      2. If the user sets the value to classic, the array of permittedPostTypes will have this content by default. So members can post:
      3.   "permittedPostTypes":[
        "BASIC",
        "COMMENT",
        "VOTE",
        "VOTE_RS",
        "PAYMENT_RS",
        "EVENT_RS",
        "SURVEY_RS",
        "FORM_RS"
        ],
      4. If the user sets the value to broadcast, the array of permittedPostTypes will have this content by default. So members cannot post, but they can reply to all admin posts:
      5. {
        "permittedPostTypes":[
        "COMMENT",
        "VOTE_RS",
        "PAYMENT_RS",
        "EVENT_RS",
        "SURVEY_RS",
        "FORM_RS"
        ]
        }
    3. Location
      1. When the user sets the location of their new padoq, the data goes into the location property. It helps users find groups near to them in pages like Explore
    4. Colour scheme
      1. When the user picks a colour for their padoq, their choice goes into the colour property. This colour is then used across the board for that padoq. For example, the buttons, headers and banners for that padoq will use that colour
    5. Interests
      1. The UI will ask the user to select at least 1 interest group to go into the interests property. This helps users find this padoq in Explore, for example, but only if the padoq is public (see step g below)
    6. Minimum age
      1. The minimumAge field defaults to 18, but the creator of the padoq can change it so it's better suited to their audience. When a user onboards the app, they need to enter their date of birth (see step 5a in User registration). So, because personas are connected to users, personas under the minimum age won't be allowed to join the padoq
    7. Privacy level: public, secret or private
      1. The privacyLevel property in a padoq has 3 possible values: public, secret and private.
        - Public padoqs can be found in Explore and anyone in the app can join them (the padoq admin doesn't need to approve requests to join)
        - Secret padoqs don't come up in Explore or in search and members can only join via an invite link
        - Private padoqs can be found in Explore, but the admin needs to approve requests to join
    8. Approving membership requests
      1. If the creator of the padoq switches the toggle in the UI, the padoq will be private (see above) and all requests to join will need approval. The request looks like a post that only the admin can see and action.
      2. When the user requests to join, the createPersona endpoint is called. This collects the information the user enters, including any required information the admin has asked for. Then, when the admin accepts the request to join, the user's persona for this padoq becomes active and the property roles in the persona receives the value of member
    9. Required information
      1. The creator of the padoq can set up questions for members to answer as they join. The admin can make these questions compulsory or not. In the code, the answers to the required information lives in the personaDetails schema. Admins can see the answers by all members via the getPersonas endpoint
  4. Accept admin T&Cs
    1. When the user accepts the T&Cs, as a padoq creator, the personalDataConsent property gets its value set to true
  5. Finally, create padoq
    1. After this process, the user will tap Create padoq. At this point, the provisionPadoq endpoint is called. The request includes everything that the user has provided in the UI, plus default values for things like allowAttachments or displayOptions. Find out more about how a padoq is displayed to the user in Padoq feed and menus.
    2. The vast majority of the properties in a padoq can be modified at a later stage. But here's an example of a payload that could have been sent in this request:
    3. {
      "name": "my-place",
      "title": "My Place",
      "privacyLevel": "PRIVATE",
      "official": true,
      "visible": true,
      "stereotype": "BROADCAST",
      "colour": "soft_pink",
      "description": "A description of this padoq.",
      "allowAttachments": true,
      "allowExternalLinks": true,
      "personaProfilesPublic": true,
      "minimumAge": 18,
      "publishToPadoq": false,
      "acceptPartnerPosts": true,
      "personalDataConsent": true,
      "location": {
      "name": "Europe/Manchester",
      "coordinates": [
      53.466667,
      -2.233333 ]
      },
      "interests": [
      "Music",
      "Food & Drink",
      "Travel" ],
      "creatorUsername": "myPadoqAlias",
      "creatorEmail": "john.smith@example.com",
      "personaDetailsSchema": {},
      "attributes": {},
      "promoImageUri": {
      "uri": "string",
      "title": "string",
      "displayText": "string",
      "imageUri": "string",
      "mediaType": "image/jpeg",
      "mediaData": {
      "height": 100,
      "width": 100 }
      },
      "paymentProvidersConfig": {
      "additionalProp1": {},
      "additionalProp2": {},
      "additionalProp3": {}
      },
      "permittedGuestPostTypes": [
      "FORM_RS" ],
      "videoConfServerUri": "string",
      "categories": [
      "East side",
      "North east" ],
      "permittedPrivileges": [
      "gold",
      "silver" ],
      "displayOptions": {
      "options": [
      "HIDE_PADOQ_MENU" ]
      }
      }

How did we do?

Glossary | A guide to how we talk

App menus

Contact