Fix rest metadata api (#13343)

Regression introduced in https://github.com/twentyhq/twenty/pull/13150
where baseUrl is now used in a new requestContext param for MCP but was
not hydrated for rest metadata api
<img width="1334" height="556" alt="Screenshot 2025-07-22 at 15 52 39"
src="https://github.com/user-attachments/assets/7f13797f-eb23-40ab-87b7-49196e4b9b92"
/>
This commit is contained in:
Weiko
2025-07-22 16:42:00 +02:00
committed by GitHub
parent a35e8d3529
commit 04db0d2b7e

View File

@ -7,7 +7,10 @@ import {
GraphqlApiType,
RestApiService,
} from 'src/engine/api/rest/rest-api.service';
import { RequestContext } from 'src/engine/api/rest/types/RequestContext';
import { AccessTokenService } from 'src/engine/core-modules/auth/token/services/access-token.service';
import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service';
import { getServerUrl } from 'src/utils/get-server-url';
@Injectable()
export class RestApiMetadataService {
@ -15,49 +18,68 @@ export class RestApiMetadataService {
private readonly accessTokenService: AccessTokenService,
private readonly metadataQueryBuilderFactory: MetadataQueryBuilderFactory,
private readonly restApiService: RestApiService,
private readonly twentyConfigService: TwentyConfigService,
) {}
async get(request: Request) {
await this.accessTokenService.validateTokenByRequest(request);
const data = await this.metadataQueryBuilderFactory.get(request);
const requestContext = this.getRequestContext(request);
const data = await this.metadataQueryBuilderFactory.get(requestContext);
return await this.restApiService.call(
GraphqlApiType.METADATA,
request,
requestContext,
data,
);
}
async create(request: Request) {
await this.accessTokenService.validateTokenByRequest(request);
const data = await this.metadataQueryBuilderFactory.create(request);
const requestContext = this.getRequestContext(request);
const data = await this.metadataQueryBuilderFactory.create(requestContext);
return await this.restApiService.call(
GraphqlApiType.METADATA,
request,
requestContext,
data,
);
}
async update(request: Request) {
await this.accessTokenService.validateTokenByRequest(request);
const data = await this.metadataQueryBuilderFactory.update(request);
const requestContext = this.getRequestContext(request);
const data = await this.metadataQueryBuilderFactory.update(requestContext);
return await this.restApiService.call(
GraphqlApiType.METADATA,
request,
requestContext,
data,
);
}
async delete(request: Request) {
await this.accessTokenService.validateTokenByRequest(request);
const data = await this.metadataQueryBuilderFactory.delete(request);
const requestContext = this.getRequestContext(request);
const data = await this.metadataQueryBuilderFactory.delete(requestContext);
return await this.restApiService.call(
GraphqlApiType.METADATA,
request,
requestContext,
data,
);
}
private getRequestContext(request: Request): RequestContext {
const baseUrl = getServerUrl(
this.twentyConfigService.get('SERVER_URL'),
`${request.protocol}://${request.get('host')}`,
);
return {
body: request.body,
baseUrl: baseUrl,
path: request.url,
headers: request.headers,
};
}
}