Skip to content

Document SCIM2 Schemas API#6055

Open
sadilchamishka wants to merge 2 commits intowso2:masterfrom
sadilchamishka:application-wise-outbound-provisioning-doc-improvements
Open

Document SCIM2 Schemas API#6055
sadilchamishka wants to merge 2 commits intowso2:masterfrom
sadilchamishka:application-wise-outbound-provisioning-doc-improvements

Conversation

@sadilchamishka
Copy link
Copy Markdown
Contributor

Purpose

This pull request adds documentation and OpenAPI/Swagger definitions for the SCIM 2.0 Schema API to both the Asgardeo and Identity Server documentation. It introduces new YAML files describing the API endpoints and integrates them into the documentation navigation and Redoc rendering system, making it easier for users to explore and understand the SCIM 2.0 Schema API.

SCIM 2.0 Schema API Documentation Integration

Asgardeo Documentation:

  • Added OpenAPI 3.0 YAML definition for the SCIM 2.0 Schema API at en/asgardeo/docs/apis/restapis/scim2-schemas.yaml, including endpoints to retrieve all schemas and a schema by ID, with detailed schema object definitions and error responses.
  • Introduced a Redoc-based documentation page for the SCIM 2.0 Schema API at en/asgardeo/docs/apis/scim2/scim2-schema-rest-api.md.
  • Updated the navigation in en/asgardeo/mkdocs.yml to include the new SCIM 2.0 Schema API documentation page.

Identity Server Documentation:

  • Added Swagger 2.0 YAML definition for the SCIM 2.0 Schema API at en/identity-server/7.2.0/docs/apis/restapis/scim2-schemas.yaml, detailing endpoints, schema objects, security, and error responses.
  • Added a Redoc-based documentation page for the SCIM 2.0 Schema API at en/identity-server/7.2.0/docs/apis/scim2/scim2-schema-rest-api.md.
  • Updated the navigation in en/identity-server/7.2.0/mkdocs.yml to include the new SCIM 2.0 Schema API documentation page.

Related Issues

Copilot AI review requested due to automatic review settings April 10, 2026 07:39
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 10, 2026

📝 Walkthrough

Walkthrough

Adds SCIM 2.0 Schema API documentation across Asgardeo and Identity Server docs: OpenAPI/Swagger specs declaring GET /Schemas and GET /Schemas/{id}, ReDoc markdown pages, and navigation entries in mkdocs configuration.

Changes

Cohort / File(s) Summary
Asgardeo SCIM 2.0 Schema API
en/asgardeo/docs/apis/restapis/scim2-schemas.yaml, en/asgardeo/docs/apis/scim2/scim2-schema-rest-api.md, en/asgardeo/mkdocs.yml
Added OpenAPI 3.0.1 spec for SCIM Schemas (GET /Schemas, GET /Schemas/{id}) with SchemaObject/SchemaAttribute models, error schemas, curl examples; added ReDoc page and mkdocs navigation entry.
Identity Server 7.2.0 SCIM 2.0 Schema API
en/identity-server/7.2.0/docs/apis/restapis/scim2-schemas.yaml, en/identity-server/7.2.0/docs/apis/scim2/scim2-schema-rest-api.md, en/identity-server/7.2.0/mkdocs.yml
Added Swagger 2.0 spec for SCIM Schemas (GET /Schemas, GET /Schemas/{id}) including Schema* models, ErrorUnauthorized/ErrorSchemaNotFound, and global security (OAuth2, BasicAuth); added ReDoc page and navigation entry.
Identity Server Next SCIM 2.0 Schema API
en/identity-server/next/docs/apis/restapis/scim2-schemas.yaml, en/identity-server/next/docs/apis/scim2/scim2-schema-rest-api.md, en/identity-server/next/mkdocs.yml
Added Swagger 2.0 spec for SCIM Schemas with models and error definitions, global security (OAuth2, BasicAuth), ReDoc page, and mkdocs navigation entry placed between Bulk and Batch API docs.

Suggested labels

Team/API Access Mgt & Authorization

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive The description provides clear purpose, lists related issues, but lacks test environment details and security checks required by the template. Add test environment details (JDK versions, OS, databases, browsers) and complete the security checks section with checkboxes marked or explanations provided.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Document SCIM2 Schemas API' accurately and concisely summarizes the main change—adding documentation for the SCIM 2.0 Schema API.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR adds SCIM 2.0 Schemas API documentation pages (Redoc) and corresponding API definition files, and wires them into the MkDocs navigation for both Asgardeo and WSO2 Identity Server docs.

Changes:

  • Added new Redoc pages for the SCIM 2.0 Schemas API in Asgardeo, Identity Server next, and Identity Server 7.2.0.
  • Added new API definition YAML files for the Schemas endpoints under each product/version.
  • Updated MkDocs navigation to expose the new Schemas API pages under SCIM 2.0.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 16 comments.

Show a summary per file
File Description
en/identity-server/next/mkdocs.yml Adds the SCIM 2.0 Schemas API page to the SCIM navigation.
en/identity-server/next/docs/apis/scim2/scim2-schema-rest-api.md New Redoc page rendering the Schemas API spec.
en/identity-server/next/docs/apis/restapis/scim2-schemas.yaml New Schemas API definition (currently Swagger 2.0).
en/identity-server/7.2.0/mkdocs.yml Adds the SCIM 2.0 Schemas API page to the SCIM navigation.
en/identity-server/7.2.0/docs/apis/scim2/scim2-schema-rest-api.md New Redoc page rendering the Schemas API spec.
en/identity-server/7.2.0/docs/apis/restapis/scim2-schemas.yaml New Schemas API definition (currently Swagger 2.0).
en/asgardeo/mkdocs.yml Adds the SCIM 2.0 Schemas API page to the SCIM navigation.
en/asgardeo/docs/apis/scim2/scim2-schema-rest-api.md New Redoc page rendering the Schemas API spec.
en/asgardeo/docs/apis/restapis/scim2-schemas.yaml New OpenAPI 3.0 spec for Schemas API (success responses currently documented as application/json).

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 7

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@en/asgardeo/docs/apis/scim2/scim2-schema-rest-api.md`:
- Line 5: The file ends without a trailing newline causing MD047; add a single
newline character at the end of the file so the final line containing the <redoc
spec-url="{{base_path}}/apis/restapis/scim2-schemas.yaml"
theme='{{redoc_theme}}'></redoc> tag is terminated by one newline (ensure only
one final newline and no extra blank lines).

In `@en/identity-server/7.2.0/docs/apis/restapis/scim2-schemas.yaml`:
- Around line 363-366: The OpenAPI schemas ErrorUnauthorized and
ErrorSchemaNotFound declare a required field named "schema" which does not exist
under properties (the actual property is "schemas"); update the required arrays
in the ErrorUnauthorized and ErrorSchemaNotFound schema definitions to replace
"schema" with "schemas" so the required list matches the defined property name.
- Around line 28-30: The OpenAPI file declares global security schemes (OAuth2
and BasicAuth) but the operations labeled "No permissions required" are
ambiguous about whether authentication is required; to fix, either add
operation-level security: [] to each relevant operation (the SCIM endpoints
around the "No permissions required" descriptions) to explicitly opt-out of
global authentication, or update the endpoint descriptions to explicitly state
"authentication required, but no special scopes/permissions required" so callers
know 401 responses refer to missing credentials rather than missing scopes;
locate and change the operation entries that currently include the "No
permissions required" text to apply one of these two fixes.
- Around line 24-25: The SCIM response media type is being overridden locally
with "application/json", causing non-compliance; locate the local "produces"
entries that list "application/json" (the ones overriding the global produces)
and either remove those local "produces" keys so the document inherits the
global produces "application/scim+json", or change their values from
"application/json" to "application/scim+json" so all responses use the
SCIM-mandated media type.

In `@en/identity-server/next/docs/apis/restapis/scim2-schemas.yaml`:
- Around line 363-366: The SCIM schema models ErrorUnauthorized and
ErrorSchemaNotFound have an incorrect required field name ("schema") that should
be "schemas"; update the required arrays for ErrorUnauthorized,
ErrorSchemaNotFound (and the other repeated occurrences noted) to use "schemas"
so they match the defined property name "schemas" in the YAML models, ensuring
schema validation passes.
- Around line 28-30: The global security block declares OAuth2/BasicAuth but two
operations are documented as "No permissions required", creating a
contradiction; fix by either adding an explicit operation-level override
security: [] to those specific operations to make them publicly accessible, or
update their operation descriptions to explicitly state that authentication is
required but no additional roles/scopes are needed (e.g., "Authentication
required; no extra roles/scopes required")—locate the operations that contain
the "No permissions required" text and apply one of these two changes
accordingly.
- Around line 24-25: The GET operations for the /Schemas and /Schemas/{id} paths
currently override the global produces with application/json; update those
operation-level media types to application/scim+json so they match the global
declaration and RFC 7644: locate the GET entries under the /Schemas and
/Schemas/{id} path items and replace any occurrence of application/json in their
produces/response content with application/scim+json (ensuring the response
schema remains the same).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

Run ID: c091dc2f-dd55-486b-8fb5-759d3c3302f0

📥 Commits

Reviewing files that changed from the base of the PR and between 99589aa and 6999543.

📒 Files selected for processing (9)
  • en/asgardeo/docs/apis/restapis/scim2-schemas.yaml
  • en/asgardeo/docs/apis/scim2/scim2-schema-rest-api.md
  • en/asgardeo/mkdocs.yml
  • en/identity-server/7.2.0/docs/apis/restapis/scim2-schemas.yaml
  • en/identity-server/7.2.0/docs/apis/scim2/scim2-schema-rest-api.md
  • en/identity-server/7.2.0/mkdocs.yml
  • en/identity-server/next/docs/apis/restapis/scim2-schemas.yaml
  • en/identity-server/next/docs/apis/scim2/scim2-schema-rest-api.md
  • en/identity-server/next/mkdocs.yml

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 7

♻️ Duplicate comments (1)
en/identity-server/7.2.0/docs/apis/restapis/scim2-schemas.yaml (1)

72-74: ⚠️ Potential issue | 🟡 Minor

Align auth wording for /Schemas/{id} with global security requirements.

Line 74 says “No permissions required”, which is still ambiguous against global auth and inconsistent with Line 43 wording used in /Schemas. Use the same explicit phrasing (“no additional roles/scopes; authentication required”) here too.

Suggested wording update
-            * No permissions required
+            * No additional roles or scopes required. Authentication is required.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@en/identity-server/7.2.0/docs/apis/restapis/scim2-schemas.yaml` around lines
72 - 74, Update the wording under the /Schemas/{id} endpoint so it matches the
global security phrasing used for /Schemas: replace the ambiguous "No
permissions required" text with the explicit phrase "No additional roles/scopes;
authentication required" (locate the block associated with the /Schemas/{id}
path and its Permission required section to make the change).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@en/asgardeo/docs/apis/restapis/scim2-schemas.yaml`:
- Line 47: Update the cURL examples that set the Accept header string "-H
'accept: application/json' \" to use the SCIM media type "-H 'accept:
application/scim+json' \" so the request Accept header matches the documented
response media type; apply the same replacement to all instances (e.g., the
occurrences shown in the examples).
- Around line 12-21: The OpenAPI spec currently only notes authentication in the
description for the operationId getSchemas (paths /Schemas) and similar for GET
/Schemas/{id}; add a proper OpenAPI security definition by adding a
components.securitySchemes entry (e.g., OAuth2, bearerAuth, or the
organization’s chosen scheme) and then reference it via a security
requirement—either globally under top-level security or per-operation under
paths./Schemas.get.security and paths./Schemas/{id}.get.security—so tools and
generators enforce authentication instead of relying on prose.
- Around line 331-333: The OpenAPI SCIM error schemas define the "schemas"
property as a string but RFC 7644 requires it to be an array of unique string
URIs; update the ErrorUnauthorized and ErrorSchemaNotFound schema definitions to
change the "schemas" field from type: string to type: array with items: { type:
string } (and keep the example as an array like
["urn:ietf:params:scim:api:messages:2.0:Error"]) so both schemas comply with
SCIM 2.0 and downstream validation/generation; locate the "ErrorUnauthorized"
and "ErrorSchemaNotFound" schema objects and modify their "schemas" property
accordingly.

In `@en/identity-server/7.2.0/docs/apis/restapis/scim2-schemas.yaml`:
- Around line 370-372: The OpenAPI definition models the SCIM error object's
"schemas" property as a string; change the property type to an array of strings
and update the example to an array of URNs so it matches SCIM (e.g., type:
array, items: { type: string, format: uri? }, example:
["urn:ietf:params:scim:api:messages:2.0:Error"]). Update both occurrences
referenced (the block around the current schemas example and the similar block
at the later occurrence) and ensure any validations or descriptions for
"schemas" reflect that it is an array of schema URNs.

In `@en/identity-server/next/docs/apis/restapis/scim2-schemas.yaml`:
- Around line 38-44: Update the description for the /Schemas/{id} endpoint to
match the /Schemas listing: change the phrase "No permissions required" to "No
additional roles or scopes required. Authentication is required." so the
operation (e.g., operationId getSchemaById or the /Schemas/{id} path)
consistently clarifies that authentication is required even though no extra
roles/scopes are needed; ensure the text formatting and surrounding
markdown/HTML match the existing /Schemas description (operationId getSchemas)
for consistency.
- Around line 155-205: Update the SCIM schema enums to RFC 7643-compliant casing
and values: change the values in the "type" enum (used in the attribute
definition) from uppercase (e.g., STRING, COMPLEX, BOOLEAN, DECIMAL, INTEGER,
DATE_TIME, DATE, BINARY, REFERENCE) to RFC forms (e.g., "string", "complex",
"boolean", "decimal", "integer", "dateTime", "binary", "reference") and verify
whether "DATE" is a vendor extension (remove it if not allowed); change
"mutability" enum values in the mutability property from
READ_ONLY/READ_WRITE/IMMUTABLE/WRITE_ONLY to
"readOnly"/"readWrite"/"immutable"/"writeOnly"; change "returned" enum values
from ALWAYS/NEVER/DEFAULT/REQUEST to "always"/"never"/"default"/"request"; and
expand the "uniqueness" enum to include "none", "server", and "global" (not just
NONE), ensuring examples match the new values (e.g., "string", "readWrite",
"default", "none").
- Around line 370-372: The schemas property for the SCIM error schemas
(ErrorUnauthorized and ErrorSchemaNotFound) is incorrectly declared as a string;
change each schemas property to be an array of strings per RFC 7644 Section 3.12
(i.e., type: array with items: type: string) and update the example to be an
array containing the URI (e.g., ["urn:ietf:params:scim:api:messages:2.0:Error"])
so both ErrorUnauthorized and ErrorSchemaNotFound conform to the SCIM 2.0 spec.

---

Duplicate comments:
In `@en/identity-server/7.2.0/docs/apis/restapis/scim2-schemas.yaml`:
- Around line 72-74: Update the wording under the /Schemas/{id} endpoint so it
matches the global security phrasing used for /Schemas: replace the ambiguous
"No permissions required" text with the explicit phrase "No additional
roles/scopes; authentication required" (locate the block associated with the
/Schemas/{id} path and its Permission required section to make the change).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

Run ID: 1ef77d5d-ac91-4139-84e4-7ec51e334893

📥 Commits

Reviewing files that changed from the base of the PR and between 6999543 and 944c3ed.

📒 Files selected for processing (3)
  • en/asgardeo/docs/apis/restapis/scim2-schemas.yaml
  • en/identity-server/7.2.0/docs/apis/restapis/scim2-schemas.yaml
  • en/identity-server/next/docs/apis/restapis/scim2-schemas.yaml

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants