Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# AGENTS.md

## Cursor Cloud specific instructions

This is a **Next.js 16 static marketing/docs website** for Memos (usememos.com). No external services, databases, or environment variables are required.

### Services

| Service | Command | Port | Notes |
|---------|---------|------|-------|
| Dev server | `pnpm dev` | 3000 | Uses Turbopack; hot-reloads on file changes |

### Key commands

Refer to `CLAUDE.md` and `package.json` scripts for the full list. Quick reference:

- **Lint**: `pnpm lint` (runs Biome)
- **Format**: `pnpm format` (runs Biome format with `--write`)
- **Build**: `pnpm build` (full production build, generates 300+ static pages)
- **Dev**: `pnpm dev` (starts on port 3000 with Turbopack)

### Gotchas

- The `postinstall` script downloads OpenAPI specs from GitHub (`raw.githubusercontent.com`) and generates MDX + Fumadocs source files. If the network fetch fails during `pnpm install`, the generated API docs will be missing. Rerun `pnpm install` to retry.
- pnpm may warn about ignored build scripts for `esbuild` and `sharp`. This warning is cosmetic and does not block development or builds.
- There are no automated test suites (no `test` script in `package.json`). Verification is done via `pnpm lint` and `pnpm build`.
- The `.source/` directory is auto-generated by `fumadocs-mdx` during `postinstall`. Do not edit files in it directly.
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
title: Batch Delete Attachments
description: BatchDeleteAttachments deletes multiple attachments in one request.
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: BatchDeleteAttachments deletes multiple attachments in one request.
---

{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}

<APIPage document={"./openapi/latest.yaml"} operations={[{"path":"/api/v1/attachments:batchDelete","method":"post"}]} />
2 changes: 1 addition & 1 deletion content/docs/api/latest/attachmentservice/meta.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"title": "Attachment Service",
"pages": ["CreateAttachment", "DeleteAttachment", "GetAttachment", "ListAttachments", "UpdateAttachment"]
"pages": ["BatchDeleteAttachments", "CreateAttachment", "DeleteAttachment", "GetAttachment", "ListAttachments", "UpdateAttachment"]
}
15 changes: 15 additions & 0 deletions content/docs/api/latest/userservice/BatchGetUsers.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
title: Batch Get Users
description: BatchGetUsers returns active users by usernames.
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: BatchGetUsers returns active users by usernames.
---

{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}

<APIPage document={"./openapi/latest.yaml"} operations={[{"path":"/api/v1/users:batchGet","method":"post"}]} />
1 change: 1 addition & 0 deletions content/docs/api/latest/userservice/meta.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"title": "User Service",
"pages": [
"BatchGetUsers",
"CreatePersonalAccessToken",
"CreateUser",
"CreateUserWebhook",
Expand Down
133 changes: 133 additions & 0 deletions openapi/latest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,28 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/Status'
/api/v1/attachments:batchDelete:
post:
tags:
- AttachmentService
description: BatchDeleteAttachments deletes multiple attachments in one request.
operationId: AttachmentService_BatchDeleteAttachments
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BatchDeleteAttachmentsRequest'
required: true
responses:
"200":
description: OK
content: {}
default:
description: Default error response
content:
application/json:
schema:
$ref: '#/components/schemas/Status'
/api/v1/auth/me:
get:
tags:
Expand Down Expand Up @@ -1955,6 +1977,31 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/Status'
/api/v1/users:batchGet:
post:
tags:
- UserService
description: BatchGetUsers returns active users by usernames.
operationId: UserService_BatchGetUsers
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BatchGetUsersRequest'
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BatchGetUsersResponse'
default:
description: Default error response
content:
application/json:
schema:
$ref: '#/components/schemas/Status'
/api/v1/users:stats:
get:
tags:
Expand Down Expand Up @@ -2015,6 +2062,33 @@ components:
description: |-
Optional. The related memo. Refer to `Memo.name`.
Format: memos/{memo}
motionMedia:
allOf:
- $ref: '#/components/schemas/MotionMedia'
description: Optional. Motion media metadata.
BatchDeleteAttachmentsRequest:
required:
- names
type: object
properties:
names:
type: array
items:
type: string
BatchGetUsersRequest:
type: object
properties:
usernames:
type: array
items:
type: string
BatchGetUsersResponse:
type: object
properties:
users:
type: array
items:
$ref: '#/components/schemas/User'
Color:
type: object
properties:
Expand Down Expand Up @@ -2781,6 +2855,30 @@ components:
type: string
description: The title extracted from the first H1 heading, if present.
description: Computed properties of a memo.
MotionMedia:
type: object
properties:
family:
enum:
- MOTION_MEDIA_FAMILY_UNSPECIFIED
- APPLE_LIVE_PHOTO
- ANDROID_MOTION_PHOTO
type: string
format: enum
role:
enum:
- MOTION_MEDIA_ROLE_UNSPECIFIED
- STILL
- VIDEO
- CONTAINER
type: string
format: enum
groupId:
type: string
presentationTimestampUs:
type: string
hasEmbeddedVideo:
type: boolean
NotificationSetting_EmailSetting:
type: object
properties:
Expand Down Expand Up @@ -3133,6 +3231,11 @@ components:
description: |-
The sender of the notification.
Format: users/{user}
senderUser:
readOnly: true
allOf:
- $ref: '#/components/schemas/User'
description: The sender user details.
status:
enum:
- STATUS_UNSPECIFIED
Expand All @@ -3151,13 +3254,18 @@ components:
enum:
- TYPE_UNSPECIFIED
- MEMO_COMMENT
- MEMO_MENTION
type: string
description: The type of the notification.
format: enum
memoComment:
readOnly: true
allOf:
- $ref: '#/components/schemas/UserNotification_MemoCommentPayload'
memoMention:
readOnly: true
allOf:
- $ref: '#/components/schemas/UserNotification_MemoMentionPayload'
UserNotification_MemoCommentPayload:
type: object
properties:
Expand All @@ -3171,6 +3279,31 @@ components:
description: |-
The name of related memo.
Format: memos/{memo}
memoSnippet:
type: string
description: Preview text of the comment memo.
relatedMemoSnippet:
type: string
description: Preview text of the related memo.
UserNotification_MemoMentionPayload:
type: object
properties:
memo:
type: string
description: |-
The memo that contains the mention.
Format: memos/{memo}
relatedMemo:
type: string
description: |-
The related parent memo when the mention was created in a comment.
Format: memos/{memo}
memoSnippet:
type: string
description: Preview text of the memo that contains the mention.
relatedMemoSnippet:
type: string
description: Preview text of the related parent memo.
UserSetting:
type: object
properties:
Expand Down
Loading