Organizations¶
In the Keyclic app, an organization is an entity such as a company, a corporation, an association, a school, etc. to which feedbacks can be sent to be treated.
One or more members can be Administrator of that organization. An organization has at least one administrator.
An Administrator can manage the scope of operation of the organization by creating categories and places. When a user creates a feedback, geographic coordinates of that feedback are always automatically transmitted. Thus, the app can display all organizations in that place. Then the user has acces to information helping it choose the most fitting organization.
Creation¶
All users can create an organization :
POST /organizations
{
"name":"organization name",
"billingEmailAddress":"test@test.com",
"notificationEmailAddress":"test@test.com"
}
The user becomes member and admin of this new organization.
To get all organizations of an application :
GET /organizations
It’s possible to filter results by geographic point (see below : Manage places) :
GET /organizations?geo_coordinates=+44.851404209987386-0.5762618780136108
Manage members¶
To add a new member to the organization :
POST /organizations/{organization}/members
{
"person":"63d07fc5-f4e6-471c-a8cc-3c3f227c8c2d"
}
This endpoint is reserved to a user who is Administrator and member of the organization {organization}.
To get organization’s members :
GET /organizations/{organization}/members
To remove a member from the organization, an admin will request :
DELETE /organizations/{organization}/members/{member}
Manage places¶
An Administrator can create places, corresponding to areas where the organization can take actions :
POST /organizations/{organization}/places
{
"name": "Test",
"polygon":
{
"rings":
[
{
"points":
[
{
"longitude": 2.373991012573242,
"latitude": 48.84088179130599
},
{
"longitude": 2.3763084411621094,
"latitude": 48.84205393836751
},
{
"longitude": 2.376694679260254,
"latitude": 48.84189859515306
},
{
"longitude": 2.3787975311279297,
"latitude": 48.84041574931067
},
{
"longitude": 2.376115322113037,
"latitude": 48.839031720249054
},
{
"longitude": 2.373991012573242,
"latitude": 48.84088179130599
}
]
}
],
"srid": 4326
}
}
To get all places of the application :
GET /places
This request may be filtered by organization and/or geographic points :
GET /places?geo_coordinates=+44.851404209987386-0.5762618780136108&organization={organization}
Manage categories¶
Categories are the business sectors of an organization. An Administrator can create a new category with a name, a color and an icon. The icon is chosen from Font Awesome.
POST /organizations/{organization}/categories
{
"name":"Category's name",
"color":"#ff0000",
"icon":"fa-bug"
}
Those 3 properties can be edited with a PATCH request (see : Resource modification).
To get all categories of the application :
GET /categories
This request may be filtered by organization and/or geographic points :
GET /categories?geo_coordinates=+44.851404209987386-0.5762618780136108&organization={organization}
Manage partnership¶
An organization can have partners, i.e organizations affiliated with it. This relationship is one-sided : an organization A is a partner of organization B, but B is not necessarily one of B.
The partnership means that an Administrator can delegate a report to a partner organization. In the previous example, A can delegate a report to B, but B cannot delegate to A.
To add a new partner to the organization, an admin will send the request :
POST /organizations/{organization}/relationships
{
"organization":"84d36093-b8bc-47ad-bc8a-a043b3e301a9"
}
To get an organization’s partners :
GET /organizations/{organization}/relationships
The request is only available for admins.