Flex collections - Tizra/Tizra-Customer-Tracker GitHub Wiki

This is a custom implementation but it can be extended and applied to other sites.

Basic Information needed to make this work.

The Account monitoring feature has to be turned on, and the namespace should be set to account-monitoring.flex-collections.

New properties are needed on

  • Offers (to allow control of special license properties)
    • ``
  • Users (to record the relationship between librarian and user accounts)...
    • ``
  • FlexCollections This is a new metatype for the collection create for the license management.
    • ``

API calls to update the properties appear below...

  • POST /admin-api/<site>/types/Offer
	{
	    "tag-definitions":[
	        {
	            "is-user-defined":false,
	            "is-constrained":false,
	            "lang":"EN",
	            "is-searchable":false,
	            "is-system":false,
	            "display-name":"flexCollectionLimit",
	            "meta-tag-external-name":"",
	            "sort-field":"",
	            "name":"flexCollectionLimit",
	            "is-json-visible":true,
	            "is-calculated":false,
	            "is-user-visible":false,
	            "type":"integer",
	            "value-specification":"",
	            "inherit-value":false
	        },
	        {
	            "is-user-defined":false,
	            "is-constrained":false,
	            "lang":"EN",
	            "is-searchable":false,
	            "is-system":false,
	            "display-name":"isFlexCollectionLicense",
	            "meta-tag-external-name":"",
	            "sort-field":"",
	            "name":"isFlexCollectionLicense",
	            "is-json-visible":true,
	            "is-calculated":false,
	            "is-user-visible":false,
	            "type":"boolean",
	            "value-specification":"",
	            "inherit-value":false
	        },
{
  "is-user-defined": false,
  "is-constrained": false,
  "lang": "EN",
  "is-searchable": false,
  "is-system": false,
  "display-name": "Initialize this flex collection on creation?",
  "meta-tag-external-name": "",
  "sort-field": "",
  "name": "initContents",
  "is-json-visible": true,
  "is-calculated": false,
  "is-user-visible": false,
  "type": "boolean",
  "value-specification": "",
  "inherit-value": false
}

	    ]
	}
  • PUT /admin-api/<site>/types/UserData
	{
	    "tag-definitions":[
	        {
	            "is-user-defined":false,
	            "is-constrained":false,
	            "lang":"EN",
	            "is-searchable":false,
	            "is-system":false,
	            "display-name":"librarianAccount",
	            "meta-tag-external-name":"librarianAccount",
	            "sort-field":"",
	            "name":"librarianAccount",
	            "is-json-visible":false,
	            "is-calculated":false,
	            "is-user-visible":false,
	            "type":"string",
	            "value-specification":"",
	            "inherit-value":false
	        },
	        {
	            "is-user-defined":false,
	            "is-constrained":false,
	            "lang":"EN",
	            "is-searchable":false,
	            "is-system":false,
	            "display-name":"patronAccount",
	            "meta-tag-external-name":"patronAccount",
	            "sort-field":"",
	            "name":"patronAccount",
	            "is-json-visible":true,
	            "is-calculated":false,
	            "is-user-visible":false,
	            "type":"string",
	            "value-specification":"",
	            "inherit-value":false
	        }
	    ]
	}
  • POST /admin-api/<site>/types
{
	"name": "FlexCollection",
	"display-name": "Flex Collection",
	"name-prop-name": "owner",
	"base": "ExplicitCollection",
	"tag-definitions": [
		{
			"name": "UserVisibility",
			"is-system": true,
			"display-name": "Owning User",
			"sort-field": "04",
			"is-json-visible": true,
			"is-user-visible":false,
			"type": "text"
		},
		{
			"name": "flexCollectionLimit",
			"is-system": false,
			"display-name": "Contents size limitation",
			"sort-field": "16",
			"is-json-visible": true,
			"is-user-visible":false,
			"type": "integer"
		},
		{
			"name": "owner",
			"is-system": false,
			"display-name": "Owning User Name",
			"sort-field": "03",
			"is-json-visible": true,
			"is-user-visible":false,
			"type": "string"
		},
		{
			"name": "masterCollection",
			"is-system": false,
			"display-name": "Master content selection collection",
			"sort-field": "05",
			"is-json-visible": true,
			"is-user-visible":false,
			"type": "reference"
		},
		{
			"name": "licenseId",
			"is-system": false,
			"display-name": "License ID for flex collection license",
			"sort-field": "05",
			"is-json-visible": true,
			"is-user-visible":false,
			"type": "integer"
		}

	]
}
⚠️ **GitHub.com Fallback** ⚠️