{"openapi":"3.1.0","info":{"title":"Deepsift Research API","version":"0.1.0","description":"Published primary research and supporting evidence. Public samples can be read without a token. Machine API keys are read-only and inherit current account entitlements."},"servers":[{"url":"https://deepsift.co"}],"paths":{"/api/v1/research":{"get":{"summary":"Search research","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response"},"401":{"description":"Authentication required"},"403":{"description":"Research membership required"},"404":{"description":"Not found"}},"parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"company","in":"query","schema":{"type":"string"}},{"name":"topic","in":"query","schema":{"type":"string"}},{"name":"view","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"string"}}]}},"/api/v1/research/{slug}":{"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"get":{"summary":"Read a publication","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Publication content plus id, company, version, published_at, artifact_count","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicationContent"}}}}}}},"/api/v1/research/{slug}/observations":{"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"get":{"summary":"Retrieve structured measurements, source references, dates and limitations","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response"},"401":{"description":"Authentication required"},"403":{"description":"Research membership required"},"404":{"description":"Not found"}}}},"/api/v1/research/{slug}/artifacts":{"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"get":{"summary":"List supporting artifacts","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response"},"401":{"description":"Authentication required"},"403":{"description":"Research membership required"},"404":{"description":"Not found"}}}},"/api/v1/research/{slug}/artifacts/{id}":{"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"get":{"summary":"Get a signed download URL valid for 60 seconds","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response"},"401":{"description":"Authentication required"},"403":{"description":"Research membership required"},"404":{"description":"Not found"}}}},"/api/v1/companies":{"get":{"summary":"List company coverage","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response"},"401":{"description":"Authentication required"},"403":{"description":"Research membership required"},"404":{"description":"Not found"}}}},"/api/v1/topics":{"get":{"summary":"List exploration topics; pass the slug to the research topic filter","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response"},"401":{"description":"Authentication required"},"403":{"description":"Research membership required"},"404":{"description":"Not found"}}}},"/api/v1/dashboard":{"get":{"summary":"Feed counts and recorded research status; supports q, company, topic and view filters","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response"},"401":{"description":"Authentication required"},"403":{"description":"Research membership required"},"404":{"description":"Not found"}}}},"/api/v1/threads":{"get":{"summary":"List trackers and investigations; supports kind, q, company, topic and following filters; research access required","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response"},"401":{"description":"Authentication required"},"403":{"description":"Research membership required"},"404":{"description":"Not found"}}}},"/api/v1/threads/{slug}":{"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"get":{"summary":"Read a thread, linked research and related threads; research access required","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response"},"401":{"description":"Authentication required"},"403":{"description":"Research membership required"},"404":{"description":"Not found"}}}},"/api/v1/companies/{slug}":{"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"get":{"summary":"Company overview with research, trackers, investigations and coverage status","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response"},"401":{"description":"Authentication required"},"403":{"description":"Research membership required"},"404":{"description":"Not found"}}}},"/api/v1/topics/{slug}":{"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"get":{"summary":"Topic overview with research, trackers, investigations and coverage status","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response"},"401":{"description":"Authentication required"},"403":{"description":"Research membership required"},"404":{"description":"Not found"}}}},"/api/v1/me/preferences":{"get":{"summary":"Personal follows, saved items and pinned threads","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response"},"401":{"description":"Authentication required"},"403":{"description":"Research membership required"},"404":{"description":"Not found"}}}},"/api/v1/me/library":{"put":{"summary":"Save or pin research, a company, topic, tracker or investigation. User session required; machine keys are read-only.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response"},"401":{"description":"Authentication required"},"403":{"description":"Research membership required"},"404":{"description":"Not found"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["kind","slug","action","value"],"properties":{"kind":{"type":"string","enum":["research","company","topic","tracker","investigation"]},"slug":{"type":"string"},"action":{"type":"string","enum":["saved","pinned"]},"value":{"type":"boolean"}},"additionalProperties":false}}}}}},"/api/v1/me/following-topics":{"put":{"summary":"Follow or unfollow a topic. User session required.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response"},"401":{"description":"Authentication required"},"403":{"description":"Research membership required"},"404":{"description":"Not found"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["topic","following"],"properties":{"topic":{"type":"string"},"following":{"type":"boolean"}},"additionalProperties":false}}}}}},"/api/v1/coverage":{"get":{"summary":"Get the latest successful workspace sync time and counts","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response"},"401":{"description":"Authentication required"},"403":{"description":"Research membership required"},"404":{"description":"Not found"}}}},"/api/v1/changes":{"get":{"summary":"Read publication events","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response"},"401":{"description":"Authentication required"},"403":{"description":"Research membership required"},"404":{"description":"Not found"}},"parameters":[{"name":"after","in":"query","schema":{"type":"integer","minimum":0}}]}},"/api/internal/imports":{"post":{"summary":"Import a research package (dedicated publisher credential required)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response"},"401":{"description":"Authentication required"},"403":{"description":"Research membership required"},"404":{"description":"Not found"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResearchPackage"}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"PublicationContent":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"title":{"type":"string","minLength":8,"maxLength":240},"summary":{"type":"string","minLength":20,"maxLength":1600},"topic":{"type":"string","minLength":1,"maxLength":100},"format":{"type":"string","minLength":1,"maxLength":100},"observed_from":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"observed_to":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"topics":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1}},"required":["slug","name","description"],"additionalProperties":false}},"provenance":{"type":"object","properties":{"origin":{"type":"string","const":"research-vps"},"record_id":{"type":"string"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"outcome":{"type":"string"},"review_note":{"type":"string"}},"required":["origin","record_id","revision","updated_at","outcome"],"additionalProperties":false},"audience":{"type":"string","enum":["public","subscriber"]},"body":{"minItems":1,"maxItems":150,"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"paragraph"},"text":{"type":"string","minLength":1,"maxLength":12000},"source_ids":{"default":[],"type":"array","items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"}}},"required":["type","text","source_ids"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"heading"},"text":{"type":"string","minLength":1,"maxLength":300}},"required":["type","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"quote"},"source_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"}},"required":["type","source_id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"measurements"},"ids":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"}},"caption":{"type":"string","maxLength":3000}},"required":["type","ids","caption"],"additionalProperties":false}]}},"sources":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"title":{"type":"string","minLength":1,"maxLength":400},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"observed_at":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"retrieved_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"available_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}]},"published_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}]},"kind":{"type":"string"},"quote":{"type":"string","maxLength":5000}},"required":["id","title","url","observed_at"],"additionalProperties":false}},"measurements":{"maxItems":1000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"label":{"type":"string","minLength":1},"value":{"type":"number"},"unit":{"type":"string"},"period":{"type":"string"},"denominator":{"type":"number"},"numerator":{"type":"number"},"source_ids":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"}}},"required":["id","label","value","unit","period","source_ids"],"additionalProperties":false}},"methodology":{"type":"string","minLength":20,"maxLength":16000},"limitations":{"type":"string","minLength":20,"maxLength":10000},"materiality":{"type":"object","properties":{"label":{"type":"string"},"rationale":{"type":"string"}},"required":["label","rationale"],"additionalProperties":false},"unexpectedness":{"type":"object","properties":{"label":{"type":"string"},"rationale":{"type":"string"}},"required":["label","rationale"],"additionalProperties":false},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"company":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"name":{"type":"string","minLength":1},"ticker":{"type":"string","minLength":1,"maxLength":30},"description":{"type":"string","minLength":1}},"required":["slug","name","ticker","description"],"additionalProperties":false},{"type":"null"}]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"published_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"artifact_count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["slug","title","summary","topic","format","observed_from","observed_to","audience","body","sources","measurements","methodology","limitations","materiality","unexpectedness","id","company","version","published_at","artifact_count"],"additionalProperties":false},"ResearchPackage":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schema_version":{"type":"number","const":1},"package_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"research_refs":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"revision":{"type":["string","number"]}},"required":["id","revision"],"additionalProperties":false}},"company":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"name":{"type":"string","minLength":1},"ticker":{"type":"string","minLength":1,"maxLength":30},"description":{"type":"string","minLength":1}},"required":["slug","name","ticker","description"],"additionalProperties":false},{"type":"null"}]},"related_companies":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"name":{"type":"string","minLength":1},"ticker":{"type":"string","minLength":1,"maxLength":30},"description":{"type":"string","minLength":1}},"required":["slug","name","ticker","description"],"additionalProperties":false}},"publication":{"type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"title":{"type":"string","minLength":8,"maxLength":240},"summary":{"type":"string","minLength":20,"maxLength":1600},"topic":{"type":"string","minLength":1,"maxLength":100},"format":{"type":"string","minLength":1,"maxLength":100},"observed_from":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"observed_to":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"topics":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1}},"required":["slug","name","description"],"additionalProperties":false}},"provenance":{"type":"object","properties":{"origin":{"type":"string","const":"research-vps"},"record_id":{"type":"string"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"outcome":{"type":"string"},"review_note":{"type":"string"}},"required":["origin","record_id","revision","updated_at","outcome"],"additionalProperties":false},"audience":{"type":"string","enum":["public","subscriber"]},"body":{"minItems":1,"maxItems":150,"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"paragraph"},"text":{"type":"string","minLength":1,"maxLength":12000},"source_ids":{"default":[],"type":"array","items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"}}},"required":["type","text","source_ids"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"heading"},"text":{"type":"string","minLength":1,"maxLength":300}},"required":["type","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"quote"},"source_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"}},"required":["type","source_id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"measurements"},"ids":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"}},"caption":{"type":"string","maxLength":3000}},"required":["type","ids","caption"],"additionalProperties":false}]}},"sources":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"title":{"type":"string","minLength":1,"maxLength":400},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"observed_at":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"retrieved_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"available_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}]},"published_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}]},"kind":{"type":"string"},"quote":{"type":"string","maxLength":5000}},"required":["id","title","url","observed_at"],"additionalProperties":false}},"measurements":{"maxItems":1000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"label":{"type":"string","minLength":1},"value":{"type":"number"},"unit":{"type":"string"},"period":{"type":"string"},"denominator":{"type":"number"},"numerator":{"type":"number"},"source_ids":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"}}},"required":["id","label","value","unit","period","source_ids"],"additionalProperties":false}},"methodology":{"type":"string","minLength":20,"maxLength":16000},"limitations":{"type":"string","minLength":20,"maxLength":10000},"materiality":{"type":"object","properties":{"label":{"type":"string"},"rationale":{"type":"string"}},"required":["label","rationale"],"additionalProperties":false},"unexpectedness":{"type":"object","properties":{"label":{"type":"string"},"rationale":{"type":"string"}},"required":["label","rationale"],"additionalProperties":false}},"required":["slug","title","summary","topic","format","observed_from","observed_to","audience","body","sources","measurements","methodology","limitations","materiality","unexpectedness"],"additionalProperties":false},"artifacts":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"filename":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._-]{0,179}$"},"mime":{"type":"string","enum":["text/csv","application/json","application/pdf","text/plain","image/png","image/jpeg","application/vnd.apache.parquet"]},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":67108864},"description":{"type":"string","minLength":1,"maxLength":2000},"source_ids":{"type":"array","items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"}}},"required":["id","filename","mime","sha256","bytes","description","source_ids"],"additionalProperties":false}}},"required":["schema_version","package_id","research_refs","company","publication","artifacts"],"additionalProperties":false}}}}