Schema FAQs ​
What is a "Schema" in Murmurations? ​
See our complete definition of a Schema in the Common Terms page. Basically a Schema is a way to define the data to collect from a network, and Murmurations enables you to monitor any changes made to that data by the participants in the network.
Are there any required fields in a Schema? ​
There is only one required property in a Murmurations Schema: the linked_schemas
field, which is an array of strings that lists the Schema (or Schemas) against which a profile has been created.
For example, if you want to create a Profile that can be validated against both the Organizations schema and the Complementary Currencies schema, your Profile document would have to include:
{
"linked_schemas": [
"organizations_schema-v1.0.0",
"complementary_currencies-v2.0.0"
],
// The rest of your profile...
}
What is a profile_url
? ​
The profile_url
is the public web address where a Murmurations Profile can be accessed by the Index for indexing. Here is a profile_url
for the Open Co-op: https://www.open.coop/open.json
When this profile_url
(https://www.open.coop/open.json
) is sent to the Index, its contents will be downloaded and validated by the Index. If validation is successful against all of the linked_schemas
listed in the Profile, it will be recorded in the Index.
What is a primary_url
? ​
The primary_url
field is where a Profile records its canonical web address. We can see the primary_url
being used in the Open Co-op Murmurations Profile:
{
// ...
"primary_url": "open.coop",
// ...
}
The primary_url
references an organization's (or individual's) primary web address. If a Profile is self-hosted on the organization's website, the primary_url
will be the same domain as the profile_url
, as is the case for the Open Co-op's Profile referenced in the FAQ above.
Priority should always be given to a Profile whose profile_url
is hosted at the same domain as the primary_url
. In other words, a Profile that is hosted at "open.coop" and claiming "open.coop" as it's primary_url
should have more weight than another Profile hosted at some other domain claiming "open.coop" as it's primary_url
.
How is the primary_url
derived from a website address? ​
Let's assume the website address is https://www.manyorgs.org/myorg/
. When the address is converted into a primary_url
we remove the protocol (https://
), the www.
subdomain and the trailing /
, leaving manyorgs.org/myorg
as the primary_url
.
Only the www.
subdomain is removed. All other subdomains are kept as part of the primary_url
. For the complete details of primary_url
processing, see this GitHub issue:
https://github.com/MurmurationsNetwork/MurmurationsServices/issues/238