openapi: 3.2.0 info: title: RCAC Groups API version: 0.0.1 servers: - url: https://www.rcac.purdue.edu/api description: Production server tags: - name: Groups paths: /groups/departments: get: description: Display a listing of entries parameters: - in: query name: parentid description: Parent department ID required: false schema: type: integer default: 0 - in: query name: limit description: Number of result per page. type: integer required: false schema: type: integer default: 20 - in: query name: page description: Number of where to start returning results. required: false schema: type: integer default: 1 - in: query name: search description: A word or phrase to search for. required: false schema: type: string - in: query name: order description: Field to sort results by. type: string required: false schema: type: string default: datetimecreated enum: - id - motd - datetimecreated - datetimeremoved - in: query name: order_dir description: Direction to sort results by. type: string required: false default: desc schema: type: string default: asc enum: - asc - desc tags: - Groups summary: Get groups departments x-summary-source: derived operationId: getGroupsDepartments x-operation-id-source: derived post: description: Create a new entry parameters: [] responses: '201': description: Successful entry creation content: application/json: example: id: 1103 parentid: 1100 name: Academic Computing groups_count: 0 api: https://example.org/api/groups/departments/1103 '409': description: Invalid data requestBody: content: '*/*': schema: type: object properties: name: description: Department name type: string default: null parentid: description: Parent department ID type: integer default: null required: - name tags: - Groups summary: Create groups departments x-summary-source: derived operationId: postGroupsDepartments x-operation-id-source: derived /groups/departments/{id}: get: description: Retrieve an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '200': description: Successful entry read content: application/json: example: id: 1103 parentid: 1100 name: Academic Computing groups_count: 0 api: https://example.org/api/groups/departments/1103 '404': description: Record not found tags: - Groups summary: Get groups departments by id x-summary-source: derived operationId: getGroupsDepartmentsById x-operation-id-source: derived put: description: Update an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '202': description: Successful entry modification content: application/json: example: id: 1103 parentid: 1100 name: Academic Computing groups_count: 0 api: https://example.org/api/groups/departments/1103 '404': description: Record not found '409': description: Invalid data requestBody: content: '*/*': schema: type: object properties: name: description: Department name type: string default: null parentid: description: Parent department ID type: integer default: null required: [] tags: - Groups summary: Replace groups departments by id x-summary-source: derived operationId: putGroupsDepartmentsById x-operation-id-source: derived delete: description: Delete an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '204': description: Successful entry deletion '404': description: Record not found tags: - Groups summary: Delete groups departments by id x-summary-source: derived operationId: deleteGroupsDepartmentsById x-operation-id-source: derived /groups/fieldsofscience: get: description: Display a listing of entries parameters: - in: query name: parentid description: Parent department ID required: false schema: type: integer default: 0 - in: query name: search description: A word or phrase to search for. required: false schema: type: string - in: query name: limit description: Number of result per page. type: integer required: false schema: type: integer default: 20 - in: query name: page description: Number of where to start returning results. required: false schema: type: integer default: 1 - in: query name: order description: Field to sort results by. required: false schema: type: string default: datetimecreated enum: - id - motd - datetimecreated - datetimeremoved - in: query name: order_dir description: Direction to sort results by. type: string required: false default: desc schema: type: string default: asc enum: - asc - desc tags: - Groups summary: Get groups fieldsofscience x-summary-source: derived operationId: getGroupsFieldsofscience x-operation-id-source: derived post: description: Create a new entry parameters: [] responses: '201': description: Successful entry creation content: application/json: example: id: 1103 parentid: 1100 name: Agricultural Biotechnology groups_count: 0 api: https://example.org/api/groups/fieldsofscience/1103 '409': description: Invalid data requestBody: content: '*/*': schema: type: object properties: name: description: Field of science name type: string default: null parentid: description: Parent field of science ID type: integer default: 1 required: - name tags: - Groups summary: Create groups fieldsofscience x-summary-source: derived operationId: postGroupsFieldsofscience x-operation-id-source: derived /groups/fieldsofscience/{id}: get: description: Retrieve an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '200': description: Successful entry read content: application/json: example: id: 1103 parentid: 1100 name: Agricultural Biotechnology groups_count: 0 api: https://example.org/api/groups/fieldsofscience/1103 '404': description: Record not found tags: - Groups summary: Get groups fieldsofscience by id x-summary-source: derived operationId: getGroupsFieldsofscienceById x-operation-id-source: derived put: description: Update an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '202': description: Successful entry modification content: application/json: example: id: 1103 parentid: 1100 name: Agricultural Biotechnology groups_count: 0 api: https://example.org/api/groups/fieldsofscience/1103 '404': description: Record not found '409': description: Invalid data requestBody: content: '*/*': schema: type: object properties: name: description: Field of science name type: string default: null parentid: description: Parent field of science ID type: integer default: null required: [] tags: - Groups summary: Replace groups fieldsofscience by id x-summary-source: derived operationId: putGroupsFieldsofscienceById x-operation-id-source: derived delete: description: Delete an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '204': description: Successful entry deletion '404': description: Record not found tags: - Groups summary: Delete groups fieldsofscience by id x-summary-source: derived operationId: deleteGroupsFieldsofscienceById x-operation-id-source: derived /groups/{group}/departments: get: description: Display a listing of entries parameters: '1': in: query name: limit description: Number of result per page. type: integer required: false schema: type: integer default: 20 '2': in: query name: page description: Number of where to start returning results. required: false schema: type: integer default: 1 '3': in: query name: order description: Field to sort results by. type: string required: false schema: type: string default: datetimecreated enum: - id - motd - datetimecreated - datetimeremoved '4': in: query name: order_dir description: Direction to sort results by. type: string required: false default: desc schema: type: string default: asc enum: - asc - desc requestBody: content: '*/*': schema: type: object properties: group: description: Group ID type: integer default: null required: - group tags: - Groups summary: Get groups by group departments x-summary-source: derived operationId: getGroupsByGroupDepartments x-operation-id-source: derived post: description: Create a new entry parameters: [] responses: '201': description: Successful entry creation content: application/json: example: id: 18 groupid: 1 collegedeptid: 103 percentage: 100 api: https://example.org/api/groups/1/departments/18 '409': description: Invalid data requestBody: content: '*/*': schema: type: object properties: name: description: Department name type: string default: null parentid: description: Parent department ID type: integer default: null required: - name tags: - Groups summary: Create groups by group departments x-summary-source: derived operationId: postGroupsByGroupDepartments x-operation-id-source: derived /groups/{group}/departments/{id}: get: description: Retrieve an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '200': description: Successful entry read content: application/json: example: id: 18 groupid: 1 collegedeptid: 103 percentage: 100 api: https://example.org/api/groups/1/departments/18 '404': description: Record not found tags: - Groups summary: Get groups by group departments by id x-summary-source: derived operationId: getGroupsByGroupDepartmentsById x-operation-id-source: derived put: description: Update an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '202': description: Successful entry modification content: application/json: example: id: 18 groupid: 1 collegedeptid: 103 percentage: 100 api: https://example.org/api/groups/1/departments/18 '404': description: Record not found '409': description: Invalid data requestBody: content: '*/*': schema: type: object properties: name: description: Department name type: string default: null parentid: description: Parent department ID type: integer default: null required: [] tags: - Groups summary: Replace groups by group departments by id x-summary-source: derived operationId: putGroupsByGroupDepartmentsById x-operation-id-source: derived delete: description: Delete an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '204': description: Successful entry deletion '404': description: Record not found tags: - Groups summary: Delete groups by group departments by id x-summary-source: derived operationId: deleteGroupsByGroupDepartmentsById x-operation-id-source: derived /groups/{group}/fieldsofscience: get: description: Display a listing of entries parameters: '1': in: query name: limit description: Number of result per page. type: integer required: false schema: type: integer default: 20 '2': in: query name: page description: Number of where to start returning results. required: false schema: type: integer default: 1 '3': in: query name: order description: Field to sort results by. type: string required: false schema: type: string default: datetimecreated enum: - id - motd - datetimecreated - datetimeremoved '4': in: query name: order_dir description: Direction to sort results by. type: string required: false default: desc schema: type: string default: asc enum: - asc - desc requestBody: content: '*/*': schema: type: object properties: group: description: Group ID type: integer default: null required: - group tags: - Groups summary: Get groups by group fieldsofscience x-summary-source: derived operationId: getGroupsByGroupFieldsofscience x-operation-id-source: derived post: description: Create a new entry parameters: [] responses: '201': description: Successful entry creation content: application/json: example: id: 18 groupid: 1 fieldofscienceid: 103 newid: 0 percentage: 100 api: https://example.org/api/groups/1/fieldsofscience/18 '409': description: Invalid data requestBody: content: '*/*': schema: type: object properties: name: description: FieldOfScience name type: string default: null parentid: description: Parent department ID type: integer default: null required: - name tags: - Groups summary: Create groups by group fieldsofscience x-summary-source: derived operationId: postGroupsByGroupFieldsofscience x-operation-id-source: derived /groups/{group}/fieldsofscience/{id}: get: description: Retrieve an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '200': description: Successful entry read content: application/json: example: id: 18 groupid: 1 fieldofscienceid: 103 newid: 0 percentage: 100 api: https://example.org/api/groups/1/fieldsofscience/18 '404': description: Record not found tags: - Groups summary: Get groups by group fieldsofscience by id x-summary-source: derived operationId: getGroupsByGroupFieldsofscienceById x-operation-id-source: derived put: description: Update an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '202': description: Successful entry modification content: application/json: example: id: 18 groupid: 1 fieldofscienceid: 103 newid: 0 percentage: 100 api: https://example.org/api/groups/1/fieldsofscience/18 '404': description: Record not found '409': description: Invalid data requestBody: content: '*/*': schema: type: object properties: name: description: FieldOfScience name type: string default: null parentid: description: Parent department ID type: integer default: null required: [] tags: - Groups summary: Replace groups by group fieldsofscience by id x-summary-source: derived operationId: putGroupsByGroupFieldsofscienceById x-operation-id-source: derived delete: description: Delete an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '204': description: Successful entry deletion '404': description: Record not found tags: - Groups summary: Delete groups by group fieldsofscience by id x-summary-source: derived operationId: deleteGroupsByGroupFieldsofscienceById x-operation-id-source: derived /groups: get: description: Display a listing of entries parameters: - in: query name: owneruserid description: Owner user ID required: false schema: type: integer default: 0 - in: query name: department description: Filter by a department ID required: false schema: type: integer default: 0 - in: query name: fieldofscience description: Filter by a Field of Science ID required: false schema: type: integer default: 0 - in: query name: state description: Entry state required: false schema: type: string default: active enum: - active - trashed - '*' - in: query name: unixgroup description: Unix group name required: false schema: type: string - in: query name: unixid description: Unix ID required: false schema: type: integer default: 0 - in: query name: datetimecreated description: Created on or after the given timestamp required: false schema: type: date default: null - in: query name: search description: A word or phrase to search for. required: false schema: type: string - in: query name: limit description: Number of result per page. type: integer required: false schema: type: integer default: 20 - in: query name: page description: Number of where to start returning results. required: false schema: type: integer default: 1 - in: query name: order description: Field to sort results by. required: false default: name schema: type: string default: name enum: - id - name - owneruserid - unixgroup - unixid - datetimecreated - in: query name: order_dir description: Direction to sort results by. type: string required: false default: asc schema: type: string default: asc enum: - asc - desc tags: - Groups summary: Get groups x-summary-source: derived operationId: getGroups x-operation-id-source: derived post: description: Create a new entry parameters: [] responses: '201': description: Successful entry creation content: application/json: example: id: 1 name: My Research Group owneruserid: 0 unixgroup: mrg unixid: 0 githuborgname: '' datetimecreated: '2021-01-07T14:13:17.000000Z' datetimeremoved: null cascademanagers: 1 api: https://example.org/api/groups/1 department: - id: 3541 groupid: 1 collegedeptid: 313 percentage: 100 api: https://example.org/api/groups/departments/3541 '409': description: Invalid data requestBody: content: '*/*': schema: type: object properties: name: description: Group name type: string default: null description: description: Group description type: string default: null unixgroup: description: Unix group name type: string default: null unixid: description: Unix ID type: integer default: 0 cascademanagers: description: Cascade manager memberships type: integer default: 1 prefix_unixgroup: description: Enforce custom unix groups are prefixed type: integer default: 1 required: - name tags: - Groups summary: Create groups x-summary-source: derived operationId: postGroups x-operation-id-source: derived /groups/{id}: get: description: Retrieve an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '200': description: Successful entry read content: application/json: example: id: 1 name: My Research Group owneruserid: 0 unixgroup: mrg unixid: 0 githuborgname: '' datetimecreated: '2021-01-07T14:13:17.000000Z' datetimeremoved: null cascademanagers: 1 api: https://example.org/api/groups/1 department: - id: 3541 groupid: 1 collegedeptid: 313 percentage: 100 api: https://example.org/api/groups/departments/3541 '404': description: Record not found tags: - Groups summary: Get groups by id x-summary-source: derived operationId: getGroupsById x-operation-id-source: derived put: description: Update an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '202': description: Successful entry modification content: application/json: example: id: 1 name: My Research Group owneruserid: 0 unixgroup: mrg unixid: 0 githuborgname: '' datetimecreated: '2021-01-07T14:13:17.000000Z' datetimeremoved: null cascademanagers: 1 api: https://example.org/api/groups/1 department: - id: 3541 groupid: 1 collegedeptid: 313 percentage: 100 api: https://example.org/api/groups/departments/3541 '404': description: Record not found '409': description: Invalid data requestBody: content: '*/*': schema: type: object properties: name: description: Group name type: string default: null description: description: Group description type: string default: null unixgroup: description: Unix group name type: string default: null unixid: description: Unix ID type: integer default: null cascademanagers: description: Cascade manager memberships type: integer default: 1 prefix_unixgroup: description: Enforce custom unix groups are prefixed type: integer default: 1 required: [] tags: - Groups summary: Replace groups by id x-summary-source: derived operationId: putGroupsById x-operation-id-source: derived delete: description: Delete an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '204': description: Successful entry deletion '404': description: Record not found tags: - Groups summary: Delete groups by id x-summary-source: derived operationId: deleteGroupsById x-operation-id-source: derived /groups/members: get: description: Display a listing of entries parameters: - in: query name: limit description: Number of result per page. required: false schema: type: integer default: 20 - in: query name: page description: Number of where to start returning results. required: false schema: type: integer default: 1 - in: query name: groupid description: Group ID required: false schema: type: integer default: 0 - in: query name: userid description: User ID required: false schema: type: integer default: 0 - in: query name: membertype description: Member type required: false schema: type: integer default: 0 enum: - 1 (members) - 2 (managers) - 3 (viewers) - 4 (pending) - in: query name: state description: State required: false schema: type: string default: active enum: - active - trashed - all - in: query name: userrequestid description: User request ID required: false schema: type: integer default: 0 - in: query name: search description: A word or phrase to search for. required: false schema: type: string - in: query name: order description: Field to sort results by. required: false schema: type: string default: name enum: - id - groupid - userid - membertype - datecreated - dateremoved - in: query name: order_dir description: Direction to sort results by. required: false default: asc schema: type: string default: asc enum: - asc - desc tags: - Groups summary: Get groups members x-summary-source: derived operationId: getGroupsMembers x-operation-id-source: derived post: description: Create a new entry parameters: [] responses: '201': description: Successful entry creation content: application/json: example: id: 43 groupid: 1 userid: 1234 userrequestid: 0 membertype: 2 owner: 1 datecreated: '2011-03-08T13:46:42.000000Z' dateremoved: null datelastseen: null notice: 0 api: https://example.org/api/groups/members/43818 user: id: 1234 name: Jane Doe username: janedoe unixid: 43674 datecreated: '2021-06-17T17:07:05.000000Z' dateremoved: null '409': description: Invalid data requestBody: content: '*/*': schema: type: object properties: groupid: description: Group ID type: integer default: null userid: description: User ID type: integer default: null membertype: description: Member type type: integer default: null userrequestid: description: User request ID type: integer default: null required: - groupid - userid tags: - Groups summary: Create groups members x-summary-source: derived operationId: postGroupsMembers x-operation-id-source: derived /groups/members/{id}: get: description: Retrieve an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '200': description: Successful entry read content: application/json: example: id: 43 groupid: 1 userid: 1234 userrequestid: 0 membertype: 2 owner: 1 datecreated: '2011-03-08T13:46:42.000000Z' dateremoved: null datelastseen: null notice: 0 api: https://example.org/api/groups/members/43818 user: id: 1234 name: Jane Doe username: janedoe unixid: 43674 datecreated: '2021-06-17T17:07:05.000000Z' dateremoved: null '404': description: Record not found tags: - Groups summary: Get groups members by id x-summary-source: derived operationId: getGroupsMembersById x-operation-id-source: derived put: description: Update an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '202': description: Successful entry modification content: application/json: example: id: 43 groupid: 1 userid: 1234 userrequestid: 0 membertype: 2 owner: 1 datecreated: '2011-03-08T13:46:42.000000Z' dateremoved: null datelastseen: null notice: 0 api: https://example.org/api/groups/members/43818 user: id: 1234 name: Jane Doe username: janedoe unixid: 43674 datecreated: '2021-06-17T17:07:05.000000Z' dateremoved: null '404': description: Record not found '409': description: Invalid data requestBody: content: '*/*': schema: type: object properties: membertype: description: Member type type: integer default: null userrequestid: description: User request ID type: integer default: null required: [] tags: - Groups summary: Replace groups members by id x-summary-source: derived operationId: putGroupsMembersById x-operation-id-source: derived delete: description: Delete an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '204': description: Successful entry deletion '404': description: Record not found tags: - Groups summary: Delete groups members by id x-summary-source: derived operationId: deleteGroupsMembersById x-operation-id-source: derived /groups/motd: get: description: Display a listing of entries parameters: - in: query name: limit description: Number of result per page. type: integer required: false schema: type: integer default: 20 - in: query name: page description: Number of where to start returning results. required: false schema: type: integer default: 1 - in: query name: group_id description: Group ID required: false schema: type: integer default: 0 - in: query name: search description: A word or phrase to search for. type: string required: false schema: type: string - in: query name: order description: Field to sort results by. required: false schema: type: string default: datetimecreated enum: - id - motd - datetimecreated - datetimeremoved - in: query name: order_dir description: Direction to sort results by. required: false schema: type: string default: desc enum: - asc - desc tags: - Groups summary: Get groups motd x-summary-source: derived operationId: getGroupsMotd x-operation-id-source: derived post: description: Create a new entry parameters: [] responses: '201': description: Successful entry creation content: application/json: example: id: 13 groupid: 1 motd: This is the J Does research space datetimecreated: '2021-06-08T10:17:02.000000Z' datetimeremoved: null api: https://example.org/api/groups/motd/131 '409': description: Invalid data requestBody: content: '*/*': schema: type: object properties: motd: description: Message of the day type: string default: null groupid: description: Group ID type: integer default: 0 required: - motd - groupid tags: - Groups summary: Create groups motd x-summary-source: derived operationId: postGroupsMotd x-operation-id-source: derived /groups/motd/{id}: get: description: Retrieve an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '200': description: Successful entry read content: application/json: example: id: 13 groupid: 1 motd: This is the J Does research space datetimecreated: '2021-06-08T10:17:02.000000Z' datetimeremoved: null api: https://example.org/api/groups/motd/131 '404': description: Record not found tags: - Groups summary: Get groups motd by id x-summary-source: derived operationId: getGroupsMotdById x-operation-id-source: derived put: description: Update an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '202': description: Successful entry modification content: application/json: example: id: 13 groupid: 1 motd: This is the J Does research space datetimecreated: '2021-06-08T10:17:02.000000Z' datetimeremoved: null api: https://example.org/api/groups/motd/131 '404': description: Record not found '409': description: Invalid data requestBody: content: '*/*': schema: type: object properties: motd: description: Message of the day type: string default: null groupid: description: Group ID type: integer default: 0 required: - motd tags: - Groups summary: Replace groups motd by id x-summary-source: derived operationId: putGroupsMotdById x-operation-id-source: derived delete: description: Delete an entry parameters: - in: path name: id description: Entry identifier required: true schema: type: integer responses: '204': description: Successful entry deletion '404': description: Record not found tags: - Groups summary: Delete groups motd by id x-summary-source: derived operationId: deleteGroupsMotdById x-operation-id-source: derived components: securitySchemes: api_token: type: apiKey name: api_token in: header