diff --git a/packages/core/src/openapi-request-builder.ts b/packages/core/src/openapi-request-builder.ts index 62b8bd58e..b8bfc3d2e 100644 --- a/packages/core/src/openapi-request-builder.ts +++ b/packages/core/src/openapi-request-builder.ts @@ -14,9 +14,10 @@ export class OpenApiRequestBuilder< constructor( method: Method, pathPattern: string, - parameters?: OpenApiRequestParameters + parameters?: OpenApiRequestParameters, + basePath?: string ) { - super(method, pathPattern, parameters); + super(method, pathPattern, parameters, basePath); } /** diff --git a/packages/document-grounding/package.json b/packages/document-grounding/package.json index 84887cef0..0f496116e 100644 --- a/packages/document-grounding/package.json +++ b/packages/document-grounding/package.json @@ -25,7 +25,7 @@ "test": "NODE_OPTIONS=--experimental-vm-modules jest", "lint": "eslint . && prettier . --config ../../.prettierrc --ignore-path ../../.prettierignore -c", "lint:fix": "eslint . --fix && prettier . --config ../../.prettierrc --ignore-path ../../.prettierignore -w --log-level error", - "generate": "openapi-generator --generateESM --clearOutputDir -i ./src/spec/api.yaml -o ./src/client && pnpm update-imports && pnpm lint:fix", + "generate": "openapi-generator --generateESM --clearOutputDir -i ./src/spec/api.yaml -o ./src/client -s ./src/spec/options-per-service.json && pnpm update-imports && pnpm lint:fix", "update-imports": "node --no-warnings --loader ts-node/esm ../../scripts/update-imports.ts ./src/client/api" }, "dependencies": { diff --git a/packages/document-grounding/src/client/api/pipelines-api.ts b/packages/document-grounding/src/client/api/pipelines-api.ts index 9bfa9fbc5..b098f669c 100644 --- a/packages/document-grounding/src/client/api/pipelines-api.ts +++ b/packages/document-grounding/src/client/api/pipelines-api.ts @@ -16,6 +16,7 @@ import type { * This API is part of the 'api' service. */ export const PipelinesApi = { + _defaultBasePath: '/lm/document-grounding', /** * Get all pipelines * @param queryParameters - Object containing the following keys: $top, $skip, $count. @@ -28,11 +29,12 @@ export const PipelinesApi = { ) => new OpenApiRequestBuilder( 'get', - '/lm/document-grounding/pipelines', + '/pipelines', { queryParameters, headerParameters - } + }, + PipelinesApi._defaultBasePath ), /** * Create a pipeline @@ -46,11 +48,12 @@ export const PipelinesApi = { ) => new OpenApiRequestBuilder( 'post', - '/lm/document-grounding/pipelines', + '/pipelines', { body, headerParameters - } + }, + PipelinesApi._defaultBasePath ), /** * Get details of a pipeline by pipeline id @@ -64,11 +67,12 @@ export const PipelinesApi = { ) => new OpenApiRequestBuilder( 'get', - '/lm/document-grounding/pipelines/{pipelineId}', + '/pipelines/{pipelineId}', { pathParameters: { pipelineId }, headerParameters - } + }, + PipelinesApi._defaultBasePath ), /** * Delete a pipeline by pipeline id @@ -82,11 +86,12 @@ export const PipelinesApi = { ) => new OpenApiRequestBuilder( 'delete', - '/lm/document-grounding/pipelines/{pipelineId}', + '/pipelines/{pipelineId}', { pathParameters: { pipelineId }, headerParameters - } + }, + PipelinesApi._defaultBasePath ), /** * Get pipeline status by pipeline id @@ -100,10 +105,11 @@ export const PipelinesApi = { ) => new OpenApiRequestBuilder( 'get', - '/lm/document-grounding/pipelines/{pipelineId}/status', + '/pipelines/{pipelineId}/status', { pathParameters: { pipelineId }, headerParameters - } + }, + PipelinesApi._defaultBasePath ) }; diff --git a/packages/document-grounding/src/client/api/retrieval-api.ts b/packages/document-grounding/src/client/api/retrieval-api.ts index 7b3cb09cb..29066308c 100644 --- a/packages/document-grounding/src/client/api/retrieval-api.ts +++ b/packages/document-grounding/src/client/api/retrieval-api.ts @@ -15,6 +15,7 @@ import type { * This API is part of the 'api' service. */ export const RetrievalApi = { + _defaultBasePath: '/lm/document-grounding', /** * List all DataRepository objects. * @param queryParameters - Object containing the following keys: $top, $skip, $count. @@ -27,11 +28,12 @@ export const RetrievalApi = { ) => new OpenApiRequestBuilder( 'get', - '/lm/document-grounding/retrieval/dataRepositories', + '/retrieval/dataRepositories', { queryParameters, headerParameters - } + }, + RetrievalApi._defaultBasePath ), /** * List single DataRepository object. @@ -45,11 +47,12 @@ export const RetrievalApi = { ) => new OpenApiRequestBuilder( 'get', - '/lm/document-grounding/retrieval/dataRepositories/{repositoryId}', + '/retrieval/dataRepositories/{repositoryId}', { pathParameters: { repositoryId }, headerParameters - } + }, + RetrievalApi._defaultBasePath ), /** * Retrieve relevant content given a query string. @@ -63,10 +66,11 @@ export const RetrievalApi = { ) => new OpenApiRequestBuilder( 'post', - '/lm/document-grounding/retrieval/search', + '/retrieval/search', { body, headerParameters - } + }, + RetrievalApi._defaultBasePath ) }; diff --git a/packages/document-grounding/src/client/api/vector-api.ts b/packages/document-grounding/src/client/api/vector-api.ts index f4a3a147d..b2697b138 100644 --- a/packages/document-grounding/src/client/api/vector-api.ts +++ b/packages/document-grounding/src/client/api/vector-api.ts @@ -24,6 +24,7 @@ import type { * This API is part of the 'api' service. */ export const VectorApi = { + _defaultBasePath: '/lm/document-grounding', /** * Gets a list of collections. * @param queryParameters - Object containing the following keys: $top, $skip, $count. @@ -36,11 +37,12 @@ export const VectorApi = { ) => new OpenApiRequestBuilder( 'get', - '/lm/document-grounding/vector/collections', + '/vector/collections', { queryParameters, headerParameters - } + }, + VectorApi._defaultBasePath ), /** * Creates a collection. This operation is asynchronous. Poll the collection resource and check the status field to understand creation status. @@ -54,11 +56,12 @@ export const VectorApi = { ) => new OpenApiRequestBuilder( 'post', - '/lm/document-grounding/vector/collections', + '/vector/collections', { body, headerParameters - } + }, + VectorApi._defaultBasePath ), /** * Gets a specific collection by ID. @@ -72,11 +75,12 @@ export const VectorApi = { ) => new OpenApiRequestBuilder( 'get', - '/lm/document-grounding/vector/collections/{collectionId}', + '/vector/collections/{collectionId}', { pathParameters: { collectionId }, headerParameters - } + }, + VectorApi._defaultBasePath ), /** * Deletes a specific collection by ID. This operation is asynchronous. Poll the collection for a 404 status code. @@ -90,11 +94,12 @@ export const VectorApi = { ) => new OpenApiRequestBuilder( 'delete', - '/lm/document-grounding/vector/collections/{collectionId}', + '/vector/collections/{collectionId}', { pathParameters: { collectionId }, headerParameters - } + }, + VectorApi._defaultBasePath ), /** * Gets a specific document in a collection by ID. @@ -110,11 +115,12 @@ export const VectorApi = { ) => new OpenApiRequestBuilder( 'get', - '/lm/document-grounding/vector/collections/{collectionId}/documents/{documentId}', + '/vector/collections/{collectionId}/documents/{documentId}', { pathParameters: { collectionId, documentId }, headerParameters - } + }, + VectorApi._defaultBasePath ), /** * Deletes a specific document of a collection. @@ -130,11 +136,12 @@ export const VectorApi = { ) => new OpenApiRequestBuilder( 'delete', - '/lm/document-grounding/vector/collections/{collectionId}/documents/{documentId}', + '/vector/collections/{collectionId}/documents/{documentId}', { pathParameters: { collectionId, documentId }, headerParameters - } + }, + VectorApi._defaultBasePath ), /** * Gets a list of documents of a collection. @@ -150,12 +157,13 @@ export const VectorApi = { ) => new OpenApiRequestBuilder( 'get', - '/lm/document-grounding/vector/collections/{collectionId}/documents', + '/vector/collections/{collectionId}/documents', { pathParameters: { collectionId }, queryParameters, headerParameters - } + }, + VectorApi._defaultBasePath ), /** * Create and stores one or multiple documents into a collection. If omitted, 'id' will be auto-generated. @@ -171,12 +179,13 @@ export const VectorApi = { ) => new OpenApiRequestBuilder( 'post', - '/lm/document-grounding/vector/collections/{collectionId}/documents', + '/vector/collections/{collectionId}/documents', { pathParameters: { collectionId }, body, headerParameters - } + }, + VectorApi._defaultBasePath ), /** * Upserts the data of multiple documents into a collection. @@ -192,12 +201,13 @@ export const VectorApi = { ) => new OpenApiRequestBuilder( 'patch', - '/lm/document-grounding/vector/collections/{collectionId}/documents', + '/vector/collections/{collectionId}/documents', { pathParameters: { collectionId }, body, headerParameters - } + }, + VectorApi._defaultBasePath ), /** * Search chunk by vector @@ -211,11 +221,12 @@ export const VectorApi = { ) => new OpenApiRequestBuilder( 'post', - '/lm/document-grounding/vector/search', + '/vector/search', { body, headerParameters - } + }, + VectorApi._defaultBasePath ), /** * Gets a specific collection status from monitor by ID. @@ -229,10 +240,15 @@ export const VectorApi = { ) => new OpenApiRequestBuilder< CollectionCreatedResponse | CollectionPendingResponse - >('get', '/lm/document-grounding/vector/collections/{id}/creationStatus', { - pathParameters: { id }, - headerParameters - }), + >( + 'get', + '/vector/collections/{id}/creationStatus', + { + pathParameters: { id }, + headerParameters + }, + VectorApi._defaultBasePath + ), /** * Gets a specific collection status from monitor by ID. * @param id - Path parameter. @@ -245,8 +261,13 @@ export const VectorApi = { ) => new OpenApiRequestBuilder< CollectionDeletedResponse | CollectionPendingResponse - >('get', '/lm/document-grounding/vector/collections/{id}/deletionStatus', { - pathParameters: { id }, - headerParameters - }) + >( + 'get', + '/vector/collections/{id}/deletionStatus', + { + pathParameters: { id }, + headerParameters + }, + VectorApi._defaultBasePath + ) }; diff --git a/packages/document-grounding/src/spec/api.yaml b/packages/document-grounding/src/spec/api.yaml index cde13111a..4848dffa3 100644 --- a/packages/document-grounding/src/spec/api.yaml +++ b/packages/document-grounding/src/spec/api.yaml @@ -12,8 +12,10 @@ tags: description: Tag for vector component - name: retrieval description: Tag for retrieval component +servers: + - url: '/v2/lm/document-grounding' paths: - '/lm/document-grounding/pipelines': + '/pipelines': post: operationId: pipeline.v1.pipeline_endpoints.create_pipeline x-sap-cloud-sdk-operation-name: createPipeline @@ -65,7 +67,7 @@ paths: $ref: '#/components/schemas/Pipelines' '400': $ref: '#/components/responses/BadRequest' - '/lm/document-grounding/pipelines/{pipelineId}': + '/pipelines/{pipelineId}': get: operationId: pipeline.v1.pipeline_endpoints.get_pipeline_by_id x-sap-cloud-sdk-operation-name: getPipelineById @@ -116,7 +118,7 @@ paths: description: No Content '400': $ref: '#/components/responses/BadRequest' - '/lm/document-grounding/pipelines/{pipelineId}/status': + '/pipelines/{pipelineId}/status': get: operationId: pipeline.v1.pipeline_endpoints.get_pipeline_status x-sap-cloud-sdk-operation-name: getPipelineStatus @@ -144,7 +146,7 @@ paths: $ref: '#/components/schemas/PipelineStatus' '400': $ref: '#/components/responses/BadRequest' - '/lm/document-grounding/vector/collections': + '/vector/collections': get: parameters: - in: header @@ -201,7 +203,7 @@ paths: $ref: '#/components/responses/BadRequest' '422': $ref: '#/components/responses/UnprocessableEntity' - '/lm/document-grounding/vector/collections/{collectionId}': + '/vector/collections/{collectionId}': get: tags: - vector @@ -268,7 +270,7 @@ paths: $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' - '/lm/document-grounding/vector/collections/{collectionId}/documents/{documentId}': + '/vector/collections/{collectionId}/documents/{documentId}': get: tags: - vector @@ -345,7 +347,7 @@ paths: $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' - '/lm/document-grounding/vector/collections/{collectionId}/documents': + '/vector/collections/{collectionId}/documents': get: tags: - vector @@ -460,7 +462,7 @@ paths: $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' - '/lm/document-grounding/vector/search': + '/vector/search': post: parameters: - in: header @@ -493,7 +495,7 @@ paths: $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' - '/lm/document-grounding/vector/collections/{id}/creationStatus': + '/vector/collections/{id}/creationStatus': get: tags: - vector @@ -529,7 +531,7 @@ paths: $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' - '/lm/document-grounding/vector/collections/{id}/deletionStatus': + '/vector/collections/{id}/deletionStatus': get: tags: - vector @@ -565,7 +567,7 @@ paths: $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' - '/lm/document-grounding/retrieval/dataRepositories': + '/retrieval/dataRepositories': get: parameters: - in: header @@ -591,7 +593,7 @@ paths: $ref: '#/components/schemas/DataRepositories' '400': $ref: '#/components/responses/BadRequest' - '/lm/document-grounding/retrieval/dataRepositories/{repositoryId}': + '/retrieval/dataRepositories/{repositoryId}': get: tags: - retrieval @@ -625,7 +627,7 @@ paths: $ref: '#/components/responses/UnprocessableEntity' '404': $ref: '#/components/responses/NotFound' - '/lm/document-grounding/retrieval/search': + '/retrieval/search': post: parameters: - in: header diff --git a/packages/document-grounding/src/spec/options-per-service.json b/packages/document-grounding/src/spec/options-per-service.json new file mode 100644 index 000000000..c4dd34ff7 --- /dev/null +++ b/packages/document-grounding/src/spec/options-per-service.json @@ -0,0 +1,7 @@ +{ + "src/spec/api.yaml": { + "packageName": "api", + "directoryName": "api", + "basePath": "/lm/document-grounding" + } +} diff --git a/packages/document-grounding/src/tests/retrieval-api.test.ts b/packages/document-grounding/src/tests/retrieval-api.test.ts index a4b4885d3..890659953 100644 --- a/packages/document-grounding/src/tests/retrieval-api.test.ts +++ b/packages/document-grounding/src/tests/retrieval-api.test.ts @@ -3,8 +3,7 @@ import { aiCoreDestination, mockClientCredentialsGrantCall } from '../../../../test-util/mock-http.js'; -import { RetrievalApi } from '../client/api/index.js'; -import type { DataRepositories } from '../../internal.js'; +import { RetrievalApi, type DataRepositories } from '../client/api/index.js'; describe('retrieval data repository', () => { beforeEach(() => {