Crafting Event Finder · Schema
EventSearchItem
CompanyCraftingEventEvent DiscoveryDirectoryQuiltingKnittingMCP
Properties
| Name | Type | Description |
|---|---|---|
| id | string | |
| slug | string | |
| title | string | |
| description | stringnull | |
| summary | stringnull | |
| start_date | string | |
| end_date | stringnull | |
| start_time | stringnull | |
| end_time | stringnull | |
| timezone | stringnull | |
| city | string | |
| state | string | |
| venue | stringnull | |
| location_kind | string | venue, online, hybrid (one place and online at once) or multi (several places) |
| street_address | stringnull | |
| postal_code | stringnull | |
| signup_note | stringnull | |
| craft_types | array | |
| event_type | stringnull | |
| tags | array | |
| url | stringnull | |
| source_url | stringnull | |
| organizer_name | stringnull | |
| lat | numbernull | |
| lng | numbernull | |
| price_note | stringnull | |
| is_free | booleannull | |
| published_at | stringnull | |
| languages | array | The languages it is held in, as BCP 47 codes (en, es); empty when unknown |
| hosted_by | stringnull | The group or shop hosting an online or hybrid event, when given |
| hasJoinDetails | boolean | An online or hybrid event with join details (link, meeting ID, passcode or dial-in); get them from GET /api/events/{slug}/join |
| joinPlatform | stringnull | The online meeting platform, for online events |
| contactName | stringnull | The organizer's contact person |
| hasContactDetails | boolean | A contact email or phone exists; get them from GET /api/events/{slug}/contact |
| isNew | boolean | Published within the last 7 days |
| updatedRecently | boolean | Its date, time, place or price changed within the last 7 days |
| changedFields | array | What changed (date, time, place, price); empty unless updatedRecently |
| contentChangedAt | stringnull | When its date, time, place or price last changed; null if never |
| cancelled | boolean | A cancelled event (only GET /api/events/{slug} returns one, until its dates pass); lists never include it |
| scheduleChange | stringnull | postponed (new date to come), rescheduled or moved_online; null when it runs as listed |
| previousStartDate | stringnull | The start date a rescheduled event had before (YYYY-MM-DD); null otherwise |
| images | array | The organizer's pictures in order, at most 6; the first is the cover. Empty when there are none |
| next_start | string | |
| next_end | string | |
| occurrence_count | integer | |
| distance_miles | numbernull | |
| recurrence_label | stringnull | |
| featured | boolean |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/craftingeventfinder-com/json-schema/craftingeventfinder-com-event-search-item-schema.json",
"title": "EventSearchItem",
"x-generated": "2026-11-10",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/craftingeventfinder-com-events-api-openapi.yml#/components/schemas/EventSearchItem",
"allOf": [
{
"$ref": "#/$defs/Event"
},
{
"type": "object",
"properties": {
"next_start": {
"type": "string"
},
"next_end": {
"type": "string"
},
"occurrence_count": {
"type": "integer"
},
"distance_miles": {
"type": [
"number",
"null"
]
},
"recurrence_label": {
"type": [
"string",
"null"
]
},
"featured": {
"type": "boolean"
}
},
"required": [
"next_start",
"next_end",
"occurrence_count",
"distance_miles",
"recurrence_label",
"featured"
]
}
],
"$defs": {
"Event": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"summary": {
"type": [
"string",
"null"
]
},
"start_date": {
"type": "string"
},
"end_date": {
"type": [
"string",
"null"
]
},
"start_time": {
"type": [
"string",
"null"
]
},
"end_time": {
"type": [
"string",
"null"
]
},
"timezone": {
"type": [
"string",
"null"
]
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"venue": {
"type": [
"string",
"null"
]
},
"location_kind": {
"type": "string",
"enum": [
"venue",
"online",
"hybrid",
"multi"
],
"description": "venue, online, hybrid (one place and online at once) or multi (several places)"
},
"street_address": {
"type": [
"string",
"null"
]
},
"postal_code": {
"type": [
"string",
"null"
]
},
"signup_note": {
"type": [
"string",
"null"
]
},
"craft_types": {
"type": "array",
"items": {
"type": "string"
}
},
"event_type": {
"type": [
"string",
"null"
]
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"url": {
"type": [
"string",
"null"
]
},
"source_url": {
"type": [
"string",
"null"
]
},
"organizer_name": {
"type": [
"string",
"null"
]
},
"lat": {
"type": [
"number",
"null"
]
},
"lng": {
"type": [
"number",
"null"
]
},
"price_note": {
"type": [
"string",
"null"
]
},
"is_free": {
"type": [
"boolean",
"null"
]
},
"published_at": {
"type": [
"string",
"null"
]
},
"languages": {
"type": "array",
"items": {
"type": "string"
},
"description": "The languages it is held in, as BCP 47 codes (en, es); empty when unknown"
},
"hosted_by": {
"type": [
"string",
"null"
],
"description": "The group or shop hosting an online or hybrid event, when given"
},
"hasJoinDetails": {
"type": "boolean",
"description": "An online or hybrid event with join details (link, meeting ID, passcode or dial-in); get them from GET /api/events/{slug}/join"
},
"joinPlatform": {
"type": [
"string",
"null"
],
"enum": [
"zoom",
"meet",
"teams",
"webex",
"facebook",
"youtube",
"other",
null
],
"description": "The online meeting platform, for online events"
},
"contactName": {
"type": [
"string",
"null"
],
"description": "The organizer's contact person"
},
"hasContactDetails": {
"type": "boolean",
"description": "A contact email or phone exists; get them from GET /api/events/{slug}/contact"
},
"isNew": {
"type": "boolean",
"description": "Published within the last 7 days"
},
"updatedRecently": {
"type": "boolean",
"description": "Its date, time, place or price changed within the last 7 days"
},
"changedFields": {
"type": "array",
"items": {
"type": "string",
"enum": [
"date",
"time",
"place",
"price"
]
},
"description": "What changed (date, time, place, price); empty unless updatedRecently"
},
"contentChangedAt": {
"type": [
"string",
"null"
],
"description": "When its date, time, place or price last changed; null if never"
},
"cancelled": {
"type": "boolean",
"description": "A cancelled event (only GET /api/events/{slug} returns one, until its dates pass); lists never include it"
},
"scheduleChange": {
"type": [
"string",
"null"
],
"enum": [
"postponed",
"rescheduled",
"moved_online",
null
],
"description": "postponed (new date to come), rescheduled or moved_online; null when it runs as listed"
},
"previousStartDate": {
"type": [
"string",
"null"
],
"description": "The start date a rescheduled event had before (YYYY-MM-DD); null otherwise"
},
"images": {
"type": "array",
"items": {
"$ref": "#/$defs/PublicEventImage"
},
"description": "The organizer's pictures in order, at most 6; the first is the cover. Empty when there are none"
}
},
"required": [
"id",
"slug",
"title",
"description",
"summary",
"start_date",
"end_date",
"start_time",
"end_time",
"timezone",
"city",
"state",
"venue",
"location_kind",
"street_address",
"postal_code",
"signup_note",
"craft_types",
"event_type",
"tags",
"url",
"source_url",
"organizer_name",
"lat",
"lng",
"price_note",
"is_free",
"published_at",
"languages",
"hosted_by",
"hasJoinDetails",
"joinPlatform",
"contactName",
"hasContactDetails",
"isNew",
"updatedRecently",
"changedFields",
"contentChangedAt",
"cancelled",
"scheduleChange",
"previousStartDate",
"images"
]
},
"PublicEventImage": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The picture at most 1600px wide (WebP)"
},
"cardUrl": {
"type": "string",
"description": "The picture at most 600px wide (WebP), for cards"
},
"alt": {
"type": "string",
"description": "The description read to people who can't see the picture"
},
"width": {
"type": "integer"
},
"height": {
"type": "integer"
},
"focusX": {
"type": "number",
"description": "The focus point across, 0 (left) to 1 (right), kept in view when the picture is cropped"
},
"focusY": {
"type": "number",
"description": "The focus point down, 0 (top) to 1 (bottom)"
}
},
"required": [
"url",
"cardUrl",
"alt",
"width",
"height",
"focusX",
"focusY"
]
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/craftingeventfinder-com-event-search-item"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.