CampusAPI Relationship Services API documentation version 0.1.0
Based on OSID version 3.0.0
https://base.url
Overview
The Relationship package provides the ability to relate and manage data between any other objects.
This package includes the following entities:
Relationships
The Relationship entity defines a Relationship that can be used to explicitly identify a relationship between two other object Ids and manage information specific to the relationship.
Relationship is a building block on which relationships defined in the context of other objects can be built. Examples of relationships include the enrollment record of a student in a Course or the commitment or a person to an Event.
Relationships depend on the relationship Type to indicate the nature of the relationship including its natural ordering between the source and destination Ids. A relationship of type "friend" may place the peers in either order and be queryable in either order. A relationship of type "parent" is between a father peer and a son peer, but not the other way around. Queries of the son peer based on the "parent" type is not equiavelent to queries of the father peer based on the "parent" type.
Such directional relationships may be accompanied by two types. An additional relationship type of "child" can be used with the son peer to determine the father peer. The directionality and the inverse among the types are part of the type definition.
| Field | Description | Type |
|---|---|---|
| id(read‑only) | The unique id of this relationship, provided by system. | string(osid‑id) |
| uri(read‑only) | The uri of this relationship, provided by system. | string(uri) |
| displayName | The name of this relationship for display. | string |
| description | The description of this relationship. | string |
| genusTypeId (read‑only) | Id of the immutable type of this relationship. Default type set by system unless specified in query parameter. | string(osid‑id) |
| recordTypeIds (read‑only) | Type Ids of record types available on this relationship. Record types define special attributes available on an object to support specific applications or classes of applications and are documented elsewhere. | string(osid‑id)[] |
| startDate | The starting date of this relationship. | string(date‑time) |
| endDate | The ending date of this relationship. | string(date‑time) |
| endReasonId | The reason this relationship ended. References a process.State object. | string(osid‑id) |
| sourceId (read‑only) | The source associated with this relationship. References an id.Id object. | string(osid‑id) |
| destinationId (read‑only) | The destination associated with this relationship. References an id.Id object. | string(osid‑id) |
Families
Relationships may be cataloged using Family catalogs
| Field | Description | Type |
|---|---|---|
| id(read‑only) | The unique id of this family, provided by system. | string(osid‑id) |
| uri(read‑only) | The uri of this family, provided by system. | string(uri) |
| displayName | The name of this family for display. | string |
| description | The description of this family. | string |
| genusTypeId (read‑only) | Id of the immutable type of this family. Default type set by system unless specified in query parameter. | string(osid‑id) |
| recordTypeIds (read‑only) | Type Ids of record types available on this family. 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 family. References a resource.Resource object. | string(osid‑id) |
| brandingIds | The branding of this family. References repository.Asset objects. | string(osid‑id)[] |
| license | The licensing that applies to this family. | string |
License
CampusAPI REST Definitions © 2025 by DXtera Institute - licensed under CC BY-ND 4.0 Based on the Open Service Interface Definitions: http://osid.org
/relationship/relationships
Collection of Relationships in a system, federation of systems, or in a default Family.
Get all Relationships in the system or default Family.
Create a new Relationship in the default Family.
get /relationship/relationships
Get all Relationships in the system or default Family.
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", "endReason", "source", "destination", or "all" to expand all referenced objects or types. This parameter can be repeated to expand multiples.
Example:
all - keyword: (string)
The match string for keyword query
Example:
Hello%20World - displayName: (string)
The match string for displayName query
Example:
Hello%20World - description: (string)
The match string for description query
Example:
Hello%20World - genusTypeId: (string)
The id string to match a genusType
Example:
type.Type%3AexampleRelationshipType%40dxtera.org - parentGenusTypeId: (string)
The id string to match a parent genusType
Example:
type.Type%3AparentTypeExampleRelationshipType%40dxtera.org - recordTypeId: (string)
The id string to match a recordType
Example:
type.Type%3AexampleRelationshipType%40campusapi.org - fromDate: (string)
Get all relationships from this date inclusive. Use with toDate to define date range query.
Example:
2020-10-03 - toDate: (string)
Get all relationships up to this date inclusive. Use with fromDate to define date range query.
Example:
2020-12-18 - sourceId: (string)
the id string to match a source.
Example:
resource.Resource%3A576%40base.url - destinationId: (string)
the id string to match a destination.
Example:
resource.Resource%3A1056%40base.url - familyId: (string)
The id string to match a family
Example:
relationship.Family%3A8374%40base.url
HTTP status code 200
Headers
- x-total-count: required(number)
The total count of records currently available
Example:
152803
Body
Media type: application/json
Type: any
Example:
[
{
"id": "relationship.Relationship:9187@base.url",
"uri": "http://base.url/open/campusapi/relationship/relationship/relationship.Relationship%3A9187%40base.url",
"displayName": "Display Name of this Relationship",
"description": "The description of this Relationship",
"genusTypeId": "type.Type:defaultRelationshipType@base.url",
"recordTypeIds": [ "type.Type:exampleRelationshipRecordType@campusapi.org", "..."],
"startDate": "2020-10-03T06:30:00.000Z",
"endDate": "2020-12-18T19:30:00.000Z",
"endReasonId": "process.State:9187@base.url",
"sourceId": "id.Id:622@base.url",
"destinationId": "id.Id:9677@base.url"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
post /relationship/relationships
Create a new Relationship in the default Family.
Query Parameters
- familyId: (string)
specify in which family to create this relationship
Example:
relationship.Family%3A8374%40base.url
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Relationship",
"type": "object",
"required": ["sourceId", "destinationId"],
"properties": {
"id": {
"description": "The unique id of this relationship. This id is provided solely by the underlying implementation and is not set on POST and cannot be changed. An id included on POST will result in an error.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this relationship. This URI is provided solely by the underlying implementation and is not set on POST and cannot be changed. A uri included on POST will result in an error.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this relationship for display.",
"type": "string"
},
"description": {
"description": "The description of this relationship.",
"type": "string"
},
"genusTypeId": {
"description": "Id of the immutable type of this relationship. 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 relationship. 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
},
"startDate": {
"description": "The starting date of this relationship.",
"type": "string",
"format": "date-time"
},
"endDate": {
"description": "The ending date of this relationship.",
"type": "string",
"format": "date-time"
},
"endReasonId": {
"description": "The reason this relationship ended.",
"type": "string",
"format": "osid-id"
},
"sourceId": {
"description": "The source associated with this relationship.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"destinationId": {
"description": "The destination associated with this relationship.",
"type": "string",
"format": "osid-id",
"readOnly": true
}
}
}Example:
{
"displayName": "Display Name of this Relationship",
"description": "The description of this Relationship",
"startDate": "2020-10-03T06:30:00.000Z",
"endDate": "2020-12-18T19:30:00.000Z",
"endReasonId": "process.State:1623@base.url",
"sourceId": "id.Id:3372@base.url",
"destinationId": "id.Id:9395@base.url"
}
Query the collection of Relationships in a system, federation of systems, or in a default family by posting a Query object.
Submit a query using a RelationshipQuery object.
post /relationship/relationships/relationship-query
Submit a query using a RelationshipQuery 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", "endReason", "source", "destination", 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": "RelationshipQuery",
"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"
}
}
}
},
"matchSubjectIds": {
"description": "List of Ids to match an object with a relationships to the given subjects.",
"type": "array",
"items": {
"type": "object",
"properties": {
"sponsorId": {
"description": "id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchJournalEntryIds": {
"description": "List of Ids match objects that have the given journal entries.",
"type": "array",
"items": {
"type": "object",
"properties": {
"sponsorId": {
"description": "id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"journalEntryQueries": {
"description": "journaling.JournalEntryQueries to match journaling information. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "journal-entry-query"
}
},
"matchEffective": {
"description": "Match effective objects where the current date falls within the start and end dates inclusive. true to match any effective, false to match ineffective",
"type": "boolean"
},
"matchStartDate": {
"description": "Matches temporals whose start date falls in between the given dates inclusive.",
"type": "object",
"properties": {
"start": {
"description": "start of date range",
"type": "string",
"format": "date-time"
},
"end": {
"description": "end of date range",
"type": "string",
"format": "date-time"
},
"match": {
"description": "true if a positive match, false for negative match",
"type": "boolean"
}
}
},
"matchEndDate": {
"description": "Matches temporals whose end date falls in between the given dates inclusive.",
"type": "object",
"properties": {
"start": {
"description": "start of date range",
"type": "string",
"format": "date-time"
},
"end": {
"description": "end of date range",
"type": "string",
"format": "date-time"
},
"match": {
"description": "true if a positive match, false for negative match",
"type": "boolean"
}
}
},
"matchEndReasonIds": {
"description": "List of end reason Id's 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"
}
}
}
},
"endReasonQueries": {
"description": "process.StateQueries to match end reason state. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "resource-query"
}
},
"matchAnyEndReason": {
"description": "Match end reasons with any value. true to match Relationships with any end reason, false to match Relationships with no end reason",
"type": "boolean"
},
"matchSourceIds": {
"description": "List of source Ids for this query to match relationship that have a related source.",
"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"
}
}
}
},
"matchDestinationIds": {
"description": "List of destination Ids for this query to match relationship that have a related destination.",
"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"
}
}
}
},
"matchFamilyIds": {
"description": "List of Family Id's to match.",
"type": "array",
"items": {
"type": "object",
"properties": {
"familyId": {
"description": "Family id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"familyQueries": {
"description": "FamilyQueries to match Family. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "family-query"
}
}
}
}Example:
{
"matchDisplayNames": [
{
"displayName": "string to exclude",
"match": false
}
]
}HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "relationship.Relationship:9187@base.url",
"uri": "http://base.url/open/campusapi/relationship/relationship/relationship.Relationship%3A9187%40base.url",
"displayName": "Display Name of this Relationship",
"description": "The description of this Relationship",
"genusTypeId": "type.Type:defaultRelationshipType@base.url",
"recordTypeIds": [ "type.Type:exampleRelationshipRecordType@campusapi.org", "..."],
"startDate": "2020-10-03T06:30:00.000Z",
"endDate": "2020-12-18T19:30:00.000Z",
"endReasonId": "process.State:9187@base.url",
"sourceId": "id.Id:622@base.url",
"destinationId": "id.Id:9677@base.url"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Create multiple new RelationshipBatch in the default Family.
post /relationship/relationships/relationship-batch
Create multiple new RelationshipBatch in the default Family.
Query Parameters
- familyId: (string)
specify in which family to create this relationship
Example:
relationship.Family%3A8374%40base.url
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "RelationshipBatch",
"type": "array",
"Items": {
"type": "relationship"
}
}Example:
[
{
"displayName": "Display Name of this Relationship",
"description": "The description of this Relationship",
"startDate": "2020-10-03T06:30:00.000Z",
"endDate": "2020-12-18T19:30:00.000Z",
"endReasonId": "process.State:2811@base.url"
},
{
"...": "..."
}
]
Entity representing a Relationship form metadata.
Get form metadata for creating a new Relationship.
get /relationship/relationships/metadata
Get form metadata for creating a new Relationship.
Query Parameters
- sourceId: required(string)
the source of this metadatum.
Example:
resource.Resource%3A576%40base.url - destinationId: required(string)
the destination of this metadatum.
Example:
resource.Resource%3A1056%40base.url - genusType: (string)
specify a particular relationship type to create
Example:
type.Type%3AexampleRelationshipType%40dxtera.org - recordType: (array of )
specify support for one or more relationship record types
Example:
[ "type.Type%3AexampleRelationshipRecordType%40campusapi.org", "..." ] - familyId: (string)
specify in which family to create this relationship
Example:
relationship.Family%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": "Relationship",
"type": "object",
"required": ["sourceId", "destinationId"],
"properties": {
"id": {
"description": "The unique id of this relationship, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this relationship, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this relationship for display.",
"type": "string",
"read-only": false,
"minLength": 1,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Relationship.Relationship:displayName@base.url",
"existingValue": "The Existing Name",
"elementLabel": "Name",
"instructions": "Enter a name for this relationship",
"linked": false
},
"description": {
"description": "The description of this relationship.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Relationship.Relationship:displayName@demo.base.url",
"existingValue": "The Existing Description",
"elementLabel": "Description",
"instructions": "Enter a description for this relationship",
"linked": false
},
"genusTypeId": {
"description": "Id of the immutable type of this relationship. 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 relationship. 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
},
"startDate": {
"description": "The starting date of this relationship.",
"type": "string",
"format": "date-time",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Relationship.Relationship:startDate@base.url",
"existingValue": "2020-10-03T08:00:00.000Z",
"elementLabel": "Start Date",
"instructions": "Enter a starting date for this relationship",
"linked": false
},
"endDate": {
"description": "The ending date of this relationship.",
"type": "string",
"format": "date-time",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Relationship.Relationship:endDate@base.url",
"existingValue": "2020-12-18T17:00:00.000Z",
"elementLabel": "End Date",
"instructions": "Enter an ending date for this relationship",
"linked": false
},
"endReasonId": {
"description": "The reason this relationship ended. A process/State object.",
"type": "string",
"format": "osid-id",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Relationship.Relationship:endReason@base.url",
"existingValue": "process.State:1860@base.url",
"elementLabel": "End Reason",
"instructions": "Select the reason this relationship ended",
"linked": false
}
}
}
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Entity representing a Relationship
Get a particular Relationship given its id.
Update a particular Relationship given its id.
Delete a particular Relationship given its id.
get /relationship/relationships/{relationshipId}
Get a particular Relationship given its id.
URI Parameters
- relationshipId: required(string)
Query Parameters
- expand: (string)
Expand object or type for named attribute: "genusType", "recordType", "endReason", "source", "destination", 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": "relationship.Relationship:9187@base.url",
"uri": "http://base.url/open/campusapi/relationship/relationship/relationship.Relationship%3A9187%40base.url",
"displayName": "Display Name of this Relationship",
"description": "The description of this Relationship",
"genusTypeId": "type.Type:defaultRelationshipType@base.url",
"recordTypeIds": [ "type.Type:exampleRelationshipRecordType@campusapi.org", "..."],
"startDate": "2020-10-03T06:30:00.000Z",
"endDate": "2020-12-18T19:30:00.000Z",
"endReasonId": "process.State:9187@base.url",
"sourceId": "id.Id:622@base.url",
"destinationId": "id.Id:9677@base.url"
}
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": "Relationship not found" }
put /relationship/relationships/{relationshipId}
Update a particular Relationship given its id.
URI Parameters
- relationshipId: required(string)
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "RelationshipItem",
"type": "object",
"properties": {
"id": {
"description": "The unique id of this relationship. This id is provided solely by the underlying implementation and is not set on POST and cannot be changed. An id included on POST will result in an error.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this relationship. This URI is provided solely by the underlying implementation and is not set on POST and cannot be changed. A uri included on POST will result in an error.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this relationship for display.",
"type": "string"
},
"description": {
"description": "The description of this relationship.",
"type": "string"
},
"genusTypeId": {
"description": "Id of the immutable type of this relationship. 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 relationship. 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
},
"startDate": {
"description": "The starting date of this relationship.",
"type": "string",
"format": "date-time"
},
"endDate": {
"description": "The ending date of this relationship.",
"type": "string",
"format": "date-time"
},
"endReasonId": {
"description": "The reason this relationship ended.",
"type": "string",
"format": "osid-id"
},
"sourceId": {
"description": "The source associated with this relationship.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"destinationId": {
"description": "The destination associated with this relationship.",
"type": "string",
"format": "osid-id",
"readOnly": true
}
}
}Example:
{
"displayName": "Display Name of this Relationship",
"description": "The description of this Relationship",
"startDate": "2020-10-03T06:30:00.000Z",
"endDate": "2020-12-18T19:30:00.000Z",
"endReasonId": "process.State:8067@base.url"
}
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The Relationship 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": "Relationship not found" }
delete /relationship/relationships/{relationshipId}
Delete a particular Relationship given its id.
URI Parameters
- relationshipId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The Relationship 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": "Relationship not found" }
Entity representing a Relationship form metadata for update
Get form metadata for updating an existing Relationship.
get /relationship/relationships/{relationshipId}/metadata
Get form metadata for updating an existing Relationship.
URI Parameters
- relationshipId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"$schema": "http://json-schema.org/draft/2019-9/schema#",
"title": "Relationship",
"type": "object",
"required": ["sourceId", "destinationId"],
"properties": {
"id": {
"description": "The unique id of this relationship, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this relationship, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this relationship for display.",
"type": "string",
"read-only": false,
"minLength": 1,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Relationship.Relationship:displayName@base.url",
"existingValue": "The Existing Name",
"elementLabel": "Name",
"instructions": "Enter a name for this relationship",
"linked": false
},
"description": {
"description": "The description of this relationship.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Relationship.Relationship:displayName@demo.base.url",
"existingValue": "The Existing Description",
"elementLabel": "Description",
"instructions": "Enter a description for this relationship",
"linked": false
},
"genusTypeId": {
"description": "Id of the immutable type of this relationship. 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 relationship. 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
},
"startDate": {
"description": "The starting date of this relationship.",
"type": "string",
"format": "date-time",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Relationship.Relationship:startDate@base.url",
"existingValue": "2020-10-03T08:00:00.000Z",
"elementLabel": "Start Date",
"instructions": "Enter a starting date for this relationship",
"linked": false
},
"endDate": {
"description": "The ending date of this relationship.",
"type": "string",
"format": "date-time",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Relationship.Relationship:endDate@base.url",
"existingValue": "2020-12-18T17:00:00.000Z",
"elementLabel": "End Date",
"instructions": "Enter an ending date for this relationship",
"linked": false
},
"endReasonId": {
"description": "The reason this relationship ended. A process/State object.",
"type": "string",
"format": "osid-id",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Relationship.Relationship:endReason@base.url",
"existingValue": "process.State:1860@base.url",
"elementLabel": "End Reason",
"instructions": "Select the reason this relationship ended",
"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": "relationship not found" }
/relationship/families
Collection of Families in a system or federation of systems.
Get all Families.
Create a new Family.
get /relationship/families
Get all Families.
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 - keyword: (string)
The match string for keyword query
Example:
Hello%20World - displayName: (string)
The match string for displayName query
Example:
Hello%20World - description: (string)
The match string for description query
Example:
Hello%20World - genusTypeId: (string)
The id string to match a genusType
Example:
type.Type%3AexampleFamilyType%40dxtera.org - parentGenusTypeId: (string)
The id string to match a parent genusType
Example:
type.Type%3AparentTypeExampleFamilyType%40dxtera.org - recordTypeId: (string)
The id string to match a recordType
Example:
type.Type%3AexampleFamilyType%40campusapi.org - providerId: (string)
Id string to match provider.
Example:
resource.Resource%3A3007%40demo.dxtera.org - relationshipId: (string)
Get families mapped to this relationship.
Example:
relationship.Relationship%3A864%40demo.dxtera.org
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "relationship.Family:282@base.url",
"uri": "http://base.url/open/campusapi/relationship/family/relationship.Family%3A282%40base.url",
"displayName": "Display Name of this Family",
"description": "The description of this Family",
"genusTypeId": "type.Type:defaultFamilyType@base.url",
"recordTypeIds": [ "type.Type:exampleFamilyRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Family@base.url",
"license": "The license that applies to this Family"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
post /relationship/families
Create a new Family.
Query Parameters
- genusType: (string)
specify a particular family type to create
Example:
type.Type%3AexampleFamilyType%40dxtera.org - recordType: (array of )
specify support for one or more family record types
Example:
[ "type.Type%3AexampleFamilyRecordType%40campusapi.org", "..." ]
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Family",
"type": "object",
"properties": {
"id": {
"description": "The unique id of this family. This id is provided solely by the underlying implementation and is not set on POST and cannot be changed. An id included on POST will result in an error.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this family. This URI is provided solely by the underlying implementation and is not set on POST and cannot be changed. A uri included on POST will result in an error.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this family for display.",
"type": "string"
},
"description": {
"description": "The description of this family.",
"type": "string"
},
"genusTypeId": {
"description": "Id of the immutable type of this family. 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 family. 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 family.",
"type": "string",
"format": "osid-id"
},
"brandingIds": {
"description": "The branding of this family. A collection of Assets.",
"type": "array",
"items" : {
"type": "string",
"format": "osid-id"
}
},
"license": {
"description": "The licensing that applies to this family.",
"type": "string"
}
}
}Example:
{
"displayName": "Display Name of this Family",
"description": "The description of this Family",
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Family@base.url",
"license": "The license that applies to this Family"
}
Query the collection of Families in a system, federation of systems, or in a default family by posting a Query object.
Submit a query using a FamilyQuery object.
post /relationship/families/family-query
Submit a query using a FamilyQuery 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", "provider", "branding", 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": "FamilyQuery",
"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"
}
}
}
},
"matchSubjectIds": {
"description": "List of Ids to match an object with a relationships to the given subjects.",
"type": "array",
"items": {
"type": "object",
"properties": {
"sponsorId": {
"description": "id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchJournalEntryIds": {
"description": "List of Ids match objects that have the given journal entries.",
"type": "array",
"items": {
"type": "object",
"properties": {
"sponsorId": {
"description": "id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"journalEntryQueries": {
"description": "journaling.JournalEntryQueries to match journaling information. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "journal-entry-query"
}
},
"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": "providerQueries to match the provider. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "resource-query"
}
},
"matchAnyProvider": {
"description": "Match providers with any value. true to match Family with any provider, false to match Family 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.AssetQueries to match the branding. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "asset-query"
}
},
"matchAnyBranding": {
"description": "Match brandingss with any value. true to match Family with any branding, false to match Family 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"
}
}
}
},
"matchFamilyIds": {
"description": "List of Family Id's to match.",
"type": "array",
"items": {
"type": "object",
"properties": {
"familyId": {
"description": "Family id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"familyQueries": {
"description": "FamilyQueries to match Family. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "family-query"
}
}
}
}Example:
{
"matchDisplayNames": [
{
"displayName": "string to exclude",
"match": false
}
]
}HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "relationship.Family:282@base.url",
"uri": "http://base.url/open/campusapi/relationship/family/relationship.Family%3A282%40base.url",
"displayName": "Display Name of this Family",
"description": "The description of this Family",
"genusTypeId": "type.Type:defaultFamilyType@base.url",
"recordTypeIds": [ "type.Type:exampleFamilyRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Family@base.url",
"license": "The license that applies to this Family"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Entity representing a Family form metadata.
Get form metadata for creating a new Family.
get /relationship/families/metadata
Get form metadata for creating a new Family.
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"$schema": "http://json-schema.org/draft/2019-9/schema#",
"title": "Family",
"type": "object",
"properties": {
"id": {
"description": "The unique id of this family, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this family, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this family for display.",
"type": "string",
"read-only": false,
"minLength": 1,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Family.Family:displayName@base.url",
"existingValue": "The Existing Name",
"elementLabel": "Name",
"instructions": "Enter a name for this family",
"linked": false
},
"description": {
"description": "The description of this family.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Family.Family:displayName@demo.base.url",
"existingValue": "The Existing Description",
"elementLabel": "Description",
"instructions": "Enter a description for this family",
"linked": false
},
"genusTypeId": {
"description": "Id of the immutable type of this family. 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 family. 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 family.",
"type": "string",
"format": "osid-id",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Family.Family:provider@base.url",
"existingValue": "",
"elementLabel": "Provider",
"instructions": "Enter the provider of this family",
"linked": false
},
"brandingIds": {
"description": "The branding of this family. A list of Assets.",
"type": "array",
"items" : {
"type": "string",
"format": "osid-id",
"pattern": "",
"enum": []
},
"read-only": false,
"default": [],
"elementId": "Family.Family:branding@base.url",
"existingValue": "",
"elementLabel": "Branding",
"instructions": "Enter the branding images for this family",
"linked": false
},
"license": {
"description": "The licensing that applies to this family.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Family.Family:license@base.url",
"existingValue": "The Existing License",
"elementLabel": "License",
"instructions": "Include a license for this family",
"linked": false
}
}
}
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
The root Families in the Family hierarchy. A node with no parents is an orphan. While all Family 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-families
get /relationship/families/root-families
Get all root root-families
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
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "relationship.Family:282@base.url",
"uri": "http://base.url/open/campusapi/relationship/family/relationship.Family%3A282%40base.url",
"displayName": "Display Name of this Family",
"description": "The description of this Family",
"genusTypeId": "type.Type:defaultFamilyType@base.url",
"recordTypeIds": [ "type.Type:exampleFamilyRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Family@base.url",
"license": "The license that applies to this Family"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Add the given Family as a root in the Family hierarchy
Remove the given Family as a root in the Family hierarchy.
put /relationship/families/root-families/{familyId}
Add the given Family as a root in the Family hierarchy
URI Parameters
- familyId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The Family has been added as a root" }
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": "Family not found" }
delete /relationship/families/root-families/{familyId}
Remove the given Family as a root in the Family hierarchy.
URI Parameters
- familyId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The Family has been removed as a root from 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": "Family not found" }
Get parent Families for the given Family in the hierarchy.
get /relationship/families/root-families/parents
Get parent Families for the given Family in the hierarchy.
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
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "relationship.Family:282@base.url",
"uri": "http://base.url/open/campusapi/relationship/family/relationship.Family%3A282%40base.url",
"displayName": "Display Name of this Family",
"description": "The description of this Family",
"genusTypeId": "type.Type:defaultFamilyType@base.url",
"recordTypeIds": [ "type.Type:exampleFamilyRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Family@base.url",
"license": "The license that applies to this Family"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Get child Families for the given Family in the hierarchy.
get /relationship/families/root-families/children
Get child Families for the given Family in the hierarchy.
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
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "relationship.Family:282@base.url",
"uri": "http://base.url/open/campusapi/relationship/family/relationship.Family%3A282%40base.url",
"displayName": "Display Name of this Family",
"description": "The description of this Family",
"genusTypeId": "type.Type:defaultFamilyType@base.url",
"recordTypeIds": [ "type.Type:exampleFamilyRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Family@base.url",
"license": "The license that applies to this Family"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Add Family as child of the given Family in the hierarchy.
Remove the given Family as a child of the given Family in the hierarchy.
put /relationship/families/root-families/children/{childId}
Add Family as child of the given Family in the hierarchy.
URI Parameters
- childId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The child Family 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": "family not found" }
delete /relationship/families/root-families/children/{childId}
Remove the given Family as a child of the given Family in the hierarchy.
Entity representing a Family
Get a particular Family given its id.
Update a particular Family given its id.
Delete a particular Family given its id.
get /relationship/families/{familyId}
Get a particular Family given its id.
URI Parameters
- familyId: required(string)
Query Parameters
- 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
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"id": "relationship.Family:282@base.url",
"uri": "http://base.url/open/campusapi/relationship/family/relationship.Family%3A282%40base.url",
"displayName": "Display Name of this Family",
"description": "The description of this Family",
"genusTypeId": "type.Type:defaultFamilyType@base.url",
"recordTypeIds": [ "type.Type:exampleFamilyRecordType@campusapi.org", "..."],
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Family@base.url",
"license": "The license that applies to this Family"
}
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": "Family not found" }
put /relationship/families/{familyId}
Update a particular Family given its id.
URI Parameters
- familyId: required(string)
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "FamilyItem",
"type": "object",
"properties": {
"id": {
"description": "The unique id of this family. This id is provided solely by the underlying implementation and is not set on POST and cannot be changed. An id included on POST will result in an error.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this family. This URI is provided solely by the underlying implementation and is not set on POST and cannot be changed. A uri included on POST will result in an error.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this family for display.",
"type": "string"
},
"description": {
"description": "The description of this family.",
"type": "string"
},
"genusTypeId": {
"description": "Id of the immutable type of this family. 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 family. 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 family.",
"type": "string",
"format": "osid-id"
},
"brandingIds": {
"description": "The branding of this family. A collection of Assets.",
"type": "array",
"items" : {
"type": "string",
"format": "osid-id"
}
},
"license": {
"description": "The licensing that applies to this family.",
"type": "string"
}
}
}Example:
{
"displayName": "Display Name of this Family",
"description": "The description of this Family",
"providerId": "resource.Resource:123@base.url",
"brandingId": "asset.Asset:Family@base.url",
"license": "The license that applies to this Family"
}
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The Family 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": "Family not found" }
delete /relationship/families/{familyId}
Delete a particular Family given its id.
URI Parameters
- familyId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "The Family 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": "Family not found" }
Entity representing a Family form metadata for update
Get form metadata for updating an existing Family.
get /relationship/families/{familyId}/metadata
Get form metadata for updating an existing Family.
URI Parameters
- familyId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"$schema": "http://json-schema.org/draft/2019-9/schema#",
"title": "Family",
"type": "object",
"properties": {
"id": {
"description": "The unique id of this family, provided by system.",
"type": "string",
"format": "osid-id",
"readOnly": true
},
"uri": {
"description": "The uri of this family, provided by system.",
"type": "string",
"format": "uri",
"readOnly": true
},
"displayName": {
"description": "The name of this family for display.",
"type": "string",
"read-only": false,
"minLength": 1,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Family.Family:displayName@base.url",
"existingValue": "The Existing Name",
"elementLabel": "Name",
"instructions": "Enter a name for this family",
"linked": false
},
"description": {
"description": "The description of this family.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Family.Family:displayName@demo.base.url",
"existingValue": "The Existing Description",
"elementLabel": "Description",
"instructions": "Enter a description for this family",
"linked": false
},
"genusTypeId": {
"description": "Id of the immutable type of this family. 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 family. 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 family.",
"type": "string",
"format": "osid-id",
"read-only": false,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Family.Family:provider@base.url",
"existingValue": "",
"elementLabel": "Provider",
"instructions": "Enter the provider of this family",
"linked": false
},
"brandingIds": {
"description": "The branding of this family. A list of Assets.",
"type": "array",
"items" : {
"type": "string",
"format": "osid-id",
"pattern": "",
"enum": []
},
"read-only": false,
"default": [],
"elementId": "Family.Family:branding@base.url",
"existingValue": "",
"elementLabel": "Branding",
"instructions": "Enter the branding images for this family",
"linked": false
},
"license": {
"description": "The licensing that applies to this family.",
"type": "string",
"read-only": false,
"minLength": 0,
"maxLength": 128,
"pattern": "",
"default": "",
"enum": [],
"elementId": "Family.Family:license@base.url",
"existingValue": "The Existing License",
"elementLabel": "License",
"instructions": "Include a license for this family",
"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": "family not found" }
Get all Relationships in this Family
get /relationship/families/{familyId}/relationships
Get all Relationships in this Family
URI Parameters
- familyId: 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", "endReason", "source", "destination", or "all" to expand all referenced objects or types. This parameter can be repeated to expand multiples.
Example:
all - keyword: (string)
The match string for keyword query
Example:
Hello%20World - displayName: (string)
The match string for displayName query
Example:
Hello%20World - description: (string)
The match string for description query
Example:
Hello%20World - genusTypeId: (string)
The id string to match a genusType
Example:
type.Type%3AexampleRelationshipType%40dxtera.org - parentGenusTypeId: (string)
The id string to match a parent genusType
Example:
type.Type%3AparentTypeExampleRelationshipType%40dxtera.org - recordTypeId: (string)
The id string to match a recordType
Example:
type.Type%3AexampleRelationshipType%40campusapi.org
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
[
{
"id": "relationship.Relationship:9187@base.url",
"uri": "http://base.url/open/campusapi/relationship/relationship/relationship.Relationship%3A9187%40base.url",
"displayName": "Display Name of this Relationship",
"description": "The description of this Relationship",
"genusTypeId": "type.Type:defaultRelationshipType@base.url",
"recordTypeIds": [ "type.Type:exampleRelationshipRecordType@campusapi.org", "..."],
"startDate": "2020-10-03T06:30:00.000Z",
"endDate": "2020-12-18T19:30:00.000Z",
"endReasonId": "process.State:9187@base.url",
"sourceId": "id.Id:622@base.url",
"destinationId": "id.Id:9677@base.url"
},
{
"...": "..."
}
]
HTTP status code 403
Body
Media type: application/json
Type: any
Example:
{"message": "Permission denied" }
Add the given Relationship to this Family
Remove the given Relationship from the Family.
put /relationship/families/{familyId}/relationships/{relationshipId}
Add the given Relationship to this Family
URI Parameters
- familyId: required(string)
- relationshipId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "Relationship has been added to Family" }
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": "Relationship not found" }
delete /relationship/families/{familyId}/relationships/{relationshipId}
Remove the given Relationship from the Family.
URI Parameters
- familyId: required(string)
- relationshipId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{ "message": "Relationship 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": "Relationship not found" }
Define and inspect the RelationshipQuery related to a "smart" Family. A smart Family is a dynamic Family whose cataloged objects are defined through queries.
Apply the provided RelationshipQuery to this Family to create a dynamic smart Family
Get the RelationshipQuery associated with this smart Family.
post /relationship/families/{familyId}/relationship-query
Apply the provided RelationshipQuery to this Family to create a dynamic smart Family
URI Parameters
- familyId: required(string)
Body
Media type: application/json
Type: json
Content:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "RelationshipQuery",
"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"
}
}
}
},
"matchSubjectIds": {
"description": "List of Ids to match an object with a relationships to the given subjects.",
"type": "array",
"items": {
"type": "object",
"properties": {
"sponsorId": {
"description": "id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"matchJournalEntryIds": {
"description": "List of Ids match objects that have the given journal entries.",
"type": "array",
"items": {
"type": "object",
"properties": {
"sponsorId": {
"description": "id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"journalEntryQueries": {
"description": "journaling.JournalEntryQueries to match journaling information. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "journal-entry-query"
}
},
"matchEffective": {
"description": "Match effective objects where the current date falls within the start and end dates inclusive. true to match any effective, false to match ineffective",
"type": "boolean"
},
"matchStartDate": {
"description": "Matches temporals whose start date falls in between the given dates inclusive.",
"type": "object",
"properties": {
"start": {
"description": "start of date range",
"type": "string",
"format": "date-time"
},
"end": {
"description": "end of date range",
"type": "string",
"format": "date-time"
},
"match": {
"description": "true if a positive match, false for negative match",
"type": "boolean"
}
}
},
"matchEndDate": {
"description": "Matches temporals whose end date falls in between the given dates inclusive.",
"type": "object",
"properties": {
"start": {
"description": "start of date range",
"type": "string",
"format": "date-time"
},
"end": {
"description": "end of date range",
"type": "string",
"format": "date-time"
},
"match": {
"description": "true if a positive match, false for negative match",
"type": "boolean"
}
}
},
"matchEndReasonIds": {
"description": "List of end reason Id's 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"
}
}
}
},
"endReasonQueries": {
"description": "process.StateQueries to match end reason state. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "resource-query"
}
},
"matchAnyEndReason": {
"description": "Match end reasons with any value. true to match Relationships with any end reason, false to match Relationships with no end reason",
"type": "boolean"
},
"matchSourceIds": {
"description": "List of source Ids for this query to match relationship that have a related source.",
"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"
}
}
}
},
"matchDestinationIds": {
"description": "List of destination Ids for this query to match relationship that have a related destination.",
"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"
}
}
}
},
"matchFamilyIds": {
"description": "List of Family Id's to match.",
"type": "array",
"items": {
"type": "object",
"properties": {
"familyId": {
"description": "Family id to match",
"type": "string",
"format": "osid-id"
},
"match": {
"description": "true for a positive match, false for a negative match",
"type": "boolean"
}
}
}
},
"familyQueries": {
"description": "FamilyQueries to match Family. Each query performs a boolean OR.",
"type": "array",
"items": {
"type": "family-query"
}
}
}
}Example:
{
"matchDisplayNames": [
{
"displayName": "string to exclude",
"match": false
}
]
}get /relationship/families/{familyId}/relationship-query
Get the RelationshipQuery associated with this smart Family.
URI Parameters
- familyId: required(string)
HTTP status code 200
Body
Media type: application/json
Type: any
Example:
{
"matchDisplayNames": [
{
"displayName": "string to exclude",
"match": 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": "Family not found" }