Skip to content
Back to skills

Its Rest

ASecurity

Create, edit, or review the openEHR ITS-REST API sources (OpenAPI 3.0 YAML + Markdown) in the `specifications-ITS-REST` repo. This skill should be used when the user asks to add or edit a REST endpoint/operation/schema/response, write an operation description, review the ITS-REST spec, add an ITS-REST amendment entry, or bundle and validate the OpenAPI specs. Not for AsciiDoc specs (use authoring), including the AsciiDoc docs under `specifications-ITS-REST/docs/` (simplified_formats, smart_ap...

  • 3 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 9, 2026
ai-agentsphpbashdockerapi

Works with

  • api

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned October 9, 2026

npx -y skills add openEHR/ai-plugins --skill its-rest --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Its Rest?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Its Rest
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/openehr-its-rest/badge)](https://www.skillsdirectory.com/skills/openehr-its-rest)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: its-rest
description: >
  Create, edit, or review the openEHR ITS-REST API sources (OpenAPI 3.0 YAML + Markdown) in the
  `specifications-ITS-REST` repo. This skill should be used when the user asks to add or edit a REST
  endpoint/operation/schema/response, write an operation description, review the ITS-REST spec, add
  an ITS-REST amendment entry, or bundle and validate the OpenAPI specs. Not for AsciiDoc specs (use
  authoring), including the AsciiDoc docs under `specifications-ITS-REST/docs/` (simplified_formats,
  smart_app_launch).
---

# openEHR ITS-REST API Specification Authoring

Create and edit the openEHR REST API specification sources in the `specifications-ITS-REST`
repository. Unlike other `specifications-XX` repos, which use AsciiDoc, ITS-REST uses
**OpenAPI 3.0.3 YAML** with **Markdown** descriptions, split across many small files that are
bundled into publishable artifacts.

## References

- **File-format conventions**: see `references/file-formats.md` for the detailed format and
  conventions of each source type — top-level entry YAML, operation files, schema files,
  Markdown description files, and the HTML amendment record. Load it when writing or editing any
  of these.
- **Build toolchain**: see `references/build-pipeline.md` for the full Redocly + PHP pipeline,
  validation, live preview, and code generation.

## Repository Structure

```
specifications-ITS-REST/
├── specifications/                    # Source OpenAPI specs (authoring)
│   ├── overview.openapi.yaml          # Top-level entry: overview/cross-cutting concerns
│   ├── ehr.openapi.yaml               # Top-level entry: EHR API
│   ├── query.openapi.yaml             # Top-level entry: Query API
│   ├── definition.openapi.yaml        # Top-level entry: Definition API
│   ├── demographic.openapi.yaml       # Top-level entry: Demographic API
│   ├── system.openapi.yaml            # Top-level entry: System API
│   ├── admin.openapi.yaml             # Top-level entry: Admin API
│   ├── operations/                    # One YAML file per API operation
│   ├── schemas/<domain>/              # Reusable schema components (ehr, query, common, …)
│   ├── parameters/{path,query,header}/ # Reusable parameter definitions
│   ├── responses/                     # Reusable response definitions
│   ├── headers/                       # Reusable response header definitions
│   ├── docs/<domain>/                 # Markdown description files (overview, ehr, query, …)
│   └── tags/                          # Tag description files (schema docs)
├── computable/OAS/                    # Build output (bundled specs in JSON/YAML)
├── docs/                              # AsciiDoc specs AND rendered HTML output
│   ├── simplified_formats/            # AsciiDoc spec (use authoring skill)
│   ├── smart_app_launch/              # AsciiDoc spec (use authoring skill)
│   └── *.html                         # Rendered HTML (build output)
├── development/                       # Build tooling (PHP, Docker, Makefile)
├── manifest.json                      # Component manifest
├── Makefile                           # Top-level build targets
└── .redocly.yaml                      # Redocly configuration
```

## Source File Types

Each source type has its own format and conventions — detailed in `references/file-formats.md`:

| Source | Location | Holds |
|--------|----------|-------|
| Top-level entry | `specifications/<domain>.openapi.yaml` | `info`/`x-status`/`x-spec`, servers, `paths` wiring operations via `$ref` |
| Operation | `specifications/operations/<resource>_<action>.yaml` | `operationId`, summary, tags, params, requestBody, responses (all `$ref`) |
| Schema | `specifications/schemas/<domain>/<SchemaName>.yaml` | PascalCase file name; `title` = RM class name; properties; `$ref`s |
| Markdown description | `specifications/docs/<domain>/Description.md` | RFC 2119 prose, hardcoded spec URLs, `http`/`json` code examples |
| Amendment record | `specifications/docs/overview/Amendment_record.md` | HTML table, `SPECITS` Jira links (not AsciiDoc) |

## Build Toolchain

Run build commands from the `development/` directory. Docker is required; first-time setup and full
details are in `references/build-pipeline.md`.

```bash
make bundle SPEC=ehr        # Bundle a single spec
make validate SPEC=ehr      # Validate
make all                    # Bundle all specs
```

## Adding a New Endpoint

1. Create the operation file: `specifications/operations/<operation_id>.yaml`
2. Reuse shared definitions from `specifications/parameters/`, `responses/`, and `headers/`. Add a new
   file only when none fits, and copy the structure and naming of its closest sibling in the same folder.
3. Add or reference schemas in `specifications/schemas/<domain>/`
4. Wire the operation into the appropriate top-level `*.openapi.yaml` under `paths:` (ask the user
   which API domain when it is unclear)
5. Add an entry to the amendment record in `specifications/docs/overview/Amendment_record.md`. Ask the
   user for the `SPECITS` ticket, the raiser, and the completion date; do not invent them.
6. Bundle and validate: `cd development && make bundle SPEC=<spec> && make validate SPEC=<spec>`

## Adding a New Schema

1. Create `specifications/schemas/<domain>/<SchemaName>.yaml` (PascalCase file name)
2. Set `title` to the RM class name
3. Reference it from the operation or parent schema via `$ref`
4. Follow the layout of the closest sibling schema for `required`, `type`, `properties`, and `description`

## Reviewing Changes

Check each changed file against `references/file-formats.md`:

1. Operation: `operationId` is unique, snake_case, and equals the file name; `summary` is a short
   imperative phrase; `tags` holds one tag; parameters, request bodies, responses, and headers use
   `$ref` to shared definitions.
2. Schema: the file name is PascalCase, `title` is the RM class name, and every relative `$ref` resolves.
3. Markdown: RFC 2119 keywords are in ALL CAPS, prose is third person and present tense with no
   contractions, spec links are hardcoded URLs, and code examples use `http` or `json` fences.
4. Amendment record: an entry with a `SPECITS` link exists.
5. `make bundle` and `make validate` pass for the affected spec.

## Scope Boundaries

- Cover the **OpenAPI YAML and Markdown** sources in `specifications-ITS-REST/specifications/`.
- Use `authoring` for the AsciiDoc documents in `specifications-ITS-REST/docs/` (simplified_formats, smart_app_launch).
- Leave the PHP build tooling internals in `development/` alone; consult `.junie/guidelines.md` for those. The `make` commands above are in scope.
- Do not cover other `specifications-XX` repositories.
- Do not apply the AsciiDoc-only tools to these sources. The `review` skill, the `spec-reviewer` and `xref-auditor` subagents, and the `amendment-record` skill expect AsciiDoc sources (`master*.adoc`); hardcoded spec URLs and the HTML amendment record are correct here.

Files in this skill

  • SKILL.md7 KB
  • references/build-pipeline.md2.4 KB
  • references/file-formats.md8.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.