{"version":3,"file":"apiContracts.mjs","names":[],"sources":["../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineApiContract, jsonApiResponses } from '@agimon-ai/doompi-core/apiContracts';\nimport { Type } from 'typebox';\n\nconst S = Type.String();\nconst B = Type.Boolean();\nconst O = Type.Optional;\nexport const PlanDetailSchema = Type.Object({\n  path: S,\n  title: S,\n  writtenAt: S,\n  planId: O(S),\n  content: S,\n  hash: S,\n  unavailable: B,\n  reason: O(S),\n});\nexport const apiContracts = defineApiContract({\n  version: 1,\n  sockets: [],\n  dynamic: [],\n  http: [\n    {\n      id: 'plan.current',\n      scope: 'session',\n      basePath: 'plans',\n      path: '/current',\n      method: 'GET',\n      authentication: 'owner',\n      description: 'Read the current plan.',\n      responses: jsonApiResponses(PlanDetailSchema),\n    },\n    {\n      id: 'plan.save',\n      scope: 'session',\n      basePath: 'plans',\n      path: '/content',\n      method: 'PUT',\n      authentication: 'owner',\n      description: 'Save the plan if its hash has not changed.',\n      body: { required: true, contentType: 'application/json', schema: Type.Object({ expectedHash: S, content: S }) },\n      responses: jsonApiResponses(Type.Object({ hash: S })),\n    },\n  ],\n});\nexport default apiContracts;\n"],"mappings":";;;AAGA,MAAM,IAAI,KAAK,OAAO;AACtB,MAAM,IAAI,KAAK,QAAQ;AACvB,MAAM,IAAI,KAAK;AACf,MAAa,mBAAmB,KAAK,OAAO;CAC1C,MAAM;CACN,OAAO;CACP,WAAW;CACX,QAAQ,EAAE,CAAC;CACX,SAAS;CACT,MAAM;CACN,aAAa;CACb,QAAQ,EAAE,CAAC;AACb,CAAC;AACD,MAAa,eAAe,kBAAkB;CAC5C,SAAS;CACT,SAAS,CAAC;CACV,SAAS,CAAC;CACV,MAAM,CACJ;EACE,IAAI;EACJ,OAAO;EACP,UAAU;EACV,MAAM;EACN,QAAQ;EACR,gBAAgB;EAChB,aAAa;EACb,WAAW,iBAAiB,gBAAgB;CAC9C,GACA;EACE,IAAI;EACJ,OAAO;EACP,UAAU;EACV,MAAM;EACN,QAAQ;EACR,gBAAgB;EAChB,aAAa;EACb,MAAM;GAAE,UAAU;GAAM,aAAa;GAAoB,QAAQ,KAAK,OAAO;IAAE,cAAc;IAAG,SAAS;GAAE,CAAC;EAAE;EAC9G,WAAW,iBAAiB,KAAK,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;CACtD,CACF;AACF,CAAC"}