@@ -134,7 +134,9 @@ class EndpointSchema(BaseModel):
134134 description_markdown : str = Field (default = "" , description = "Description in markdown format" )
135135 tags : List [str ] = Field (default_factory = list , description = "Tags for categorization" )
136136 parameters : List [EndpointParameter ] = Field (default_factory = list , description = "Endpoint parameters" )
137- requestBody : Optional [Dict [str , Any ]] = Field (default = None , description = "Request body specification" )
137+ requestBody : Optional [Dict [str , Any ]] = Field (default = None , description = "OpenAPI-style request body specification (from swagger path)" )
138+ example_request_body : Optional [Dict [str , Any ]] = Field (default = None , description = "Concrete example request body (from OBP resource-docs)" )
139+ typed_request_body : Optional [Dict [str , Any ]] = Field (default = None , description = "JSON Schema for request body (from OBP resource-docs)" )
138140 responses : Dict [str , EndpointResponse ] = Field (default_factory = dict , description = "Response specifications by status code" )
139141 success_response_body : Optional [Dict [str , Any ]] = Field (default = None , description = "Example success response body" )
140142 error_response_bodies : List [str ] = Field (default_factory = list , description = "Possible error response messages" )
@@ -189,6 +191,8 @@ def from_raw(cls, data: Dict[str, Any]) -> "EndpointSchema":
189191 tags = data .get ("tags" , []),
190192 parameters = parameters ,
191193 requestBody = data .get ("requestBody" ),
194+ example_request_body = data .get ("example_request_body" ),
195+ typed_request_body = data .get ("typed_request_body" ),
192196 responses = responses ,
193197 success_response_body = data .get ("success_response_body" ),
194198 error_response_bodies = data .get ("error_response_bodies" , []),
@@ -420,7 +424,11 @@ def build_index_from_resource_docs(self, resource_docs_data: Dict[str, Any]) ->
420424 # Extract roles from resource docs format
421425 roles = doc .get ("roles" , [])
422426
423- # Store full schema separately (keyed by endpoint_id)
427+ # Store full schema separately (keyed by endpoint_id).
428+ # OBP resource-docs use `example_request_body` / `typed_request_body`
429+ # (a concrete example object + a JSON Schema). The OpenAPI-style
430+ # `requestBody` field stays None on this path since resource-docs
431+ # don't carry that exact shape — clients should prefer the example.
424432 self ._schemas [endpoint_id ] = {
425433 "path" : path ,
426434 "method" : method ,
@@ -431,6 +439,8 @@ def build_index_from_resource_docs(self, resource_docs_data: Dict[str, Any]) ->
431439 "tags" : tags ,
432440 "parameters" : [], # Resource docs don't provide parameters in the same way
433441 "requestBody" : None ,
442+ "example_request_body" : doc .get ("example_request_body" ),
443+ "typed_request_body" : doc .get ("typed_request_body" ),
434444 "responses" : {},
435445 "success_response_body" : doc .get ("success_response_body" ),
436446 "error_response_bodies" : doc .get ("error_response_bodies" , []),
0 commit comments