Skip to content

feat: Add APIMethod asset type with request/response schemas#2337

Open
Tony-Atlan wants to merge 7 commits intomainfrom
feat/api-method-loader
Open

feat: Add APIMethod asset type with request/response schemas#2337
Tony-Atlan wants to merge 7 commits intomainfrom
feat/api-method-loader

Conversation

@Tony-Atlan
Copy link
Copy Markdown

@Tony-Atlan Tony-Atlan commented Mar 18, 2026

Summary

  • Adds APIMethod Java SDK type (IAPIMethod.java, APIMethod.java, _overlays/APIMethod.java) as a child of APIPath with request/response schema relationships
  • Updates APIPath and APIObject SDK types with new relationship fields (apiMethods, apiMethodsRequestingThis, apiMethodsRespondingWithThis)
  • Updates OpenAPI Spec loader to create APIObject, APIField, and APIMethod assets from OpenAPI specifications:
    • Phase 1: Creates APIObject per components/schemas entry, APIField per schema property, with $ref handling for nested object references
    • Phase 2: Creates APIMethod per HTTP operation per path, with request/response blobs for display and structured relationships to APIObject for field-level search
    • Phase 3: Creates synthetic APIObject + APIField assets for inline schemas with properties
  • All existing APISpec/APIPath behavior preserved unchanged (backward compatible)

Tickets

  • EPD-268 — Augment OpenAPI Spec API Assets with Request, Response and Parameters
  • PRDLNCH-5559 — Include APIMethod as a child of APIPath

Test plan

  • Verify compilation passes
  • Verify existing Petstore tests still pass (connectionCreated, specCreated, pathsCreated)
  • Verify new tests pass (objectsCreated, fieldsCreated, methodsCreated, methodRequestSchemaLinked, methodResponseSchemaLinked, objectRefFieldsLinked)
  • Run against a live Atlan tenant with sample OpenAPI specs to confirm asset creation
  • Verify APIMethod assets appear in the UI with request/response blobs on the overview page

🤖 Generated with Claude Code

@Tony-Atlan Tony-Atlan requested a review from cmgrote as a code owner March 18, 2026 05:27
@cmgrote
Copy link
Copy Markdown
Collaborator

cmgrote commented Mar 23, 2026

The only bit that should be direct-managed here is the _overlays/ — everything else needs to go via models repo first.

@Tony-Atlan
Copy link
Copy Markdown
Author

Thanks for the feedback. Understood — the SDK types (IAPIMethod.java, APIMethod.java, and relationship changes to IAPIPath/IAPIObject/APIPath/APIObject) should be generated from the models repo, not hand-written here.

The models PR is up at https://github.com/atlanhq/models/pull/1933 with the APIMethod entity def and 3 relationship defs. Once that's merged and the SDK generator runs, the auto-generated types will replace the hand-written ones in this PR.

For now, the loader code (OpenAPISpecLoader.kt + tests) directly imports com.atlan.model.assets.APIMethod, so removing the SDK files would break compilation. The plan is:

  1. Merge the models PR (Bump dependencies #1933)
  2. Run the SDK generator to produce the official types
  3. Rebase this PR to drop the hand-written SDK files, keeping only _overlays/APIMethod.java + loader code

The _overlays/APIMethod.java (creator method) is the only manually-authored SDK file that should remain.

Tony-Atlan and others added 7 commits April 5, 2026 19:50
Extend the loader to create structured assets from OpenAPI specs:
- APIObject per component schema, with APIField children per property
- APIMethod per HTTP operation (GET/POST/PUT/PATCH/DELETE) per path
- Request/response blobs on APIMethod for display
- Structured relationships to APIObject for field-level search
- apiMethodResponseCodes map for status code → schema mapping
- Nested $ref schemas handled via apiIsObjectReference on APIField

All existing APISpec and APIPath behavior is preserved unchanged
for backward compatibility.

Depends on: APIMethod type in Java SDK (EPD-268, PRDLNCH-5559)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…PIObject

Adds the APIMethod asset type to the Java SDK to support per-HTTP-method
assets as children of APIPath. Includes request/response blob attributes,
structured relationships to APIObject for field-level search, and
back-references on APIPath and APIObject.

New files:
- IAPIMethod.java: interface with field constants and getters
- APIMethod.java: full asset class with all attributes and boilerplate
- _overlays/APIMethod.java: creator convenience methods

Updated files:
- IAPIPath.java / APIPath.java: added apiMethods relationship
- IAPIObject.java / APIObject.java: added apiMethodsRequestingThis and
  apiMethodsRespondingWithThis back-references

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The KeywordField constant was missing from the interface, which would
cause compilation errors when tests reference APIMethod.API_METHOD_RESPONSE_CODES.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix Lombok @Singular annotations for apiMethodsRequestingThis and
apiMethodsRespondingWithThis in APIObject.java. Add overrides for
conflicting default methods inherited from IAPI and ICatalog interfaces
in APIMethod.java.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Phase 3: Create synthetic APIObject + APIField assets for inline
request/response schemas that have properties (not just $ref).
Primitive/array inline schemas continue as blob-only.

Phase 5: Add test assertions for response schema relationships
(apiMethodResponseSchemas, apiMethodResponseCodes) and object
reference field linking (apiIsObjectReference, apiObjectQualifiedName).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Expand one-liner method overrides to multi-line format per project
Spotless/Google Java Format rules.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@Tony-Atlan Tony-Atlan force-pushed the feat/api-method-loader branch from d074b83 to 4b38617 Compare April 6, 2026 00:52
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