Creating a padoq (group)
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.
See for yourself
- You can download the iOS or Android app on your phone to follow this journey along. And you can also log in or sign up to the web app here
- You can also follow along by checking out the images or code snippets in this guide
- And you will find the relevant endpoints linked and explained in this guide, but the full API is documented in Swagger UI
Journey explained
- The journey starts when the user selects My Padoqs in the main menu
- 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 thetitle
,colour
,image URI
andinterests
of each existing padoq. Like this: {
"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" }
]
}
- 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
- The user will then tap the Create Padoq button
- 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):
- User completes fields through the UI, but no information is sent or saved yet
- Display name, description and icon
- 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. Andname
in the code is not set by the user, but generated automatically by the app): {
"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 }
}
}- 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)
- 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
- On the first screen, the user will add that information, which looks like this in the code (note that name in the UI is
- Group type
- The next property the user will set is
stereotype
. The possible values of this property are:classic
andbroadcast
. Each of these sets whether padoq members can or cannot post - If the user sets the value to
classic
, the array ofpermittedPostTypes
will have this content by default. So members can post: "permittedPostTypes":[
"BASIC",
"COMMENT",
"VOTE",
"VOTE_RS",
"PAYMENT_RS",
"EVENT_RS",
"SURVEY_RS",
"FORM_RS"
],- If the user sets the value to
broadcast
, the array ofpermittedPostTypes
will have this content by default. So members cannot post, but they can reply to all admin posts: {
"permittedPostTypes":[
"COMMENT",
"VOTE_RS",
"PAYMENT_RS",
"EVENT_RS",
"SURVEY_RS",
"FORM_RS"
]
}
- The next property the user will set is
- Location
- 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
- When the user sets the location of their new padoq, the data goes into the
- Colour scheme
- 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
- When the user picks a colour for their padoq, their choice goes into the
- Interests
- 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)
- The UI will ask the user to select at least 1 interest group to go into the
- Minimum age
- 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
- The
- Privacy level: public, secret or private
- The
privacyLevel
property in a padoq has 3 possible values:public
,secret
andprivate
.
- 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
- The
- Approving membership requests
- 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. - 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 ofmember
- If the creator of the padoq switches the toggle in the UI, the padoq will be
- Required information
- 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
- 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
- Display name, description and icon
- Accept admin T&Cs
- When the user accepts the T&Cs, as a padoq creator, the
personalDataConsent
property gets its value set totrue
- When the user accepts the T&Cs, as a padoq creator, the
- Finally, create padoq
- 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
ordisplayOptions
. Find out more about how a padoq is displayed to the user in Padoq feed and menus. - 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:
{
"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" ]
}
}
- 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