~ knotless Search/
↑↓ move↵ open⇧↵ all results

grain.social/grain

photography-focused photo sharing platform

grain.social
1 collaborator
0
2
87 lines · 2.2 KB Raw History
{
  "lexicon": 1,
  "id": "dev.hatk.applyWrites",
  "defs": {
    "main": {
      "type": "procedure",
      "description": "Apply multiple record writes in a single atomic PDS transaction.",
      "input": {
        "encoding": "application/json",
        "schema": {
          "type": "object",
          "required": ["writes"],
          "properties": {
            "writes": {
              "type": "array",
              "items": {
                "type": "union",
                "refs": ["#create", "#update", "#delete"]
              }
            }
          }
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "type": "object",
          "properties": {
            "results": {
              "type": "array",
              "items": {
                "type": "union",
                "refs": ["#createResult", "#updateResult", "#deleteResult"]
              }
            }
          }
        }
      }
    },
    "create": {
      "type": "object",
      "required": ["collection", "value"],
      "properties": {
        "collection": { "type": "string" },
        "rkey": { "type": "string" },
        "value": { "type": "unknown" }
      }
    },
    "update": {
      "type": "object",
      "required": ["collection", "rkey", "value"],
      "properties": {
        "collection": { "type": "string" },
        "rkey": { "type": "string" },
        "value": { "type": "unknown" }
      }
    },
    "delete": {
      "type": "object",
      "required": ["collection", "rkey"],
      "properties": {
        "collection": { "type": "string" },
        "rkey": { "type": "string" }
      }
    },
    "createResult": {
      "type": "object",
      "required": ["uri", "cid"],
      "properties": {
        "uri": { "type": "string", "format": "at-uri" },
        "cid": { "type": "string", "format": "cid" }
      }
    },
    "updateResult": {
      "type": "object",
      "required": ["uri", "cid"],
      "properties": {
        "uri": { "type": "string", "format": "at-uri" },
        "cid": { "type": "string", "format": "cid" }
      }
    },
    "deleteResult": {
      "type": "object",
      "properties": {}
    }
  }
}