CampusAPI Forum Services API documentation version 0.1.5
Based on OSID version 3.0.0
https://base.url/forum
Overview
The Forum service package defines threaded diiscussion groups managing a set of posts and replies.
This package includes the following entities:
Posts
A Post is an entity that defines some text, a timestamp, and a poster.
Posters:
An Agent posts to a Forum or an Agent replies to a Post. The relationship between the Agent and its associated Resource is orchestrated within the Forum service. Posts and Replies reveal both the posting Agent and the associated poster Resource.
Field | Description | Type |
---|---|---|
id(read‑only) | The unique id of this post, provided by system. | string(osid‑id) |
uri(read‑only) | The uri of this post, provided by system. | string(uri) |
displayName | The name of this post for display. | string |
description | The description of this post. | string |
genusTypeId (read‑only) | Id of the immutable type of this post. Default type set by system unless specified in query parameter. | string(osid‑id) |
recordTypeIds (read‑only) | Type Ids of record types available on this post. Record types define special attributes available on an object to support specific applications or classes of applications and are documented elsewhere. | string(osid‑id)[] |
timestamp | The time of this post. | string(date‑time) |
posterId | The poster of this post. References a resource.Resource object | string(osid‑id) |
subjectLine | The subject line of this post. | string |
text | The text of the post. | string |
Replys
A Reply is similar to a Post but is in response to either a Post or another Reply. A Reply is a containable object making directly accessible any nested Replies directly on the object itself.
Field | Description | Type |
---|---|---|
id(read‑only) | The unique id of this reply, provided by system. | string(osid‑id) |
uri(read‑only) | The uri of this reply, provided by system. | string(uri) |
displayName | The name of this reply for display. | string |
description | The description of this reply. | string |
genusTypeId (read‑only) | Id of the immutable type of this reply. Default type set by system unless specified in query parameter. | string(osid‑id) |
recordTypeIds (read‑only) | Type Ids of record types available on this reply. Record types define special attributes available on an object to support specific applications or classes of applications and are documented elsewhere. | string(osid‑id)[] |
sequestered | Whether this reply is sequestered in that it should not appear outside of its aggregation. | boolean |
postId (read‑only) | The post associated with this reply. References a forum.Post object. | string(osid‑id) |
replyId (read‑only) | The reply associated with this reply. References a missing.MISSING object. | string(osid‑id) |
timestamp | The time of this entry. | string(date‑time) |
posterId | The posting of this entry. References a resource.Resource object | string(osid‑id) |
subjectLine | The subject line of this entry. | string |
text | The text of the entry. | string |
Forums
Forums represent collections of Posts. Forums may be created through federation or by selecting Posts based on their attributes to create a virtual catalog of Posts. Replies are always associated with their Posts and may not be cataloged independently.
Field | Description | Type |
---|---|---|
id(read‑only) | The unique id of this forum, provided by system. | string(osid‑id) |
uri(read‑only) | The uri of this forum, provided by system. | string(uri) |
displayName | The name of this forum for display. | string |
description | The description of this forum. | string |
genusTypeId (read‑only) | Id of the immutable type of this forum. Default type set by system unless specified in query parameter. | string(osid‑id) |
recordTypeIds (read‑only) | Type Ids of record types available on this forum. Record types define special attributes available on an object to support specific applications or classes of applications and are documented elsewhere. | string(osid‑id)[] |
providerId | The provider of this forum. References a resource.Resource object. | string(osid‑id) |
brandingIds | The branding of this forum. References repository.Asset objects. | string(osid‑id)[] |
license | The licensing that applies to this forum. | string |
License
CampusAPI REST Documentation Copyright 2023 DXtera Institute. Based on the Open Service Interface Definitions: http://osid.org
/posts
Collection of Posts in a system, federation of systems, or in a default Forum.
Get all Posts in the system or default Forum.
Create a new Post in the default Forum.
get /posts
Get all Posts in the system or default Forum.
Query Parameters
- offset: (integer - default: 0)
Skip over a number of elements by specifying an offset value for the query
Example:
20
- limit: (integer - default: 10)
Limit the number of elements on the response
Example:
80
- expand: (string)
Expand object or type for named attribute: "genusType", "recordType", "poster", or "all" to expand all referenced objects or types. This parameter can be repeated to expand multiples.
Example:
all
- genusTypeId: (string)
The id string to match a genusType
Example:
type.Type%3AexamplePostType%40dxtera.org
- parentGenusTypeId: (string)
The id string to match a parent genusType
Example:
type.Type%3AparentTypeExamplePostType%40dxtera.org
- recordTypeId: (string)
The id string to match a recordType
Example:
type.Type%3AexamplePostType%40campusapi.org
- fromDate: (string)
Get all posts from this date inclusive. Use with toDate to define date range query.
Example:
2020-10-03
- toDate: (string)
Get all posts up to this date inclusive. Use with fromDate to define date range query.
Example:
2020-12-18
- posterId: (string)
Id string to match poster.
Example:
resource.Resource%3A7836%40base.url
- forumId: (string)
The id string to match a forum
Example:
forum.Forum%3A8374%40base.url
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "forum.Post:5139@base.url",
"uri": "http://base.url/open/campusapi/forum/post/forum.Post%3A5139%40base.url",
"displayName": "Display Name of this Post",
"description": "The description of this Post",
"genusTypeId": "type.Type:defaultPostType@base.url",
"recordTypeIds": [ "type.Type:examplePostRecordType@campusapi.org", "..."],
"timestamp": "2021-07-21T23:15:30.000Z",
"posterId": "resource.Resource:6842@base.url",
"subjectLine": "This is the SubjectLine",
"text": "This is the Text"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
post /posts
Create a new Post in the default Forum.
Query Parameters
- genusType: (string)
specify a particular post type to create
Example:
type.Type%3AexamplePostType%40dxtera.org
- recordType: (array of )
specify support for one or more post record types
Example:
[ "type.Type%3AexamplePostRecordType%40campusapi.org", "..." ]
- forumId: (string)
specify in which forum to create this post
Example:
forum.Forum%3A8374%40base.url
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Post",
"type": "object",
"properties": {
"id": {
"description": "The unique id of this post, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this post, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this post for display.",
"type": "string"
},
"description": {
"description": "The description of this post.",
"type": "string"
},
"genusTypeId": {
"description": "Id of the immutable type of this post. Default type set by system unless specified in query parameter.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"recordTypeIds": {
"description": "Type Ids of record types available on this post. Record types define special attributes available on an object to support specific applications or classes of applications and are documented elsewhere.",
"type": "array",
"items": {
"type": "string",
"format": "osid-id"
},
"readOnly": true
},
"timestamp": {
"description": "The time of this post.",
"type": "string",
"format": "date-time"
},
"posterId": {
"description": "The poster of this post.",
"type": "string",
"format": "osid-id"
},
"subjectLine": {
"description": "The subject line of this post.",
"type": "string"
},
"text": {
"description": "The text of the post.",
"type": "string"
}
}
}
Example:
{
"displayName": "Display Name of this Post",
"description": "The description of this Post",
"timestamp": "2021-07-21T23:15:30.000Z",
"posterId": "resource.Resource:4468@base.url",
"subjectLine": "This is the SubjectLine",
"text": "This is the Text"
}
Query the collection of Posts in a system, federation of systems, or in a default forum by posting a Query object.
Submit a query using a PostQuery object.
post /posts/post-query
Submit a query using a PostQuery object.
Query Parameters
- offset: (integer - default: 0)
Skip over a number of elements by specifying an offset value for the query
Example:
20
- limit: (integer - default: 10)
Limit the number of elements on the response
Example:
80
- expand: (string)
Expand object or type for named attribute: "genusType", "recordType", "poster", or "all" to expand all referenced objects or types. This parameter can be repeated to expand multiples.
Example:
all
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "PostQuery",
"type": "object",
"properties": {
"matchIds": {
"description": "List of Ids to match. Boolean OR performed among multiple Ids.",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"description": "id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchKeywords": {
"description": "List keywords to match. Multiple keywords can be added to perform a boolean OR among them. A keyword may be applied to any of the elements defined in this object such as the display name, description or any attribute defined in or implemented by this object.",
"type": "array",
"items": {
"type": "object",
"properties": {
"keyword": {
"description": "keyword to match",
"type": "string"
},
"stringMatchType": {
"description": "the string match type",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchDisplayNames": {
"description": "List of displayName strings to match. Boolean OR performed among multiple displayNames.",
"type": "array",
"items": {
"type": "object",
"properties": {
"displayName": {
"description": "displayName to match",
"type": "string"
},
"stringMatchType": {
"description": "the string match type",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchDescriptions": {
"description": "List of discription strings to match. Boolean OR performed among multiple descriptions.",
"type": "array",
"items": {
"type": "object",
"properties": {
"description": {
"description": "description to match",
"type": "string"
},
"stringMatchType": {
"description": "the string match type",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchGenusTypeIds": {
"description": "List of genus type ids to match. Boolean OR performed among multiple ids.",
"type": "array",
"items": {
"type": "object",
"properties": {
"genusTypeid": {
"description": "genus type id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchRecordTypeIds": {
"description": "List of record type ids to match. Boolean OR performed among multiple ids.",
"type": "array",
"items": {
"type": "object",
"properties": {
"genusTypeid": {
"description": "record type id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchTimestamp": {
"description": "Matches timestamps between the given date range inclusive.",
"type": "array",
"items": {
"type": "object",
"properties": {
"low": {
"description": "low date range",
"type": "string",
"format": "date-time"
},
"high": {
"description": "high date range",
"type": "string",
"format": "date-time"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchAnyTimestamp": {
"description": "Match timestamps with any value. true to match Posts with any timestamp, false to match ProgramOfferings with no timestamp",
"type": "boolean"
},
"matchPosterIds": {
"description": "List of Resource Ids for this query to match poster.",
"type": "array",
"items": {
"type": "object",
"properties": {
"posterId": {
"description": "id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"posterQueries": {
"description": "resource.ResourceQueries to match the Poster. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "object"
}
},
"matchAnyPoster": {
"description": "Match poster with any value. true to match Posts with any poster, false to match Posts with no poster",
"type": "boolean"
},
"matchSubjectLine": {
"description": "List of SubjectLine strings to match. Boolean OR performed among multiple subjectLines.",
"type": "array",
"items": {
"type": "object",
"properties": {
"subjectLines": {
"description": "subjectLines to match",
"type": "string"
},
"stringMatchType": {
"description": "the string match type",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchAnySubjectLine": {
"description": "Match subjectLines with any value. true to match Posts with any subject line, false to match ProgramOfferings with no subject line",
"type": "boolean"
},
"matchText": {
"description": "List of Text strings to match. Boolean OR performed among multiple texts.",
"type": "array",
"items": {
"type": "object",
"properties": {
"texts": {
"description": "texts to match",
"type": "string"
},
"stringMatchType": {
"description": "the string match type",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchAnyText": {
"description": "Match texts with any value. true to match Posts with any text, false to match ProgramOfferings with no text",
"type": "boolean"
},
"matchForumIds": {
"description": "List of Forum Id's to match.",
"type": "array",
"items": {
"type": "object",
"properties": {
"forumId": {
"description": "Forum id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"forumQueries": {
"description": "ForumQueries to match Forum. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "object"
}
}
}
}
Example:
{
"matchDisplayNames": [
{
"displayName": "string to exclude",
"match": false
}
]
}
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "forum.Post:5139@base.url",
"uri": "http://base.url/open/campusapi/forum/post/forum.Post%3A5139%40base.url",
"displayName": "Display Name of this Post",
"description": "The description of this Post",
"genusTypeId": "type.Type:defaultPostType@base.url",
"recordTypeIds": [ "type.Type:examplePostRecordType@campusapi.org", "..."],
"timestamp": "2021-07-21T23:15:30.000Z",
"posterId": "resource.Resource:6842@base.url",
"subjectLine": "This is the SubjectLine",
"text": "This is the Text"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Entity representing a Post form metadata.
Get form metadata for creating a new Post.
get /posts/metadata
Get form metadata for creating a new Post.
Query Parameters
- genusType: (string)
specify a particular post type to create
Example:
type.Type%3AexamplePostType%40dxtera.org
- recordType: (array of )
specify support for one or more post record types
Example:
[ "type.Type%3AexamplePostRecordType%40campusapi.org", "..." ]
- forumId: (string)
specify in which forum to create this post
Example:
forum.Forum%3A8374%40base.url
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"$schema": "http://json-schema.org/draft/2019-9/schema#",
"title": "Post",
"type": "object",
"required": ["displayName"],
"properties": {
"id": {
"description": "The unique id of this post, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this post, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this post for display.",
"type": "string",
"read-only": false,
"minLength": 1,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Post.Post:displayName@base.url",
"existingValue": "The Existing Name",
"elementLabel": "Name",
"instructions": "Enter a name for this post",
"linked": false
},
"description": {
"description": "The description of this post.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Post.Post:displayName@demo.base.url",
"existingValue": "The Existing Description",
"elementLabel": "Description",
"instructions": "Enter a description for this post",
"linked": false
},
"genusTypeId": {
"description": "Id of the immutable type of this post. Default type set by system unless specified in query parameter on initial post.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"recordTypeIds": {
"description": "Type Ids of record types available on this post. Record types define special attributes available on an object to support specific applications or classes of applications and are documented elsewhere.",
"type": "array",
"items": {
"type": "string",
"format": "osid-id"
},
"readOnly": true
},
"timestamp": {
"description": "The time of this post.",
"type": "string",
"format": "date-time",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "forum.Post:timestamp@dxtera.org",
"existingValue": "",
"elementLabel": "Timestamp",
"instructions": "Enter the timestamp of this post.",
"linked": false
},
"posterId": {
"description": "The poster of this post.",
"type": "string",
"type": "string",
"format": "osid-id",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "forum.Post:poster@dxtera.org",
"existingValue": null,
"elementLabel": "Poster",
"instructions": "Enter the Id of the poster for this post.",
"linked": false
},
"subjectLine": {
"description": "The subject line of this post.",
"type": "string",
"read-only": false,
"minLength": null,
"maxLength": null,
"pattern": "",
"default": "",
"enum": [],
"elementId": "forum.Post:subjectLine@dxtera.org",
"existingValue": "The existing subject line",
"elementLabel": "Subject Line",
"instructions": "Enter a subject line for this post.",
"linked": false
},
"text": {
"description": "The text of the post.",
"type": "string",
"read-only": false,
"minLength": null,
"maxLength": null,
"pattern": "",
"default": "",
"enum": [],
"elementId": "forum.Post:text@dxtera.org",
"existingValue": "The existing text",
"elementLabel": "Text",
"instructions": "Enter a text for this post.",
"linked": false
}
}
}
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Entity representing a Post
Get a particular Post given its id.
Update a particular Post given its id.
Delete a particular Post given its id.
get /posts/{postId}
Get a particular Post given its id.
URI Parameters
- postId: required(string)
Query Parameters
- expand: (string)
Expand object or type for named attribute: "genusType", "recordType", "poster", or "all" to expand all referenced objects or types. This parameter can be repeated to expand multiples.
Example:
all
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"id": "forum.Post:5139@base.url",
"uri": "http://base.url/open/campusapi/forum/post/forum.Post%3A5139%40base.url",
"displayName": "Display Name of this Post",
"description": "The description of this Post",
"genusTypeId": "type.Type:defaultPostType@base.url",
"recordTypeIds": [ "type.Type:examplePostRecordType@campusapi.org", "..."],
"timestamp": "2021-07-21T23:15:30.000Z",
"posterId": "resource.Resource:6842@base.url",
"subjectLine": "This is the SubjectLine",
"text": "This is the Text"
}
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
HTTP status code 404
Body
Media type: application/json
Type: any
Example:
{"message": "Post not found" }
put /posts/{postId}
Update a particular Post given its id.
URI Parameters
- postId: required(string)
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Post",
"type": "object",
"properties": {
"id": {
"description": "The unique id of this post, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this post, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this post for display.",
"type": "string"
},
"description": {
"description": "The description of this post.",
"type": "string"
},
"genusTypeId": {
"description": "Id of the immutable type of this post. Default type set by system unless specified in query parameter.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"recordTypeIds": {
"description": "Type Ids of record types available on this post. Record types define special attributes available on an object to support specific applications or classes of applications and are documented elsewhere.",
"type": "array",
"items": {
"type": "string",
"format": "osid-id"
},
"readOnly": true
},
"timestamp": {
"description": "The time of this post.",
"type": "string",
"format": "date-time"
},
"posterId": {
"description": "The poster of this post.",
"type": "string",
"format": "osid-id"
},
"subjectLine": {
"description": "The subject line of this post.",
"type": "string"
},
"text": {
"description": "The text of the post.",
"type": "string"
}
}
}
Example:
{
"displayName": "Display Name of this Post",
"description": "The description of this Post",
"timestamp": "2021-07-21T23:15:30.000Z",
"posterId": "resource.Resource:4468@base.url",
"subjectLine": "This is the SubjectLine",
"text": "This is the Text"
}
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The Post has been updated" }
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
HTTP status code 404
Body
Media type: application/json
Type: any
Example:
{"message": "Post not found" }
delete /posts/{postId}
Delete a particular Post given its id.
URI Parameters
- postId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The Post has been deleted" }
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
HTTP status code 404
Body
Media type: application/json
Type: any
Example:
{"message": "Post not found" }
Entity representing a Post form metadata for update
Get form metadata for updating an existing Post.
get /posts/{postId}/metadata
Get form metadata for updating an existing Post.
URI Parameters
- postId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"$schema": "http://json-schema.org/draft/2019-9/schema#",
"title": "Post",
"type": "object",
"required": ["displayName"],
"properties": {
"id": {
"description": "The unique id of this post, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this post, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this post for display.",
"type": "string",
"read-only": false,
"minLength": 1,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Post.Post:displayName@base.url",
"existingValue": "The Existing Name",
"elementLabel": "Name",
"instructions": "Enter a name for this post",
"linked": false
},
"description": {
"description": "The description of this post.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Post.Post:displayName@demo.base.url",
"existingValue": "The Existing Description",
"elementLabel": "Description",
"instructions": "Enter a description for this post",
"linked": false
},
"genusTypeId": {
"description": "Id of the immutable type of this post. Default type set by system unless specified in query parameter on initial post.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"recordTypeIds": {
"description": "Type Ids of record types available on this post. Record types define special attributes available on an object to support specific applications or classes of applications and are documented elsewhere.",
"type": "array",
"items": {
"type": "string",
"format": "osid-id"
},
"readOnly": true
},
"timestamp": {
"description": "The time of this post.",
"type": "string",
"format": "date-time",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "forum.Post:timestamp@dxtera.org",
"existingValue": "",
"elementLabel": "Timestamp",
"instructions": "Enter the timestamp of this post.",
"linked": false
},
"posterId": {
"description": "The poster of this post.",
"type": "string",
"type": "string",
"format": "osid-id",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "forum.Post:poster@dxtera.org",
"existingValue": null,
"elementLabel": "Poster",
"instructions": "Enter the Id of the poster for this post.",
"linked": false
},
"subjectLine": {
"description": "The subject line of this post.",
"type": "string",
"read-only": false,
"minLength": null,
"maxLength": null,
"pattern": "",
"default": "",
"enum": [],
"elementId": "forum.Post:subjectLine@dxtera.org",
"existingValue": "The existing subject line",
"elementLabel": "Subject Line",
"instructions": "Enter a subject line for this post.",
"linked": false
},
"text": {
"description": "The text of the post.",
"type": "string",
"read-only": false,
"minLength": null,
"maxLength": null,
"pattern": "",
"default": "",
"enum": [],
"elementId": "forum.Post:text@dxtera.org",
"existingValue": "The existing text",
"elementLabel": "Text",
"instructions": "Enter a text for this post.",
"linked": false
}
}
}
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
HTTP status code 404
Body
Media type: application/json
Type: any
Example:
{"message": "post not found" }
/replys
Collection of Replys in a system, federation of systems, or in a default Forum.
Get all Replys in the system or default Forum.
Create a new Reply in the default Forum.
get /replys
Get all Replys in the system or default Forum.
Query Parameters
- offset: (integer - default: 0)
Skip over a number of elements by specifying an offset value for the query
Example:
20
- limit: (integer - default: 10)
Limit the number of elements on the response
Example:
80
- expand: (string)
Expand object or type for named attribute: "genusType", "recordType", "poster", "post", "reply", or "all" to expand all referenced objects or types. This parameter can be repeated to expand multiples.
Example:
all
- genusTypeId: (string)
The id string to match a genusType
Example:
type.Type%3AexampleReplyType%40dxtera.org
- parentGenusTypeId: (string)
The id string to match a parent genusType
Example:
type.Type%3AparentTypeExampleReplyType%40dxtera.org
- recordTypeId: (string)
The id string to match a recordType
Example:
type.Type%3AexampleReplyType%40campusapi.org
- postId: (string)
the id string to match a post.
Example:
forum.Post%3A100%40base.url
- replyId: (string)
the id string to match a reply.
Example:
forum.Post%3A125%40base.url
- fromDate: (string)
Get all replys from this date inclusive. Use with toDate to define date range query.
Example:
2020-10-03
- toDate: (string)
Get all replys up to this date inclusive. Use with fromDate to define date range query.
Example:
2020-12-18
- posterId: (string)
Id string to match poster.
Example:
resource.Resource%3A6392%40base.url
- forumId: (string)
The id string to match a forum
Example:
forum.Forum%3A8374%40base.url
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "forum.Reply:8210@base.url",
"uri": "http://base.url/open/campusapi/forum/reply/forum.Reply%3A8210%40base.url",
"displayName": "Display Name of this Reply",
"description": "The description of this Reply",
"genusTypeId": "type.Type:defaultReplyType@base.url",
"recordTypeIds": [ "type.Type:exampleReplyRecordType@campusapi.org", "..."],
"sequestered": false,
"postId": "forum.Post:8621@base.url",
"replyId": ":1997@base.url",
"timestamp": "2021-07-21T23:15:30.000Z",
"posterId": "resource.Resource:142@base.url",
"subjectLine": "This is the SubjectLine",
"text": "This is the Text"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
post /replys
Create a new Reply in the default Forum.
Query Parameters
- postId: required(string)
the post of this reply.
Example:
forum.Post%3A100%40base.url
- replyId: required(string)
the reply of this reply.
Example:
forum.Post%3A125%40base.url
- genusType: (string)
specify a particular reply type to create
Example:
type.Type%3AexampleReplyType%40dxtera.org
- recordType: (array of )
specify support for one or more reply record types
Example:
[ "type.Type%3AexampleReplyRecordType%40campusapi.org", "..." ]
- forumId: (string)
specify in which forum to create this reply
Example:
forum.Forum%3A8374%40base.url
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Reply",
"type": "object",
"properties": {
"id": {
"description": "The unique id of this reply, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this reply, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this reply for display.",
"type": "string"
},
"description": {
"description": "The description of this reply.",
"type": "string"
},
"genusTypeId": {
"description": "Id of the immutable type of this reply. Default type set by system unless specified in query parameter.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"recordTypeIds": {
"description": "Type Ids of record types available on this reply. Record types define special attributes available on an object to support specific applications or classes of applications and are documented elsewhere.",
"type": "array",
"items": {
"type": "string",
"format": "osid-id"
},
"readOnly": true
},
"sequestered": {
"description": "Whether this reply is sequestered in that it should not appear outside of its aggregation.",
"type": "boolean"
},
"postId": {
"description": "The post associated with this reply.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"replyId": {
"description": "The reply associated with this reply.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"timestamp": {
"description": "The time of this entry.",
"type": "string",
"format": "date-time"
},
"posterId": {
"description": "The posting of this entry.",
"type": "string",
"format": "osid-id"
},
"subjectLine": {
"description": "The subject line of this entry.",
"type": "string"
},
"text": {
"description": "The text of the entry.",
"type": "string"
}
}
}
Example:
{
"displayName": "Display Name of this Reply",
"description": "The description of this Reply",
"sequestered": false,
"timestamp": "2021-07-21T23:15:30.000Z",
"posterId": "resource.Resource:1128@base.url",
"subjectLine": "This is the SubjectLine",
"text": "This is the Text"
}
Query the collection of Replies in a system, federation of systems, or in a default forum by posting a Query object.
Submit a query using a ReplyQuery object.
post /replys/reply-query
Submit a query using a ReplyQuery object.
Query Parameters
- offset: (integer - default: 0)
Skip over a number of elements by specifying an offset value for the query
Example:
20
- limit: (integer - default: 10)
Limit the number of elements on the response
Example:
80
- expand: (string)
Expand object or type for named attribute: "genusType", "recordType", "poster", "post", "reply", or "all" to expand all referenced objects or types. This parameter can be repeated to expand multiples.
Example:
all
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "ReplyQuery",
"type": "object",
"properties": {
"matchIds": {
"description": "List of Ids to match. Boolean OR performed among multiple Ids.",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"description": "id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchKeywords": {
"description": "List keywords to match. Multiple keywords can be added to perform a boolean OR among them. A keyword may be applied to any of the elements defined in this object such as the display name, description or any attribute defined in or implemented by this object.",
"type": "array",
"items": {
"type": "object",
"properties": {
"keyword": {
"description": "keyword to match",
"type": "string"
},
"stringMatchType": {
"description": "the string match type",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchDisplayNames": {
"description": "List of displayName strings to match. Boolean OR performed among multiple displayNames.",
"type": "array",
"items": {
"type": "object",
"properties": {
"displayName": {
"description": "displayName to match",
"type": "string"
},
"stringMatchType": {
"description": "the string match type",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchDescriptions": {
"description": "List of discription strings to match. Boolean OR performed among multiple descriptions.",
"type": "array",
"items": {
"type": "object",
"properties": {
"description": {
"description": "description to match",
"type": "string"
},
"stringMatchType": {
"description": "the string match type",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchGenusTypeIds": {
"description": "List of genus type ids to match. Boolean OR performed among multiple ids.",
"type": "array",
"items": {
"type": "object",
"properties": {
"genusTypeid": {
"description": "genus type id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchRecordTypeIds": {
"description": "List of record type ids to match. Boolean OR performed among multiple ids.",
"type": "array",
"items": {
"type": "object",
"properties": {
"genusTypeid": {
"description": "record type id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchSequestered": {
"description": "Match containables that are sequestered. true to match any sequestered containables, false to match non-sequestered containables",
"type": "boolean"
},
"matchPostIds": {
"description": "List of post Ids for this query to match reply that have a related post.",
"type": "array",
"items": {
"type": "object",
"properties": {
"ruleId": {
"description": "id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"postQueries": {
"description": "PostQueries to match the post. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "object"
}
},
"matchReplyIds": {
"description": "List of reply Ids for this query to match reply that have a related reply.",
"type": "array",
"items": {
"type": "object",
"properties": {
"ruleId": {
"description": "id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"replyQueries": {
"description": "ReplyQueries to match the reply. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "object"
}
},
"matchTimestamp": {
"description": "Matches timestamps between the given date range inclusive.",
"type": "array",
"items": {
"type": "object",
"properties": {
"low": {
"description": "low date range",
"type": "string",
"format": "date-time"
},
"high": {
"description": "high date range",
"type": "string",
"format": "date-time"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchAnyTimestamp": {
"description": "Match timestamps with any value. true to match Replys with any timestamp, false to match ProgramOfferings with no timestamp",
"type": "boolean"
},
"matchPosterIds": {
"description": "List of Resource Ids for this query to match poster.",
"type": "array",
"items": {
"type": "object",
"properties": {
"posterId": {
"description": "id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"posterQueries": {
"description": "resource.ResourceQueries to match the Poster. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "object"
}
},
"matchAnyPoster": {
"description": "Match poster with any value. true to match Replys with any poster, false to match Replys with no poster",
"type": "boolean"
},
"matchSubjectLine": {
"description": "List of SubjectLine strings to match. Boolean OR performed among multiple subjectLines.",
"type": "array",
"items": {
"type": "object",
"properties": {
"subjectLines": {
"description": "subjectLines to match",
"type": "string"
},
"stringMatchType": {
"description": "the string match type",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchAnySubjectLine": {
"description": "Match subjectLines with any value. true to match Replys with any subject line, false to match ProgramOfferings with no subject line",
"type": "boolean"
},
"matchText": {
"description": "List of Text strings to match. Boolean OR performed among multiple texts.",
"type": "array",
"items": {
"type": "object",
"properties": {
"texts": {
"description": "texts to match",
"type": "string"
},
"stringMatchType": {
"description": "the string match type",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchAnyText": {
"description": "Match texts with any value. true to match Replys with any text, false to match ProgramOfferings with no text",
"type": "boolean"
},
"matchForumIds": {
"description": "List of Forum Id's to match.",
"type": "array",
"items": {
"type": "object",
"properties": {
"forumId": {
"description": "Forum id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"forumQueries": {
"description": "ForumQueries to match Forum. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "object"
}
}
}
}
Example:
{
"matchDisplayNames": [
{
"displayName": "string to exclude",
"match": false
}
]
}
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "forum.Reply:8210@base.url",
"uri": "http://base.url/open/campusapi/forum/reply/forum.Reply%3A8210%40base.url",
"displayName": "Display Name of this Reply",
"description": "The description of this Reply",
"genusTypeId": "type.Type:defaultReplyType@base.url",
"recordTypeIds": [ "type.Type:exampleReplyRecordType@campusapi.org", "..."],
"sequestered": false,
"postId": "forum.Post:8621@base.url",
"replyId": ":1997@base.url",
"timestamp": "2021-07-21T23:15:30.000Z",
"posterId": "resource.Resource:142@base.url",
"subjectLine": "This is the SubjectLine",
"text": "This is the Text"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Entity representing a Reply form metadata.
Get form metadata for creating a new Reply.
get /replys/metadata
Get form metadata for creating a new Reply.
Query Parameters
- postId: required(string)
the post of this metadatum.
Example:
forum.Post%3A100%40base.url
- replyId: required(string)
the reply of this metadatum.
Example:
forum.Post%3A125%40base.url
- genusType: (string)
specify a particular reply type to create
Example:
type.Type%3AexampleReplyType%40dxtera.org
- recordType: (array of )
specify support for one or more reply record types
Example:
[ "type.Type%3AexampleReplyRecordType%40campusapi.org", "..." ]
- forumId: (string)
specify in which forum to create this reply
Example:
forum.Forum%3A8374%40base.url
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"$schema": "http://json-schema.org/draft/2019-9/schema#",
"title": "Reply",
"type": "object",
"required": ["displayName"],
"properties": {
"id": {
"description": "The unique id of this reply, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this reply, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this reply for display.",
"type": "string",
"read-only": false,
"minLength": 1,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Reply.Reply:displayName@base.url",
"existingValue": "The Existing Name",
"elementLabel": "Name",
"instructions": "Enter a name for this reply",
"linked": false
},
"description": {
"description": "The description of this reply.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Reply.Reply:displayName@demo.base.url",
"existingValue": "The Existing Description",
"elementLabel": "Description",
"instructions": "Enter a description for this reply",
"linked": false
},
"genusTypeId": {
"description": "Id of the immutable type of this reply. Default type set by system unless specified in query parameter on initial post.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"recordTypeIds": {
"description": "Type Ids of record types available on this reply. Record types define special attributes available on an object to support specific applications or classes of applications and are documented elsewhere.",
"type": "array",
"items": {
"type": "string",
"format": "osid-id"
},
"readOnly": true
},
"sequestered": {
"description": "Whether this reply is sequestered in that it should not appear outside of its aggregation.",
"type": "boolean",
"read-only": false,
"default": false,
"elementId": "Reply.Reply:rule@base.url",
"existingValue": false,
"elementLabel": "Sequestered",
"instructions": "Indicate whether this reply is sequestered",
"linked": false
},
"timestamp": {
"description": "The time of this entry.",
"type": "string",
"format": "date-time",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "forum.Reply:timestamp@dxtera.org",
"existingValue": "",
"elementLabel": "Timestamp",
"instructions": "Enter the timestamp of this reply.",
"linked": false
},
"posterId": {
"description": "The posting of this entry.",
"type": "string",
"type": "string",
"format": "osid-id",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "forum.Reply:poster@dxtera.org",
"existingValue": null,
"elementLabel": "Poster",
"instructions": "Enter the Id of the poster for this reply.",
"linked": false
},
"subjectLine": {
"description": "The subject line of this entry.",
"type": "string",
"read-only": false,
"minLength": null,
"maxLength": null,
"pattern": "",
"default": "",
"enum": [],
"elementId": "forum.Reply:subjectLine@dxtera.org",
"existingValue": "The existing subject line",
"elementLabel": "Subject Line",
"instructions": "Enter a subject line for this reply.",
"linked": false
},
"text": {
"description": "The text of the entry.",
"type": "string",
"read-only": false,
"minLength": null,
"maxLength": null,
"pattern": "",
"default": "",
"enum": [],
"elementId": "forum.Reply:text@dxtera.org",
"existingValue": "The existing text",
"elementLabel": "Text",
"instructions": "Enter a text for this reply.",
"linked": false
}
}
}
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Entity representing a Reply
Get a particular Reply given its id.
Update a particular Reply given its id.
Delete a particular Reply given its id.
get /replys/{replyId}
Get a particular Reply given its id.
URI Parameters
- replyId: required(string)
Query Parameters
- expand: (string)
Expand object or type for named attribute: "genusType", "recordType", "poster", "post", "reply", or "all" to expand all referenced objects or types. This parameter can be repeated to expand multiples.
Example:
all
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"id": "forum.Reply:8210@base.url",
"uri": "http://base.url/open/campusapi/forum/reply/forum.Reply%3A8210%40base.url",
"displayName": "Display Name of this Reply",
"description": "The description of this Reply",
"genusTypeId": "type.Type:defaultReplyType@base.url",
"recordTypeIds": [ "type.Type:exampleReplyRecordType@campusapi.org", "..."],
"sequestered": false,
"postId": "forum.Post:8621@base.url",
"replyId": ":1997@base.url",
"timestamp": "2021-07-21T23:15:30.000Z",
"posterId": "resource.Resource:142@base.url",
"subjectLine": "This is the SubjectLine",
"text": "This is the Text"
}
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
HTTP status code 404
Body
Media type: application/json
Type: any
Example:
{"message": "Reply not found" }
put /replys/{replyId}
Update a particular Reply given its id.
URI Parameters
- replyId: required(string)
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Reply",
"type": "object",
"properties": {
"id": {
"description": "The unique id of this reply, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this reply, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this reply for display.",
"type": "string"
},
"description": {
"description": "The description of this reply.",
"type": "string"
},
"genusTypeId": {
"description": "Id of the immutable type of this reply. Default type set by system unless specified in query parameter.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"recordTypeIds": {
"description": "Type Ids of record types available on this reply. Record types define special attributes available on an object to support specific applications or classes of applications and are documented elsewhere.",
"type": "array",
"items": {
"type": "string",
"format": "osid-id"
},
"readOnly": true
},
"sequestered": {
"description": "Whether this reply is sequestered in that it should not appear outside of its aggregation.",
"type": "boolean"
},
"postId": {
"description": "The post associated with this reply.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"replyId": {
"description": "The reply associated with this reply.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"timestamp": {
"description": "The time of this entry.",
"type": "string",
"format": "date-time"
},
"posterId": {
"description": "The posting of this entry.",
"type": "string",
"format": "osid-id"
},
"subjectLine": {
"description": "The subject line of this entry.",
"type": "string"
},
"text": {
"description": "The text of the entry.",
"type": "string"
}
}
}
Example:
{
"displayName": "Display Name of this Reply",
"description": "The description of this Reply",
"sequestered": false,
"timestamp": "2021-07-21T23:15:30.000Z",
"posterId": "resource.Resource:1128@base.url",
"subjectLine": "This is the SubjectLine",
"text": "This is the Text"
}
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The Reply has been updated" }
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
HTTP status code 404
Body
Media type: application/json
Type: any
Example:
{"message": "Reply not found" }
delete /replys/{replyId}
Delete a particular Reply given its id.
URI Parameters
- replyId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The Reply has been deleted" }
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
HTTP status code 404
Body
Media type: application/json
Type: any
Example:
{"message": "Reply not found" }
Entity representing a Reply form metadata for update
Get form metadata for updating an existing Reply.
get /replys/{replyId}/metadata
Get form metadata for updating an existing Reply.
URI Parameters
- replyId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"$schema": "http://json-schema.org/draft/2019-9/schema#",
"title": "Reply",
"type": "object",
"required": ["displayName"],
"properties": {
"id": {
"description": "The unique id of this reply, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this reply, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this reply for display.",
"type": "string",
"read-only": false,
"minLength": 1,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Reply.Reply:displayName@base.url",
"existingValue": "The Existing Name",
"elementLabel": "Name",
"instructions": "Enter a name for this reply",
"linked": false
},
"description": {
"description": "The description of this reply.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Reply.Reply:displayName@demo.base.url",
"existingValue": "The Existing Description",
"elementLabel": "Description",
"instructions": "Enter a description for this reply",
"linked": false
},
"genusTypeId": {
"description": "Id of the immutable type of this reply. Default type set by system unless specified in query parameter on initial post.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"recordTypeIds": {
"description": "Type Ids of record types available on this reply. Record types define special attributes available on an object to support specific applications or classes of applications and are documented elsewhere.",
"type": "array",
"items": {
"type": "string",
"format": "osid-id"
},
"readOnly": true
},
"sequestered": {
"description": "Whether this reply is sequestered in that it should not appear outside of its aggregation.",
"type": "boolean",
"read-only": false,
"default": false,
"elementId": "Reply.Reply:rule@base.url",
"existingValue": false,
"elementLabel": "Sequestered",
"instructions": "Indicate whether this reply is sequestered",
"linked": false
},
"timestamp": {
"description": "The time of this entry.",
"type": "string",
"format": "date-time",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "forum.Reply:timestamp@dxtera.org",
"existingValue": "",
"elementLabel": "Timestamp",
"instructions": "Enter the timestamp of this reply.",
"linked": false
},
"posterId": {
"description": "The posting of this entry.",
"type": "string",
"type": "string",
"format": "osid-id",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "forum.Reply:poster@dxtera.org",
"existingValue": null,
"elementLabel": "Poster",
"instructions": "Enter the Id of the poster for this reply.",
"linked": false
},
"subjectLine": {
"description": "The subject line of this entry.",
"type": "string",
"read-only": false,
"minLength": null,
"maxLength": null,
"pattern": "",
"default": "",
"enum": [],
"elementId": "forum.Reply:subjectLine@dxtera.org",
"existingValue": "The existing subject line",
"elementLabel": "Subject Line",
"instructions": "Enter a subject line for this reply.",
"linked": false
},
"text": {
"description": "The text of the entry.",
"type": "string",
"read-only": false,
"minLength": null,
"maxLength": null,
"pattern": "",
"default": "",
"enum": [],
"elementId": "forum.Reply:text@dxtera.org",
"existingValue": "The existing text",
"elementLabel": "Text",
"instructions": "Enter a text for this reply.",
"linked": false
}
}
}
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
HTTP status code 404
Body
Media type: application/json
Type: any
Example:
{"message": "reply not found" }
/forums
Collection of Forums in a system or federation of systems.
Get all Forums.
Create a new Forum.
get /forums
Get all Forums.
Query Parameters
- offset: (integer - default: 0)
Skip over a number of elements by specifying an offset value for the query
Example:
20
- limit: (integer - default: 10)
Limit the number of elements on the response
Example:
80
- expand: (string)
Expand object or type for named attribute: "genusType", "recordType", "provider", "branding", or "all" to expand all referenced objects or types. This parameter can be repeated to expand multiples.
Example:
all
- genusTypeId: (string)
The id string to match a genusType
Example:
type.Type%3AexampleForumType%40dxtera.org
- parentGenusTypeId: (string)
The id string to match a parent genusType
Example:
type.Type%3AparentTypeExampleForumType%40dxtera.org
- recordTypeId: (string)
The id string to match a recordType
Example:
type.Type%3AexampleForumType%40campusapi.org
- providerId: (string)
Id string to match provider.
Example:
resource.Resource%3A3007%40demo.dxtera.org
- postId: (string)
Get forums mapped to this post.
Example:
forum.Post%3A100%40demo.dxtera.org
- replyId: (string)
Get forums mapped to this reply.
Example:
forum.Reply%3A125%40demo.dxtera.org
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "forum.Forum:1281@base.url",
"uri": "http://base.url/open/campusapi/forum/forum/forum.Forum%3A1281%40base.url",
"displayName": "Display Name of this Forum",
"description": "The description of this Forum",
"genusTypeId": "type.Type:defaultForumType@base.url",
"recordTypeIds": [ "type.Type:exampleForumRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Forum@base.url",
"license": "The license that applies to this Forum"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
post /forums
Create a new Forum.
Query Parameters
- genusType: (string)
specify a particular forum type to create
Example:
type.Type%3AexampleForumType%40dxtera.org
- recordType: (array of )
specify support for one or more forum record types
Example:
[ "type.Type%3AexampleForumRecordType%40campusapi.org", "..." ]
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Forum",
"type": "object",
"properties": {
"id": {
"description": "The unique id of this forum, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this forum, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this forum for display.",
"type": "string"
},
"description": {
"description": "The description of this forum.",
"type": "string"
},
"genusTypeId": {
"description": "Id of the immutable type of this forum. Default type set by system unless specified in query parameter.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"recordTypeIds": {
"description": "Type Ids of record types available on this forum. Record types define special attributes available on an object to support specific applications or classes of applications and are documented elsewhere.",
"type": "array",
"items": {
"type": "string",
"format": "osid-id"
},
"readOnly": true
},
"providerId": {
"description": "The provider of this forum.",
"type": "string",
"format": "osid-id"
},
"brandingIds": {
"description": "The branding of this forum. A collection of Assets.",
"type": "array",
"items" : {
"type": "string",
"format": "osid-id"
}
},
"license": {
"description": "The licensing that applies to this forum.",
"type": "string"
}
}
}
Example:
{
"displayName": "Display Name of this Forum",
"description": "The description of this Forum",
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Forum@base.url",
"license": "The license that applies to this Forum"
}
Query the collection of Forums in a system, federation of systems, or in a default forum by posting a Query object.
Submit a query using a ForumQuery object.
post /forums/forum-query
Submit a query using a ForumQuery object.
Query Parameters
- offset: (integer - default: 0)
Skip over a number of elements by specifying an offset value for the query
Example:
20
- limit: (integer - default: 10)
Limit the number of elements on the response
Example:
80
- expand: (string)
Expand object or type for named attribute: "genusType", "recordType", or "all" to expand all referenced objects or types. This parameter can be repeated to expand multiples.
Example:
all
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "ForumQuery",
"type": "object",
"properties": {
"matchIds": {
"description": "List of Ids to match. Boolean OR performed among multiple Ids.",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"description": "id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchKeywords": {
"description": "List keywords to match. Multiple keywords can be added to perform a boolean OR among them. A keyword may be applied to any of the elements defined in this object such as the display name, description or any attribute defined in or implemented by this object.",
"type": "array",
"items": {
"type": "object",
"properties": {
"keyword": {
"description": "keyword to match",
"type": "string"
},
"stringMatchType": {
"description": "the string match type",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchDisplayNames": {
"description": "List of displayName strings to match. Boolean OR performed among multiple displayNames.",
"type": "array",
"items": {
"type": "object",
"properties": {
"displayName": {
"description": "displayName to match",
"type": "string"
},
"stringMatchType": {
"description": "the string match type",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchDescriptions": {
"description": "List of discription strings to match. Boolean OR performed among multiple descriptions.",
"type": "array",
"items": {
"type": "object",
"properties": {
"description": {
"description": "description to match",
"type": "string"
},
"stringMatchType": {
"description": "the string match type",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchGenusTypeIds": {
"description": "List of genus type ids to match. Boolean OR performed among multiple ids.",
"type": "array",
"items": {
"type": "object",
"properties": {
"genusTypeid": {
"description": "genus type id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchRecordTypeIds": {
"description": "List of record type ids to match. Boolean OR performed among multiple ids.",
"type": "array",
"items": {
"type": "object",
"properties": {
"genusTypeid": {
"description": "record type id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchProviderIds": {
"description": "List of provider Ids to match.",
"type": "array",
"items": {
"type": "object",
"properties": {
"stateId": {
"description": "id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"providerQueries": {
"description": "resource.ResourceQuery for provider. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "object"
},
"matchAnyProvider": {
"description": "Match providers with any value. true to match Forum with any provider, false to match Forum with no provider",
"type": "boolean"
}
},
"matchBrandingIds": {
"description": "List of branding asset Ids to match.",
"type": "array",
"items": {
"type": "object",
"properties": {
"stateId": {
"description": "id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"brandingQueries": {
"description": "repository.AssetQuery for branding. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "object"
}
},
"matchAnyBranding": {
"description": "Match brandingss with any value. true to match Forum with any branding, false to match Forum with no branding",
"type": "boolean"
},
"matchlicenses": {
"description": "List of license strings to match. Boolean OR performed among multiple descriptions.",
"type": "array",
"items": {
"type": "object",
"properties": {
"license": {
"description": "license to match",
"type": "string"
},
"stringMatchType": {
"description": "the string match type",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchForumIds": {
"description": "List of Forum Id's to match.",
"type": "array",
"items": {
"type": "object",
"properties": {
"forumId": {
"description": "Forum id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"forumQueries": {
"description": "ForumQueries to match Forum. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "object"
}
}
}
}
Example:
{
"matchDisplayNames": [
{
"displayName": "string to exclude",
"match": false
}
]
}
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "forum.Forum:1281@base.url",
"uri": "http://base.url/open/campusapi/forum/forum/forum.Forum%3A1281%40base.url",
"displayName": "Display Name of this Forum",
"description": "The description of this Forum",
"genusTypeId": "type.Type:defaultForumType@base.url",
"recordTypeIds": [ "type.Type:exampleForumRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Forum@base.url",
"license": "The license that applies to this Forum"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Entity representing a Forum form metadata.
Get form metadata for creating a new Forum.
get /forums/metadata
Get form metadata for creating a new Forum.
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"$schema": "http://json-schema.org/draft/2019-9/schema#",
"title": "Forum",
"type": "object",
"required": ["displayName"],
"properties": {
"id": {
"description": "The unique id of this forum, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this forum, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this forum for display.",
"type": "string",
"read-only": false,
"minLength": 1,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Forum.Forum:displayName@base.url",
"existingValue": "The Existing Name",
"elementLabel": "Name",
"instructions": "Enter a name for this forum",
"linked": false
},
"description": {
"description": "The description of this forum.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Forum.Forum:displayName@demo.base.url",
"existingValue": "The Existing Description",
"elementLabel": "Description",
"instructions": "Enter a description for this forum",
"linked": false
},
"genusTypeId": {
"description": "Id of the immutable type of this forum. Default type set by system unless specified in query parameter on initial post.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"recordTypeIds": {
"description": "Type Ids of record types available on this forum. Record types define special attributes available on an object to support specific applications or classes of applications and are documented elsewhere.",
"type": "array",
"items": {
"type": "string",
"format": "osid-id"
},
"readOnly": true
},
"providerId": {
"description": "The provider of this forum.",
"type": "string",
"format": "osid-id",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Forum.Forum:provider@base.url",
"existingValue": "",
"elementLabel": "Provider",
"instructions": "Enter the provider of this forum",
"linked": false
},
"brandingIds": {
"description": "The branding of this forum. A list of Assets.",
"type": "array",
"items" : {
"type": "string",
"format": "osid-id",
"pattern": "",
"enum": []
},
"read-only": false,
"default": [],
"elementId": "Forum.Forum:branding@base.url",
"existingValue": "",
"elementLabel": "Branding",
"instructions": "Enter the branding images for this forum",
"linked": false
},
"license": {
"description": "The licensing that applies to this forum.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Forum.Forum:license@base.url",
"existingValue": "The Existing License",
"elementLabel": "License",
"instructions": "Include a license for this forum",
"linked": false
}
}
}
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
The root Forums in the Forum hierarchy. A node with no parents is an orphan. While all Forum Ids are known to the hierarchy, an orphan does not appear in the hierarchy unless explicitly added as a root node or child of another node.
Get all root root-forum
get /forums/root-forum
Get all root root-forum
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "forum.Forum:1281@base.url",
"uri": "http://base.url/open/campusapi/forum/forum/forum.Forum%3A1281%40base.url",
"displayName": "Display Name of this Forum",
"description": "The description of this Forum",
"genusTypeId": "type.Type:defaultForumType@base.url",
"recordTypeIds": [ "type.Type:exampleForumRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Forum@base.url",
"license": "The license that applies to this Forum"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Entity representing a Forum
Get a particular Forum given its id.
Update a particular Forum given its id.
Delete a particular Forum given its id.
get /forums/{forumId}
Get a particular Forum given its id.
URI Parameters
- forumId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"id": "forum.Forum:1281@base.url",
"uri": "http://base.url/open/campusapi/forum/forum/forum.Forum%3A1281%40base.url",
"displayName": "Display Name of this Forum",
"description": "The description of this Forum",
"genusTypeId": "type.Type:defaultForumType@base.url",
"recordTypeIds": [ "type.Type:exampleForumRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Forum@base.url",
"license": "The license that applies to this Forum"
}
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
HTTP status code 404
Body
Media type: application/json
Type: any
Example:
{"message": "Forum not found" }
put /forums/{forumId}
Update a particular Forum given its id.
URI Parameters
- forumId: required(string)
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Forum",
"type": "object",
"properties": {
"id": {
"description": "The unique id of this forum, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this forum, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this forum for display.",
"type": "string"
},
"description": {
"description": "The description of this forum.",
"type": "string"
},
"genusTypeId": {
"description": "Id of the immutable type of this forum. Default type set by system unless specified in query parameter.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"recordTypeIds": {
"description": "Type Ids of record types available on this forum. Record types define special attributes available on an object to support specific applications or classes of applications and are documented elsewhere.",
"type": "array",
"items": {
"type": "string",
"format": "osid-id"
},
"readOnly": true
},
"providerId": {
"description": "The provider of this forum.",
"type": "string",
"format": "osid-id"
},
"brandingIds": {
"description": "The branding of this forum. A collection of Assets.",
"type": "array",
"items" : {
"type": "string",
"format": "osid-id"
}
},
"license": {
"description": "The licensing that applies to this forum.",
"type": "string"
}
}
}
Example:
{
"displayName": "Display Name of this Forum",
"description": "The description of this Forum",
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Forum@base.url",
"license": "The license that applies to this Forum"
}
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The Forum has been updated" }
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
HTTP status code 404
Body
Media type: application/json
Type: any
Example:
{"message": "Forum not found" }
delete /forums/{forumId}
Delete a particular Forum given its id.
URI Parameters
- forumId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The Forum has been deleted" }
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
HTTP status code 404
Body
Media type: application/json
Type: any
Example:
{"message": "Forum not found" }
Entity representing a Forum form metadata for update
Get form metadata for updating an existing Forum.
get /forums/{forumId}/metadata
Get form metadata for updating an existing Forum.
URI Parameters
- forumId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"$schema": "http://json-schema.org/draft/2019-9/schema#",
"title": "Forum",
"type": "object",
"required": ["displayName"],
"properties": {
"id": {
"description": "The unique id of this forum, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this forum, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this forum for display.",
"type": "string",
"read-only": false,
"minLength": 1,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Forum.Forum:displayName@base.url",
"existingValue": "The Existing Name",
"elementLabel": "Name",
"instructions": "Enter a name for this forum",
"linked": false
},
"description": {
"description": "The description of this forum.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Forum.Forum:displayName@demo.base.url",
"existingValue": "The Existing Description",
"elementLabel": "Description",
"instructions": "Enter a description for this forum",
"linked": false
},
"genusTypeId": {
"description": "Id of the immutable type of this forum. Default type set by system unless specified in query parameter on initial post.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"recordTypeIds": {
"description": "Type Ids of record types available on this forum. Record types define special attributes available on an object to support specific applications or classes of applications and are documented elsewhere.",
"type": "array",
"items": {
"type": "string",
"format": "osid-id"
},
"readOnly": true
},
"providerId": {
"description": "The provider of this forum.",
"type": "string",
"format": "osid-id",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Forum.Forum:provider@base.url",
"existingValue": "",
"elementLabel": "Provider",
"instructions": "Enter the provider of this forum",
"linked": false
},
"brandingIds": {
"description": "The branding of this forum. A list of Assets.",
"type": "array",
"items" : {
"type": "string",
"format": "osid-id",
"pattern": "",
"enum": []
},
"read-only": false,
"default": [],
"elementId": "Forum.Forum:branding@base.url",
"existingValue": "",
"elementLabel": "Branding",
"instructions": "Enter the branding images for this forum",
"linked": false
},
"license": {
"description": "The licensing that applies to this forum.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Forum.Forum:license@base.url",
"existingValue": "The Existing License",
"elementLabel": "License",
"instructions": "Include a license for this forum",
"linked": false
}
}
}
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
HTTP status code 404
Body
Media type: application/json
Type: any
Example:
{"message": "forum not found" }
Get child Forums for the given Forum in the hierarchy.
get /forums/{forumId}/children
Get child Forums for the given Forum in the hierarchy.
URI Parameters
- forumId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "forum.Forum:1281@base.url",
"uri": "http://base.url/open/campusapi/forum/forum/forum.Forum%3A1281%40base.url",
"displayName": "Display Name of this Forum",
"description": "The description of this Forum",
"genusTypeId": "type.Type:defaultForumType@base.url",
"recordTypeIds": [ "type.Type:exampleForumRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Forum@base.url",
"license": "The license that applies to this Forum"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Add Forum as child of the given Forum in the hierarchy.
Remove the given Forum as a child of the given Forum in the hierarchy.
put /forums/{forumId}/children/{childId}
Add Forum as child of the given Forum in the hierarchy.
URI Parameters
- forumId: required(string)
- childId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The child Forum has been added to the hierarchy" }
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
HTTP status code 404
Body
Media type: application/json
Type: any
Example:
{ "message": "forum not found" }
delete /forums/{forumId}/children/{childId}
Remove the given Forum as a child of the given Forum in the hierarchy.
URI Parameters
- forumId: required(string)
- childId: required(string)
Get parent Forums for the given Forum in the hierarchy.
get /forums/{forumId}/parents
Get parent Forums for the given Forum in the hierarchy.
URI Parameters
- forumId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "forum.Forum:1281@base.url",
"uri": "http://base.url/open/campusapi/forum/forum/forum.Forum%3A1281%40base.url",
"displayName": "Display Name of this Forum",
"description": "The description of this Forum",
"genusTypeId": "type.Type:defaultForumType@base.url",
"recordTypeIds": [ "type.Type:exampleForumRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Forum@base.url",
"license": "The license that applies to this Forum"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Get all Posts in this Forum
get /forums/{forumId}/posts
Get all Posts in this Forum
URI Parameters
- forumId: required(string)
Query Parameters
- offset: (integer - default: 0)
Skip over a number of elements by specifying an offset value for the query
Example:
20
- limit: (integer - default: 10)
Limit the number of elements on the response
Example:
80
- expand: (string)
Expand object or type for named attribute: "genusType", "recordType", "poster", or "all" to expand all referenced objects or types. This parameter can be repeated to expand multiples.
Example:
all
- genusTypeId: (string)
The id string to match a genusType
Example:
type.Type%3AexamplePostType%40dxtera.org
- parentGenusTypeId: (string)
The id string to match a parent genusType
Example:
type.Type%3AparentTypeExamplePostType%40dxtera.org
- recordTypeId: (string)
The id string to match a recordType
Example:
type.Type%3AexamplePostType%40campusapi.org
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "forum.Post:5139@base.url",
"uri": "http://base.url/open/campusapi/forum/post/forum.Post%3A5139%40base.url",
"displayName": "Display Name of this Post",
"description": "The description of this Post",
"genusTypeId": "type.Type:defaultPostType@base.url",
"recordTypeIds": [ "type.Type:examplePostRecordType@campusapi.org", "..."],
"timestamp": "2021-07-21T23:15:30.000Z",
"posterId": "resource.Resource:6842@base.url",
"subjectLine": "This is the SubjectLine",
"text": "This is the Text"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Add the given Post to this Forum
Remove the given Post from the Forum.
put /forums/{forumId}/posts/{postId}
Add the given Post to this Forum
URI Parameters
- forumId: required(string)
- postId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "Post has been added to Forum" }
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
HTTP status code 404
Body
Media type: application/json
Type: any
Example:
{ "message": "Post not found" }
delete /forums/{forumId}/posts/{postId}
Remove the given Post from the Forum.
URI Parameters
- forumId: required(string)
- postId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "Post has been removed" }
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
HTTP status code 404
Body
Media type: application/json
Type: any
Example:
{ "message": "Post not found" }
Get all Replys in this Forum
get /forums/{forumId}/replys
Get all Replys in this Forum
URI Parameters
- forumId: required(string)
Query Parameters
- offset: (integer - default: 0)
Skip over a number of elements by specifying an offset value for the query
Example:
20
- limit: (integer - default: 10)
Limit the number of elements on the response
Example:
80
- expand: (string)
Expand object or type for named attribute: "genusType", "recordType", "poster", "post", "reply", or "all" to expand all referenced objects or types. This parameter can be repeated to expand multiples.
Example:
all
- genusTypeId: (string)
The id string to match a genusType
Example:
type.Type%3AexampleReplyType%40dxtera.org
- parentGenusTypeId: (string)
The id string to match a parent genusType
Example:
type.Type%3AparentTypeExampleReplyType%40dxtera.org
- recordTypeId: (string)
The id string to match a recordType
Example:
type.Type%3AexampleReplyType%40campusapi.org
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "forum.Reply:8210@base.url",
"uri": "http://base.url/open/campusapi/forum/reply/forum.Reply%3A8210%40base.url",
"displayName": "Display Name of this Reply",
"description": "The description of this Reply",
"genusTypeId": "type.Type:defaultReplyType@base.url",
"recordTypeIds": [ "type.Type:exampleReplyRecordType@campusapi.org", "..."],
"sequestered": false,
"postId": "forum.Post:8621@base.url",
"replyId": ":1997@base.url",
"timestamp": "2021-07-21T23:15:30.000Z",
"posterId": "resource.Resource:142@base.url",
"subjectLine": "This is the SubjectLine",
"text": "This is the Text"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Add the given Reply to this Forum
Remove the given Reply from the Forum.
put /forums/{forumId}/replys/{replyId}
Add the given Reply to this Forum
URI Parameters
- forumId: required(string)
- replyId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "Reply has been added to Forum" }
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
HTTP status code 404
Body
Media type: application/json
Type: any
Example:
{ "message": "Reply not found" }
delete /forums/{forumId}/replys/{replyId}
Remove the given Reply from the Forum.
URI Parameters
- forumId: required(string)
- replyId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "Reply has been removed" }
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
HTTP status code 404
Body
Media type: application/json
Type: any
Example:
{ "message": "Reply not found" }