REST API

REST API

Use standard HTTPS and JSON from iOS, Android, web backends, automations, and command-line tools.

Choose authentication

Mobile, desktop, and browser apps: use OAuth Authorization Code with PKCE. The user signs in with Firebase on Orbb's authorization page, approves exact permissions, and your app receives short-lived access and rotating refresh tokens. Public clients do not use a client secret.

Private servers and personal automations: create an API key in Orbb under Settings → Orbb API. Choose only the scopes needed, copy the key when it appears, and send it as a Bearer token.

Never ship an API key in a public app. An extracted key grants access as its owner. Native and browser clients should use OAuth with PKCE instead.

OAuth configuration

  • Authorization server: https://www.orbb.app/
  • Protected resource: https://api.orbb.app/
  • Resource metadata: https://api.orbb.app/.well-known/oauth-protected-resource
  • Scopes: orbb:read, orbb:write, and orbb:ai

Use an OAuth library that supports Authorization Code, PKCE with SHA-256, authorization-server metadata, refresh-token rotation, and the OAuth resource parameter. Request only the scopes your app needs.

Base URL

https://api.orbb.app/v1

OpenAPI JSON ↗
curl -X POST \
  -H "Authorization: Bearer YOUR_ORBB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"limit": 10}' \
  "https://api.orbb.app/v1/tools/get_recent_bookmarks"

Successful responses place the tool result in data. Errors include a stable error code and a readable message.

Reference

28 available tools

POST/v1/tools/search_bookmarks

Search Bookmarks

Search the user's Orbb saves by keyword, category, type, platform, or saved date.

Input schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 500
    },
    "category": {
      "type": "string",
      "maxLength": 120
    },
    "type": {
      "type": "string",
      "maxLength": 120
    },
    "platform": {
      "type": "string",
      "maxLength": 120
    },
    "dateFrom": {
      "type": "string",
      "maxLength": 32
    },
    "dateTo": {
      "type": "string",
      "maxLength": 32
    },
    "limit": {
      "default": 20,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "includeMedia": {
      "default": false,
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/search_evidence_chunks

Search Evidence Chunks

Search exact saved passages, transcript segments, recipes, itineraries, locations, and other grounded evidence.

Input schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "category": {
      "type": "string",
      "maxLength": 120
    },
    "type": {
      "type": "string",
      "maxLength": 120
    },
    "dateFrom": {
      "type": "string",
      "maxLength": 32
    },
    "limit": {
      "default": 12,
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    },
    "includeMedia": {
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/get_bookmark

Get Bookmark

Get one owned bookmark with its saved details and extracted context.

Input schema
{
  "type": "object",
  "properties": {
    "bookmarkId": {
      "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)$"
    },
    "includeMedia": {
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "bookmarkId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/get_plans

Get Plans

List the user's Orbb plans, including their source bookmarks and generated content.

Input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "default": 20,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/get_picks

Get Picks

List the user's curated Orbb picks and their saved bookmark IDs.

Input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/get_insights

Get Insights

Get counts, streaks, categories, resources, locations, and entities derived from the user's saves.

Input schema
{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/get_resources

Get Resources

Get the actual extracted movies, TV shows, books, songs, places, products, recipes, albums, apps, and other resource entities mentioned in saves. Use these resource IDs—not source bookmark IDs—when the user wants a collection of the things themselves.

Input schema
{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "maxLength": 120
    },
    "limit": {
      "default": 30,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/get_bookmarks_by_entity

Get Bookmarks by Entity

Find saves mentioning a specific person, organization, place, or topic.

Input schema
{
  "type": "object",
  "properties": {
    "entityType": {
      "type": "string",
      "enum": [
        "people",
        "organizations",
        "places",
        "topics"
      ]
    },
    "entityName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "limit": {
      "default": 20,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "includeMedia": {
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "entityType",
    "entityName"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/get_constellation

Get Constellation

Build a compact knowledge graph of saved categories connected by shared topics.

Input schema
{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/get_memories

Get Orbb Memories

Get durable preferences and context Orbb has learned from prior conversations.

Input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/get_recent_bookmarks

Get Recent Bookmarks

Browse the user's newest saves without needing a search query.

Input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "default": 20,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "offset": {
      "default": 0,
      "type": "integer",
      "minimum": 0,
      "maximum": 249
    },
    "category": {
      "type": "string",
      "maxLength": 120
    },
    "type": {
      "type": "string",
      "maxLength": 120
    },
    "platform": {
      "type": "string",
      "maxLength": 120
    },
    "includeMedia": {
      "default": false,
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/get_categories

Get Categories

List saved categories with counts and their most common tags.

Input schema
{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/get_bookmarks_batch

Get Bookmarks Batch

Retrieve up to 50 owned bookmarks by ID in one call.

Input schema
{
  "type": "object",
  "properties": {
    "bookmarkIds": {
      "minItems": 1,
      "maxItems": 50,
      "type": "array",
      "items": {
        "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)$"
      }
    },
    "includeMedia": {
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "bookmarkIds"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/get_related_bookmarks

Get Related Bookmarks

Find current related saves using live evidence, canonical resources, entities, tags, and semantic similarity.

Input schema
{
  "type": "object",
  "properties": {
    "bookmarkId": {
      "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)$"
    },
    "limit": {
      "default": 10,
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    },
    "includeMedia": {
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "bookmarkId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/get_user_profile

Get User Profile

Get the user's Orbb profile plus derived interests, platforms, topics, locations, and collection counts.

Input schema
{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/synthesize_bookmarks

Synthesize Bookmarks

Reason across grounded saved evidence to find themes, knowledge gaps, comparisons, or surprising connections.

Input schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "bookmarkIds": {
      "maxItems": 30,
      "type": "array",
      "items": {
        "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)$"
      }
    },
    "category": {
      "type": "string",
      "maxLength": 120
    },
    "synthesisType": {
      "default": "themes",
      "type": "string",
      "enum": [
        "themes",
        "knowledge_gaps",
        "connections",
        "comparison"
      ]
    },
    "limit": {
      "default": 15,
      "type": "integer",
      "minimum": 2,
      "maximum": 30
    },
    "operationKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 120
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/rediscover_bookmarks

Rediscover Bookmarks

Surface older saves that are relevant to a current interest or to the user's strongest saved topics.

Input schema
{
  "type": "object",
  "properties": {
    "context": {
      "type": "string",
      "maxLength": 500
    },
    "limit": {
      "default": 5,
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    },
    "includeMedia": {
      "default": false,
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/get_today_day_dump

Get Today's Day Dump

Read only the user's Day Dump for today in their current IANA timezone. This tool cannot access historical dates.

Input schema
{
  "type": "object",
  "properties": {
    "timezone": {
      "default": "UTC",
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/add_to_today_day_dump

Add to Today's Day Dump

Add a text note or URL to today's Day Dump only. Set confirmed=true only after the user approves the write.

Input schema
{
  "type": "object",
  "properties": {
    "timezone": {
      "default": "UTC",
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "kind": {
      "type": "string",
      "enum": [
        "text",
        "url"
      ]
    },
    "title": {
      "type": "string",
      "maxLength": 240
    },
    "subtitle": {
      "type": "string",
      "maxLength": 120
    },
    "text": {
      "type": "string",
      "maxLength": 20000
    },
    "url": {
      "type": "string",
      "maxLength": 2000,
      "format": "uri"
    },
    "confirmed": {
      "type": "boolean"
    },
    "operationKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 120
    }
  },
  "required": [
    "kind",
    "confirmed"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/remove_from_today_day_dump

Remove from Today's Day Dump

Remove one entry from today's Day Dump only. The underlying bookmark or media is not deleted. Requires explicit user confirmation.

Input schema
{
  "type": "object",
  "properties": {
    "timezone": {
      "default": "UTC",
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "entryId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 160
    },
    "confirmed": {
      "type": "boolean"
    }
  },
  "required": [
    "entryId",
    "confirmed"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/list_collections

List Custom Collections

List the user's custom collections and current optimistic versions before organizing them.

Input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/get_collection

Get Custom Collection

Get one custom collection and all of its bookmark and extracted-resource memberships.

Input schema
{
  "type": "object",
  "properties": {
    "collectionId": {
      "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)$"
    },
    "itemLimit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "required": [
    "collectionId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/create_collection

Create Custom Collection

Create a manual custom collection. Set confirmed=true only after the user approves the write.

Input schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "description": {
      "type": "string",
      "maxLength": 2000
    },
    "icon": {
      "type": "string",
      "maxLength": 80
    },
    "color": {
      "type": "string",
      "maxLength": 80
    },
    "confirmed": {
      "type": "boolean"
    },
    "operationKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 120
    }
  },
  "required": [
    "name",
    "confirmed"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/add_bookmarks_to_collection

Add Bookmarks to Collection

Add source bookmark posts or saved pages to a manual collection. Do not use this when the user asks for a collection of movies, shows, books, songs, places, recipes, products, or other extracted things; use add_resources_to_collection instead.

Input schema
{
  "type": "object",
  "properties": {
    "collectionId": {
      "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)$"
    },
    "expectedVersion": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "bookmarkIds": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "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)$"
      }
    },
    "reason": {
      "type": "string",
      "maxLength": 1000
    },
    "confirmed": {
      "type": "boolean"
    },
    "operationKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 120
    }
  },
  "required": [
    "collectionId",
    "expectedVersion",
    "bookmarkIds",
    "confirmed"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/add_resources_to_collection

Add Resources to Collection

Add actual extracted resource entities—such as movies, TV shows, books, songs, places, recipes, or products—to a manual collection. Obtain IDs from get_resources, use the collection's current version, and set confirmed=true only after approval.

Input schema
{
  "type": "object",
  "properties": {
    "collectionId": {
      "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)$"
    },
    "expectedVersion": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "resourceItemIds": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "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)$"
      }
    },
    "reason": {
      "type": "string",
      "maxLength": 1000
    },
    "confirmed": {
      "type": "boolean"
    },
    "operationKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 120
    }
  },
  "required": [
    "collectionId",
    "expectedVersion",
    "resourceItemIds",
    "confirmed"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/remove_bookmarks_from_collection

Remove Bookmarks from Collection

Remove memberships from a collection without deleting the underlying bookmarks. Requires confirmation and the current version.

Input schema
{
  "type": "object",
  "properties": {
    "collectionId": {
      "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)$"
    },
    "expectedVersion": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "bookmarkIds": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "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)$"
      }
    },
    "reason": {
      "type": "string",
      "maxLength": 1000
    },
    "confirmed": {
      "type": "boolean"
    },
    "operationKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 120
    }
  },
  "required": [
    "collectionId",
    "expectedVersion",
    "bookmarkIds",
    "confirmed"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/remove_resources_from_collection

Remove Resources from Collection

Remove extracted resource memberships from a collection without deleting either the resource or its source bookmarks. Requires confirmation and the collection's current version.

Input schema
{
  "type": "object",
  "properties": {
    "collectionId": {
      "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)$"
    },
    "expectedVersion": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "resourceItemIds": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "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)$"
      }
    },
    "reason": {
      "type": "string",
      "maxLength": 1000
    },
    "confirmed": {
      "type": "boolean"
    },
    "operationKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 120
    }
  },
  "required": [
    "collectionId",
    "expectedVersion",
    "resourceItemIds",
    "confirmed"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
POST/v1/tools/move_bookmarks_between_collections

Move Bookmarks Between Collections

Atomically add bookmarks to a target collection and remove them from the source. Requires confirmation and both current versions.

Input schema
{
  "type": "object",
  "properties": {
    "sourceCollectionId": {
      "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)$"
    },
    "targetCollectionId": {
      "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)$"
    },
    "expectedSourceVersion": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "expectedTargetVersion": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "bookmarkIds": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "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)$"
      }
    },
    "reason": {
      "type": "string",
      "maxLength": 1000
    },
    "confirmed": {
      "type": "boolean"
    },
    "operationKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 120
    }
  },
  "required": [
    "sourceCollectionId",
    "targetCollectionId",
    "expectedSourceVersion",
    "expectedTargetVersion",
    "bookmarkIds",
    "confirmed"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}