Higgs API
v.1: Use Cases
v.1: Use Cases
Higgs allows users to manage their data API-first and in Rich JSON-LD structures. Higgs features dynamic Schema templating, so you can freely and easily manage your Schema in real-time and separately from your data. Schema configurations will be applied to Resource Requests or automatically created for you.
1. *Create your Schema:
POST /account/MyCompany/Schema HTTP/1.1
Host: higgs.online
{
"relations": [
"Relation/Furniture/label?range=string",
"Relation/Furniture/category?range=string",
"Relation/Furniture/price?range=currency"
]
}
*Optional as Higgs will fallback to automatically create a Schema.
2. Upload your Data:
POST /account/MyCompany/Entity/Furniture/BlackDiningChair/call/upload-csv HTTP/1.1
Host: higgs.online
"label", "category", "price"
"Brown Leather Recliner", "home", "299.95USD"
"Black Dining Chair", "Home", "195.95USD"
...
3. Your data is then Integration-ready through your Account CRUD API:
GET /account/MyCompany/Thing/Furniture/BlackDiningChair
GET /account/MyCompany/Thing/Furniture/BlackDiningChair?props=[label,price]
POST /Property/Furniture/BlackDiningChair/price?value=150.00USD
Feel free to make live Schema updates at any time:
POST /Class/Furniture/Chair
POST /Thing/Furniture/BlackDiningChair?type=Furniture/Chair
Search will ask Higgs to find your Schema and Data Instances using the criteria your provide. Search provides paginated live lookups of your backend Resources.
POST /account/jay/search/entity?page=2 HTTP/1.1
{
"@context": "https://higgs.online/context",
"types": ["Person/Human", "Person/Human/Author"],
"keys": ["Jason"]
}
HTTP/1.1 200 OK
Date: Mon, 1 Mar 2016 11:11:11 GMT
WWW-Authenticate: Bearer realm="Restricted"
{
"@context": "https://higgs.online/context",
"@id": "higgs:Response/Success",
"hsd:type": "higgs:Response",
"higgs:Operation": "READ",
"higgs:Status/Success/message": "Your search returned 1337 results. This is page 2 of 10 items per page."
"resource": {
"hsd:id": "this-account/search/entity?page=2,
"hsd:type": "hsd:EntityList",
"items": [
"this-account:Thing/Person/Human/Author/JasonReinert",
"higgs:account/sProvider/Thing/Person/Human/JasonSmith",
"this-account"Thing/Person/Human/JasonSmith",
...
]
}
}
Higgs saves Resources with version control properties to use in Functions such as: Branch , Merge , Merge-Request , and Merge-Accept.
You can ask Higgs to branch any Definition or Data Instance into your own Account, and optionally, request a merge back to the origin:
POST /account/wwwstem/Class/Animal/HouseCat/call/branch?account=PetStore
POST /Relation/Animal/HouseCat/isFictional?range=boolean
POST /Relation/Animal/HouseCat/isFictional/call/merge-request
As a Resource owner, you can manage your contributions:
GET /merge-request/index
...
{ "resource": [
{
"@id": "Class/Animal/HouseCat/merge-request/1d64264a-cfb8-4a1f-8a14-4b203943dea9",
"hsd:operation": "CREATE",
"isFictional": {
"rdf:type": "hsd:Relation",
"rdfs:range": "boolean"
}
},
...
]}
POST /call/merge-accept?request=1d64264a-cfb8-4a1f-8a14-4b203943dea9
Higgs Resources all have a knowledge structure and semantic annotations (SA). No data can pass Higgs without a pre-defined Schema or relying on Higgs' Ontology learning (OL). Every Resource consists of rich Metadata which can present Taxonomical and Ontological relationships embedded into it's data structure.
GET /account/jay/Entity/Person/JasonReinert
Response:
{
"@context": "https://higgs.online/context",
"rdf:ID": "this-account:Entity/Person/JasonReinert",
"rdf:type": {
"rdf:ID": "this-account:Classification/Person",
"rdf:type": "rdfs:Class",
"rdf:subClassOf": "this-account:Classification/Thing"
},
"firstName": {
"rdf:type": "owl:DatatypeProperty",
"rdfs:range": "literal:string",
"rdf:value": "Jason"
},
"age": {
"rdf:type": "owl:DatatypeProperty",
"rdfs:range": "literal:integer",
"rdf:value": 35
},
"knows": {
"rdf:type": "owl:ObjectProperty",
"rdfs:range": "this-account:Person",
"rdf:ID": {
"rdf:ID": "this-account:Person/FelixDubé",
"knows": "Person/RyanWeinstein"}
}
}
GET /account/jay/Graph/JasonReinert
{
"@context": "https://higgs.online/context",
"rdf:ID": "this-account:Entity/Person/JasonReinert",
"@graph": [
{
"rdf:type": "this-account:Classification/Person/JasonReinert",
"firstName": "Jason",
"age": 35,
"knows": "Person/FelixDubé"
},
{
"rdf:type": "this-account:Classification/Person/FelixDubé",
"firstName": "Jason",
"age": 35,
"knows": "Person/RyanWeinstein",
"favoriteBook": "Publication/Book/Pull"
}
]
}
Higgs can easily map from data model to another.
Consider the following Product:
GET /account/Amazon/Entity/Product/AmazonEcho
Response:
{
"@id": "this-account:Entity/Product/AmazonEcho",
"@type": "this-account:Class/Product",
"label": "Amazon Echo Charcoal Fabric",
"comment": "Room filling sound with six fabrics or finishes",
"msrp": "99.99USD",
"href": "https://www.amazon.com/dp/B07456BG8N",
"store": "higgs:account/Amazon/Entity/Store/us"
}
Product/AmazonEcho
can easily be transformed into another model using the import
Function:
POST /account/MyCompany/Entity/ElectronicDevice/AmazonEcho/call/import
{
"export": "higgs:account/Amazon//Entity/Product/AmazonEcho",
"map": {
"msrp": "retailPrice",
"label": "title",
"comment": "subtitle",
"href": "officialSite"
}
}
The data will be transformed into an instance of ElectronicDevice
and CRUD API-ready:
GET /account/MyCompany/Entity/ElectronicDevice/AmazonEcho/call/import
{
"@id": "this-account:Entity/ElectronicDevice/AmazonEcho",
"@type": "this-account:Class/ElectronicDevice",
"retailPrice": "99.99",
"title": "Amazon Echo Charcoal Fabric",
"subtitle": "Room filling sound with six fabrics or finishes",
"officialSite": "https://www.amazon.com/dp/B07456BG8N"
}
Higgs will be sure to coerce the values against the ElectronicDevice
Schema
Higgs offers simple API management enabling Accounts to become Service Providers to other Accounts:
POST /account/Tesla/client/JasonReinert?ops=read,update
Higgs will add Account JasonReinert
to Tesla
Clients with READ
and UPDATE
permisssions.
From there, you can further manage and track your client's usage:
POST /account/Tesla/client/FelixDube?ops=read
DELETE /account/Tesla/client/FelixDube
GET /account/Tesla/client/JasonReinert
{
"@context": "https://higgs.online/context",
"@id": "higgs:Response/Success",
"hsd:type": "higgs:Response",
"higgs:Operation": "READ",
"higgs:Status/Success/message": "Here is the Client you requested."
"resource": {
"hsd:id": "this-account/search/entity?page=2,
"hsd:type": "hsd:EntityList",
"resource": {
"@id": account/Tesla/client/JasonReinert,
"usage": {
"apiCalls": 1337,
"bytesTransfered": 20121221,
"storedMB": 22000
},
"allowsOperations":
"allowsOperations": [
"READ",
"UPDATE"
]
}
}