Skip to content

[docs] Initial draft of the REST style guide#1649

Draft
andrewnicols wants to merge 1 commit into
moodle:mainfrom
andrewnicols:restStyle
Draft

[docs] Initial draft of the REST style guide#1649
andrewnicols wants to merge 1 commit into
moodle:mainfrom
andrewnicols:restStyle

Conversation

@andrewnicols

@andrewnicols andrewnicols commented Jul 23, 2026

Copy link
Copy Markdown
Member

This is the initial draft of the REST style guide for RFC.

Copilot AI review requested due to automatic review settings July 23, 2026 06:01
@netlify

netlify Bot commented Jul 23, 2026

Copy link
Copy Markdown

Deploy Preview for moodledevdocs ready!

Name Link
🔨 Latest commit bdc1bd0
🔍 Latest deploy log https://app.netlify.com/projects/moodledevdocs/deploys/6a61ae28ab0d9900084b4cf0
😎 Deploy Preview https://deploy-preview-1649--moodledevdocs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new REST documentation section to the Moodle DevDocs site, including an initial (but intended-to-be-normative) REST API style guide to standardize URI structure, naming, payload conventions, and HTTP semantics across Moodle components.

Changes:

  • Introduces a comprehensive REST API style guide covering resource design, URI conventions, JSON conventions, pagination, errors, and idempotency.
  • Adds a REST guide index page under docs/guides/rest/.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 10 comments.

File Description
docs/guides/rest/style.md Adds the initial REST style guide content and examples.
docs/guides/rest/index.md Adds the REST guides section index frontmatter (and should include navigational content).
Comments suppressed due to low confidence (2)

docs/guides/rest/style.md:998

  • This TODO note also uses broken Markdown emphasis ("-*TO DO:**"). Formatting it consistently will improve readability of the draft.
-*TO DO:** this section is under revision; most of it is being removed as incorrect, so its rationale will be drafted once the replacement content is agreed.

docs/guides/rest/index.md:7

  • docs/guides/rest/index.md currently contains only frontmatter, so the rendered page will be empty. Adding a short introduction and links (e.g. to the style guide) will make the section navigable.
---

Comment thread docs/guides/rest/style.md
Comment on lines +83 to +86
GET /courses/{courseid}
POST /courses
PATCH /courses/{courseid}
DELETE /courses/{courseid}
Comment thread docs/guides/rest/style.md

### 7.1 Nested Resources

Nested resources MUST only be used only for direct ownership or containment relationships.
Comment thread docs/guides/rest/style.md
Comment on lines +436 to +441
{
"courseId": 42,
"shortName": "math101",
"createdAt": 1779193800,
"startDate": 1779193800
}
Comment thread docs/guides/rest/style.md
Comment on lines +524 to +529
"pagination": {
"page": 1,
"pagesize": 25,
"totalitems": 1
}
}
Comment thread docs/guides/rest/style.md
Comment on lines +617 to +622
"pagination": {
"page": 1,
"pagesize": 25,
"totalitems": 100
}
}
Comment thread docs/guides/rest/style.md
Comment thread docs/guides/rest/style.md

#### RATIONALE

-*TO DO:** this rationale needs further work — the scope naming examples in this section are still under review and will be revised before this rationale is finalized.
Comment thread docs/guides/rest/style.md
Comment on lines +900 to +902
- OAuth2
- ****** Service tokens

Comment thread docs/guides/rest/style.md

#### RATIONALE

Declarative payloads describe what the resource should look like afterwards, which is idempotent, easy to validate against a schema, and safe to retry. Imperative payloads like "move": "up" encode a transition rather than a state, so retries or race conditions between two clients could produce different results depending on execution order, undermining PATCH's idempotency expectations from section 15.2.
Comment thread docs/guides/rest/style.md
Comment on lines +331 to +332
/courses/{courseid}/sections
/mod_forum/It was /{discussionid}/posts/{postid}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants