CampusAPI Blogging Services API documentation version 0.1.2
Based on OSID version 3.0.0
https://base.url/blogging
Overview
The Blogging service package manages blogs and blog Entries.
Posters:
An Agent posts an Entry. The Blogging service also provides access to the related Resource of the posting Agent so that orchestration with a Resource service is unnecessary to normalize the authenticated identities where multiple Agents are in play.
Orchestration:
The Blogging service may be orchestrated with the Process service to provide state management and/or the Ontology service to implement subject tagging. The Blog may also be orchestrated with the Commenting service to provide a list of comments and ratings from other users as well as Commenting Books for tracking read blog entries for a specific user.
This package includes the following entities:
Entries
A blog Entry is an entity which represents some text posted by an Agent and a timestamp. The blog Entry may include additional data available through extension.
Field | Description | Type |
---|---|---|
id(read‑only) | The unique id of this entry, provided by system. | string(osid‑id) |
uri(read‑only) | The uri of this entry, provided by system. | string(uri) |
displayName | The name of this entry for display. | string |
description | The description of this entry. | string |
genusTypeId (read‑only) | Id of the immutable type of this entry. Default type set by system unless specified in query parameter. | string(osid‑id) |
recordTypeIds (read‑only) | Type Ids of record types available on this entry. 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 entry. References a resource.Resource object. | string(osid‑id) |
brandingIds | The branding of this entry. References repository.Asset objects. | string(osid‑id)[] |
license | The licensing that applies to this entry. | string |
timestamp | The time of this entry. | string(date‑time) |
posterId | The poster of this entry. References a resource.Resource object | string(osid‑id) |
subjectLine | The subject line of this entry. | string |
summary | The summary or excerpt of this entry. | string |
text | The text of the entry. | string |
copyright | The copyright statement for this entry. | string |
Blogs
Blog entries are cataloged in Blogs. A single Blog may represent a set of entries posted by a single poster, or Blogs may be federated using the hierarchy pattern to include a variety of blog entries across several posters. A Blog catalog may also provide a view of certain entries filtered by topic or date.
Field | Description | Type |
---|---|---|
id(read‑only) | The unique id of this blog, provided by system. | string(osid‑id) |
uri(read‑only) | The uri of this blog, provided by system. | string(uri) |
displayName | The name of this blog for display. | string |
description | The description of this blog. | string |
genusTypeId (read‑only) | Id of the immutable type of this blog. Default type set by system unless specified in query parameter. | string(osid‑id) |
recordTypeIds (read‑only) | Type Ids of record types available on this blog. 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 blog. References a resource.Resource object. | string(osid‑id) |
brandingIds | The branding of this blog. References repository.Asset objects. | string(osid‑id)[] |
license | The licensing that applies to this blog. | string |
License
CampusAPI REST Documentation Copyright 2020 DXtera Institute. Based on the Open Service Interface Defitions: http://osid.org
/entries
Collection of entries in a system, federation of systems, or in a default blog.
Get all entries in the system or default blog.
Create a new entry in the default blog.
get /entries
Get all entries in the system or default blog.
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
- genusTypeId: (string)
The id string to match a genusType
Example:
type.Type%3AexampleEntryType%40dxtera.org
- parentGenusTypeId: (string)
The id string to match a parent genusType
Example:
type.Type%3AparentTypeExampleEntryType%40dxtera.org
- recordTypeId: (string)
The id string to match a recordType
Example:
type.Type%3AexampleEntryType%40campusapi.org
- providerId: (string)
Id string to match provider.
Example:
resource.Resource%3A3690%40demo.dxtera.org
- posterId: (string)
Id string to match poster.
Example:
resource.Resource%3A7836%40demo.dxtera.org
- blogId: (string)
The id string to match a blog
Example:
blogging.Blog%3A8374%40base.url
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "blogging.Entry:6866@base.url",
"uri": "http://base.url/open/campusapi/blogging/entry/blogging.Entry%3A6866%40base.url",
"displayName": "Display Name of this Entry",
"description": "The description of this Entry",
"genusTypeId": "type.Type:defaultEntryType@base.url",
"recordTypeIds": [ "type.Type:exampleEntryRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@Entry",
"brandingId": "asset.Asset:7315@Entry",
"license": "The license that applies to this 7315",
"timestamp": "2021-07-21T23:15:30.000Z",
"posterId": "resource.Resource:2384@base.url",
"subjectLine": "This is the SubjectLine",
"summary": "This is the Summary",
"text": "This is the Text",
"copyright": "This is the Copyright"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
post /entries
Create a new entry in the default blog.
Query Parameters
- genusType: (string)
specify a particular entry type to create
Example:
type.Type%3AexampleEntryType%40dxtera.org
- recordType: (array of )
specify support for one or more entry record types
Example:
[ "type.Type%3AexampleEntryRecordType%40campusapi.org", "..." ]
- blogId: (string)
specify in which blog to create this entry
Example:
blogging.Blog%3A8374%40base.url
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Entry",
"type": "object",
"properties": {
"id": {
"description": "The unique id of this entry, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this entry, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this entry for display.",
"type": "string"
},
"description": {
"description": "The description of this entry.",
"type": "string"
},
"genusTypeId": {
"description": "Id of the immutable type of this entry. 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 entry. 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 entry.",
"type": "string",
"format": "osid-id"
},
"brandingIds": {
"description": "The branding of this entry. A collection of Assets.",
"type": "array",
"items" : {
"type": "string",
"format": "osid-id"
}
},
"license": {
"description": "The licensing that applies to this entry.",
"type": "string"
},
"timestamp": {
"description": "The time of this entry.",
"type": "string",
"format": "date-time"
},
"posterId": {
"description": "The poster of this entry.",
"type": "string",
"format": "osid-id"
},
"subjectLine": {
"description": "The subject line of this entry.",
"type": "string"
},
"summary": {
"description": "The summary or excerpt of this entry.",
"type": "string"
},
"text": {
"description": "The text of the entry.",
"type": "string"
},
"copyright": {
"description": "The copyright statement for this entry.",
"type": "string"
}
}
}
Example:
{
"displayName": "Display Name of this Entry",
"description": "The description of this Entry",
"providerId": "resource.Resource:123@Entry",
"brandingId": "asset.Asset:5605@Entry",
"license": "The license that applies to this 5605",
"timestamp": "2021-07-21T23:15:30.000Z",
"posterId": "resource.Resource:9070@base.url",
"subjectLine": "This is the SubjectLine",
"summary": "This is the Summary",
"text": "This is the Text",
"copyright": "This is the Copyright"
}
Entity representing a entry form metadata.
Get form metadata for creating a new entry.
get /entries/metadata
Get form metadata for creating a new entry.
Query Parameters
- genusType: (string)
specify a particular entry type to create
Example:
type.Type%3AexampleEntryType%40dxtera.org
- recordType: (array of )
specify support for one or more entry record types
Example:
[ "type.Type%3AexampleEntryRecordType%40campusapi.org", "..." ]
- blogId: (string)
specify in which blog to create this entry
Example:
blogging.Blog%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": "Entry",
"type": "object",
"required": ["displayName"],
"properties": {
"id": {
"description": "The unique id of this entry, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this entry, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this entry for display.",
"type": "string",
"read-only": false,
"minLength": 1,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Entry.Entry:displayName@base.url",
"existingValue": "The Existing Name",
"elementLabel": "Name",
"instructions": "Enter a name for this entry",
"linked": false
},
"description": {
"description": "The description of this entry.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Entry.Entry:displayName@demo.base.url",
"existingValue": "The Existing Description",
"elementLabel": "Description",
"instructions": "Enter a description for this entry",
"linked": false
},
"genusTypeId": {
"description": "Id of the immutable type of this entry. 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 entry. 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 entry.",
"type": "string",
"format": "osid-id",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Entry.Entry:provider@base.url",
"existingValue": "",
"elementLabel": "Provider",
"instructions": "Enter the provider of this entry",
"linked": false
},
"brandingIds": {
"description": "The branding of this entry. A list of Assets.",
"type": "array",
"items" : {
"type": "string",
"format": "osid-id",
"pattern": "",
"enum": []
},
"read-only": false,
"default": [],
"elementId": "Entry.Entry:branding@base.url",
"existingValue": "",
"elementLabel": "Branding",
"instructions": "Enter the branding images for this entry",
"linked": false
},
"license": {
"description": "The licensing that applies to this entry.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Entry.Entry:license@base.url",
"existingValue": "The Existing License",
"elementLabel": "License",
"instructions": "Include a license for this entry",
"linked": false
},
"timestamp": {
"description": "The time of this entry.",
"type": "string",
"format": "date-time",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "blogging.Entry:timestamp@dxtera.org",
"existingValue": "",
"elementLabel": "Timestamp",
"instructions": "Enter the timestamp of this entry.",
"linked": false
},
"posterId": {
"description": "The poster of this entry.",
"type": "string",
"type": "string",
"format": "osid-id",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "blogging.Entry:poster@dxtera.org",
"existingValue": null,
"elementLabel": "Poster",
"instructions": "Enter the Id of the poster for this entry.",
"linked": false
},
"subjectLine": {
"description": "The subject line of this entry.",
"type": "string",
"read-only": false,
"minLength": null,
"maxLength": null,
"pattern": "",
"default": "",
"enum": [],
"elementId": "blogging.Entry:subjectLine@dxtera.org",
"existingValue": "The existing subject line",
"elementLabel": "Subject Line",
"instructions": "Enter a subject line for this entry.",
"linked": false
},
"summary": {
"description": "The summary or excerpt of this entry.",
"type": "string",
"read-only": false,
"minLength": null,
"maxLength": null,
"pattern": "",
"default": "",
"enum": [],
"elementId": "blogging.Entry:summary@dxtera.org",
"existingValue": "The existing summary",
"elementLabel": "Summary",
"instructions": "Enter a summary for this entry.",
"linked": false
},
"text": {
"description": "The text of the entry.",
"type": "string",
"read-only": false,
"minLength": null,
"maxLength": null,
"pattern": "",
"default": "",
"enum": [],
"elementId": "blogging.Entry:text@dxtera.org",
"existingValue": "The existing text",
"elementLabel": "Text",
"instructions": "Enter a text for this entry.",
"linked": false
},
"copyright": {
"description": "The copyright statement for this entry.",
"type": "string",
"read-only": false,
"minLength": null,
"maxLength": null,
"pattern": "",
"default": "",
"enum": [],
"elementId": "blogging.Entry:copyright@dxtera.org",
"existingValue": "The existing copyright",
"elementLabel": "Copyright",
"instructions": "Enter a copyright for this entry.",
"linked": false
}
}
}
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Entity representing a entry
Get a entry given its id.
Update a given entry.
Delete a given entry.
get /entries/{entryId}
Get a entry given its id.
URI Parameters
- entryId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"id": "blogging.Entry:6866@base.url",
"uri": "http://base.url/open/campusapi/blogging/entry/blogging.Entry%3A6866%40base.url",
"displayName": "Display Name of this Entry",
"description": "The description of this Entry",
"genusTypeId": "type.Type:defaultEntryType@base.url",
"recordTypeIds": [ "type.Type:exampleEntryRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@Entry",
"brandingId": "asset.Asset:7315@Entry",
"license": "The license that applies to this 7315",
"timestamp": "2021-07-21T23:15:30.000Z",
"posterId": "resource.Resource:2384@base.url",
"subjectLine": "This is the SubjectLine",
"summary": "This is the Summary",
"text": "This is the Text",
"copyright": "This is the Copyright"
}
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": "entry not found" }
put /entries/{entryId}
Update a given entry.
URI Parameters
- entryId: required(string)
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Entry",
"type": "object",
"properties": {
"id": {
"description": "The unique id of this entry, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this entry, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this entry for display.",
"type": "string"
},
"description": {
"description": "The description of this entry.",
"type": "string"
},
"genusTypeId": {
"description": "Id of the immutable type of this entry. 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 entry. 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 entry.",
"type": "string",
"format": "osid-id"
},
"brandingIds": {
"description": "The branding of this entry. A collection of Assets.",
"type": "array",
"items" : {
"type": "string",
"format": "osid-id"
}
},
"license": {
"description": "The licensing that applies to this entry.",
"type": "string"
},
"timestamp": {
"description": "The time of this entry.",
"type": "string",
"format": "date-time"
},
"posterId": {
"description": "The poster of this entry.",
"type": "string",
"format": "osid-id"
},
"subjectLine": {
"description": "The subject line of this entry.",
"type": "string"
},
"summary": {
"description": "The summary or excerpt of this entry.",
"type": "string"
},
"text": {
"description": "The text of the entry.",
"type": "string"
},
"copyright": {
"description": "The copyright statement for this entry.",
"type": "string"
}
}
}
Example:
{
"displayName": "Display Name of this Entry",
"description": "The description of this Entry",
"providerId": "resource.Resource:123@Entry",
"brandingId": "asset.Asset:5605@Entry",
"license": "The license that applies to this 5605",
"timestamp": "2021-07-21T23:15:30.000Z",
"posterId": "resource.Resource:9070@base.url",
"subjectLine": "This is the SubjectLine",
"summary": "This is the Summary",
"text": "This is the Text",
"copyright": "This is the Copyright"
}
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The entry 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": "entry not found" }
delete /entries/{entryId}
Delete a given entry.
URI Parameters
- entryId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The entry 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": "entry not found" }
Entity representing a entry form metadata for update
Get form metadata for updating an existing entry.
get /entries/{entryId}/metadata
Get form metadata for updating an existing entry.
URI Parameters
- entryId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"$schema": "http://json-schema.org/draft/2019-9/schema#",
"title": "Entry",
"type": "object",
"required": ["displayName"],
"properties": {
"id": {
"description": "The unique id of this entry, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this entry, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this entry for display.",
"type": "string",
"read-only": false,
"minLength": 1,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Entry.Entry:displayName@base.url",
"existingValue": "The Existing Name",
"elementLabel": "Name",
"instructions": "Enter a name for this entry",
"linked": false
},
"description": {
"description": "The description of this entry.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Entry.Entry:displayName@demo.base.url",
"existingValue": "The Existing Description",
"elementLabel": "Description",
"instructions": "Enter a description for this entry",
"linked": false
},
"genusTypeId": {
"description": "Id of the immutable type of this entry. 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 entry. 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 entry.",
"type": "string",
"format": "osid-id",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Entry.Entry:provider@base.url",
"existingValue": "",
"elementLabel": "Provider",
"instructions": "Enter the provider of this entry",
"linked": false
},
"brandingIds": {
"description": "The branding of this entry. A list of Assets.",
"type": "array",
"items" : {
"type": "string",
"format": "osid-id",
"pattern": "",
"enum": []
},
"read-only": false,
"default": [],
"elementId": "Entry.Entry:branding@base.url",
"existingValue": "",
"elementLabel": "Branding",
"instructions": "Enter the branding images for this entry",
"linked": false
},
"license": {
"description": "The licensing that applies to this entry.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Entry.Entry:license@base.url",
"existingValue": "The Existing License",
"elementLabel": "License",
"instructions": "Include a license for this entry",
"linked": false
},
"timestamp": {
"description": "The time of this entry.",
"type": "string",
"format": "date-time",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "blogging.Entry:timestamp@dxtera.org",
"existingValue": "",
"elementLabel": "Timestamp",
"instructions": "Enter the timestamp of this entry.",
"linked": false
},
"posterId": {
"description": "The poster of this entry.",
"type": "string",
"type": "string",
"format": "osid-id",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "blogging.Entry:poster@dxtera.org",
"existingValue": null,
"elementLabel": "Poster",
"instructions": "Enter the Id of the poster for this entry.",
"linked": false
},
"subjectLine": {
"description": "The subject line of this entry.",
"type": "string",
"read-only": false,
"minLength": null,
"maxLength": null,
"pattern": "",
"default": "",
"enum": [],
"elementId": "blogging.Entry:subjectLine@dxtera.org",
"existingValue": "The existing subject line",
"elementLabel": "Subject Line",
"instructions": "Enter a subject line for this entry.",
"linked": false
},
"summary": {
"description": "The summary or excerpt of this entry.",
"type": "string",
"read-only": false,
"minLength": null,
"maxLength": null,
"pattern": "",
"default": "",
"enum": [],
"elementId": "blogging.Entry:summary@dxtera.org",
"existingValue": "The existing summary",
"elementLabel": "Summary",
"instructions": "Enter a summary for this entry.",
"linked": false
},
"text": {
"description": "The text of the entry.",
"type": "string",
"read-only": false,
"minLength": null,
"maxLength": null,
"pattern": "",
"default": "",
"enum": [],
"elementId": "blogging.Entry:text@dxtera.org",
"existingValue": "The existing text",
"elementLabel": "Text",
"instructions": "Enter a text for this entry.",
"linked": false
},
"copyright": {
"description": "The copyright statement for this entry.",
"type": "string",
"read-only": false,
"minLength": null,
"maxLength": null,
"pattern": "",
"default": "",
"enum": [],
"elementId": "blogging.Entry:copyright@dxtera.org",
"existingValue": "The existing copyright",
"elementLabel": "Copyright",
"instructions": "Enter a copyright for this entry.",
"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": "entry not found" }
/blogs
Collection of blogs in a system or federation of systems.
Get all blogs.
Create a new blog.
get /blogs
Get all blogs.
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
- genusTypeId: (string)
The id string to match a genusType
Example:
type.Type%3AexampleBlogType%40dxtera.org
- parentGenusTypeId: (string)
The id string to match a parent genusType
Example:
type.Type%3AparentTypeExampleBlogType%40dxtera.org
- recordTypeId: (string)
The id string to match a recordType
Example:
type.Type%3AexampleBlogType%40campusapi.org
- providerId: (string)
Id string to match provider.
Example:
resource.Resource%3A3007%40demo.dxtera.org
- entryId: (string)
Get blogs mapped to this entry.
Example:
blogging.Entry%3A160%40demo.dxtera.org
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "blogging.Blog:482@base.url",
"uri": "http://base.url/open/campusapi/blogging/blog/blogging.Blog%3A482%40base.url",
"displayName": "Display Name of this Blog",
"description": "The description of this Blog",
"genusTypeId": "type.Type:defaultBlogType@base.url",
"recordTypeIds": [ "type.Type:exampleBlogRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Blog@base.url",
"license": "The license that applies to this Blog"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
post /blogs
Create a new blog.
Query Parameters
- genusType: (string)
specify a particular blog type to create
Example:
type.Type%3AexampleBlogType%40dxtera.org
- recordType: (array of )
specify support for one or more blog record types
Example:
[ "type.Type%3AexampleBlogRecordType%40campusapi.org", "..." ]
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Blog",
"type": "object",
"properties": {
"id": {
"description": "The unique id of this blog, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this blog, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this blog for display.",
"type": "string"
},
"description": {
"description": "The description of this blog.",
"type": "string"
},
"genusTypeId": {
"description": "Id of the immutable type of this blog. 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 blog. 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 blog.",
"type": "string",
"format": "osid-id"
},
"brandingIds": {
"description": "The branding of this blog. A collection of Assets.",
"type": "array",
"items" : {
"type": "string",
"format": "osid-id"
}
},
"license": {
"description": "The licensing that applies to this blog.",
"type": "string"
}
}
}
Example:
{
"displayName": "Display Name of this Blog",
"description": "The description of this Blog",
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Blog@base.url",
"license": "The license that applies to this Blog"
}
Entity representing a blog form metadata.
Get form metadata for creating a new blog.
get /blogs/metadata
Get form metadata for creating a new blog.
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"$schema": "http://json-schema.org/draft/2019-9/schema#",
"title": "Blog",
"type": "object",
"required": ["displayName"],
"properties": {
"id": {
"description": "The unique id of this blog, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this blog, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this blog for display.",
"type": "string",
"read-only": false,
"minLength": 1,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Blog.Blog:displayName@base.url",
"existingValue": "The Existing Name",
"elementLabel": "Name",
"instructions": "Enter a name for this blog",
"linked": false
},
"description": {
"description": "The description of this blog.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Blog.Blog:displayName@demo.base.url",
"existingValue": "The Existing Description",
"elementLabel": "Description",
"instructions": "Enter a description for this blog",
"linked": false
},
"genusTypeId": {
"description": "Id of the immutable type of this blog. 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 blog. 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 blog.",
"type": "string",
"format": "osid-id",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Blog.Blog:provider@base.url",
"existingValue": "",
"elementLabel": "Provider",
"instructions": "Enter the provider of this blog",
"linked": false
},
"brandingIds": {
"description": "The branding of this blog. A list of Assets.",
"type": "array",
"items" : {
"type": "string",
"format": "osid-id",
"pattern": "",
"enum": []
},
"read-only": false,
"default": [],
"elementId": "Blog.Blog:branding@base.url",
"existingValue": "",
"elementLabel": "Branding",
"instructions": "Enter the branding images for this blog",
"linked": false
},
"license": {
"description": "The licensing that applies to this blog.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Blog.Blog:license@base.url",
"existingValue": "The Existing License",
"elementLabel": "License",
"instructions": "Include a license for this blog",
"linked": false
}
}
}
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
The root blogs in the blog hierarchy. A node with no parents is an orphan. While all blog 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-blog
get /blogs/root-blog
Get all root root-blog
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "blogging.Blog:482@base.url",
"uri": "http://base.url/open/campusapi/blogging/blog/blogging.Blog%3A482%40base.url",
"displayName": "Display Name of this Blog",
"description": "The description of this Blog",
"genusTypeId": "type.Type:defaultBlogType@base.url",
"recordTypeIds": [ "type.Type:exampleBlogRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Blog@base.url",
"license": "The license that applies to this Blog"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Entity representing a blog
Get a blog given its id.
Update a given blog.
Delete a given blog.
get /blogs/{blogId}
Get a blog given its id.
URI Parameters
- blogId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"id": "blogging.Blog:482@base.url",
"uri": "http://base.url/open/campusapi/blogging/blog/blogging.Blog%3A482%40base.url",
"displayName": "Display Name of this Blog",
"description": "The description of this Blog",
"genusTypeId": "type.Type:defaultBlogType@base.url",
"recordTypeIds": [ "type.Type:exampleBlogRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Blog@base.url",
"license": "The license that applies to this Blog"
}
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": "blog not found" }
put /blogs/{blogId}
Update a given blog.
URI Parameters
- blogId: required(string)
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Blog",
"type": "object",
"properties": {
"id": {
"description": "The unique id of this blog, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this blog, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this blog for display.",
"type": "string"
},
"description": {
"description": "The description of this blog.",
"type": "string"
},
"genusTypeId": {
"description": "Id of the immutable type of this blog. 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 blog. 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 blog.",
"type": "string",
"format": "osid-id"
},
"brandingIds": {
"description": "The branding of this blog. A collection of Assets.",
"type": "array",
"items" : {
"type": "string",
"format": "osid-id"
}
},
"license": {
"description": "The licensing that applies to this blog.",
"type": "string"
}
}
}
Example:
{
"displayName": "Display Name of this Blog",
"description": "The description of this Blog",
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Blog@base.url",
"license": "The license that applies to this Blog"
}
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The blog 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": "blog not found" }
delete /blogs/{blogId}
Delete a given blog.
URI Parameters
- blogId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The blog 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": "blog not found" }
Entity representing a blog form metadata for update
Get form metadata for updating an existing blog.
get /blogs/{blogId}/metadata
Get form metadata for updating an existing blog.
URI Parameters
- blogId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"$schema": "http://json-schema.org/draft/2019-9/schema#",
"title": "Blog",
"type": "object",
"required": ["displayName"],
"properties": {
"id": {
"description": "The unique id of this blog, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this blog, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this blog for display.",
"type": "string",
"read-only": false,
"minLength": 1,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Blog.Blog:displayName@base.url",
"existingValue": "The Existing Name",
"elementLabel": "Name",
"instructions": "Enter a name for this blog",
"linked": false
},
"description": {
"description": "The description of this blog.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Blog.Blog:displayName@demo.base.url",
"existingValue": "The Existing Description",
"elementLabel": "Description",
"instructions": "Enter a description for this blog",
"linked": false
},
"genusTypeId": {
"description": "Id of the immutable type of this blog. 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 blog. 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 blog.",
"type": "string",
"format": "osid-id",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Blog.Blog:provider@base.url",
"existingValue": "",
"elementLabel": "Provider",
"instructions": "Enter the provider of this blog",
"linked": false
},
"brandingIds": {
"description": "The branding of this blog. A list of Assets.",
"type": "array",
"items" : {
"type": "string",
"format": "osid-id",
"pattern": "",
"enum": []
},
"read-only": false,
"default": [],
"elementId": "Blog.Blog:branding@base.url",
"existingValue": "",
"elementLabel": "Branding",
"instructions": "Enter the branding images for this blog",
"linked": false
},
"license": {
"description": "The licensing that applies to this blog.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Blog.Blog:license@base.url",
"existingValue": "The Existing License",
"elementLabel": "License",
"instructions": "Include a license for this blog",
"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": "blog not found" }
Get child blogs for the given blog in the hierarchy.
get /blogs/{blogId}/children
Get child blogs for the given blog in the hierarchy.
URI Parameters
- blogId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "blogging.Blog:482@base.url",
"uri": "http://base.url/open/campusapi/blogging/blog/blogging.Blog%3A482%40base.url",
"displayName": "Display Name of this Blog",
"description": "The description of this Blog",
"genusTypeId": "type.Type:defaultBlogType@base.url",
"recordTypeIds": [ "type.Type:exampleBlogRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Blog@base.url",
"license": "The license that applies to this Blog"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Add blog as child of the given blog in the hierarchy.
Remove the given blog as a child of the given blog in the hierarchy.
put /blogs/{blogId}/children/{childId}
Add blog as child of the given blog in the hierarchy.
URI Parameters
- blogId: required(string)
- childId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The child blog 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": "blog not found" }
delete /blogs/{blogId}/children/{childId}
Remove the given blog as a child of the given blog in the hierarchy.
URI Parameters
- blogId: required(string)
- childId: required(string)
Get parent blogs for the given blog in the hierarchy.
get /blogs/{blogId}/parents
Get parent blogs for the given blog in the hierarchy.
URI Parameters
- blogId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "blogging.Blog:482@base.url",
"uri": "http://base.url/open/campusapi/blogging/blog/blogging.Blog%3A482%40base.url",
"displayName": "Display Name of this Blog",
"description": "The description of this Blog",
"genusTypeId": "type.Type:defaultBlogType@base.url",
"recordTypeIds": [ "type.Type:exampleBlogRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Blog@base.url",
"license": "The license that applies to this Blog"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Get all entries in this blog
get /blogs/{blogId}/entries
Get all entries in this blog
URI Parameters
- blogId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "blogging.Entry:6866@base.url",
"uri": "http://base.url/open/campusapi/blogging/entry/blogging.Entry%3A6866%40base.url",
"displayName": "Display Name of this Entry",
"description": "The description of this Entry",
"genusTypeId": "type.Type:defaultEntryType@base.url",
"recordTypeIds": [ "type.Type:exampleEntryRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@Entry",
"brandingId": "asset.Asset:7315@Entry",
"license": "The license that applies to this 7315",
"timestamp": "2021-07-21T23:15:30.000Z",
"posterId": "resource.Resource:2384@base.url",
"subjectLine": "This is the SubjectLine",
"summary": "This is the Summary",
"text": "This is the Text",
"copyright": "This is the Copyright"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Add the given entry to this blog
Remove the given entry from the blog.
put /blogs/{blogId}/entries/{entryId}
Add the given entry to this blog
URI Parameters
- blogId: required(string)
- entryId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "entry has been added to blog" }
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": "entry not found" }
delete /blogs/{blogId}/entries/{entryId}
Remove the given entry from the blog.
URI Parameters
- blogId: required(string)
- entryId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "entry 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": "entry not found" }