intercom / Intercom-OpenAPI

An OpenAPI description for Intercom's REST API
MIT License
11 stars 8 forks source link

[Schema Inaccuracy] GET `/conversations` schema is inaccurate #166

Open haydenbleasel opened 1 month ago

haydenbleasel commented 1 month ago

Schema Inaccuracy

Example in spec shows that intended response is:

{
  type: "conversation.list",
  pages: object;
  total_count: number;
  conversations: Conversation[];
}

The 200 response schema points to a paginated_response which is:

{
  type: "conversation.list",
  pages: object;
  total_count: number;
  data: Conversation[];
}

Expected

When using GET /conversations, expecting to map over response.data. Instead, receiving response.conversations. Causes a TypeScript issue.

Reproduction Steps

  1. Produce a TS schema with:
npx openapi-typescript@6.7.6 https://raw.githubusercontent.com/intercom/Intercom-OpenAPI/main/descriptions/2.11/api.intercom.io.yaml -o ./src/types.d.ts
  1. Create a client with:
import createFetchClient from 'openapi-fetch';
import type { paths } from './types';

const client = createFetchClient<paths>({
    baseUrl: 'https://api.intercom.io',
    headers: {
      'Content-Type': 'application/json',
      Authorization: `Bearer ${accessToken}`,
      'Intercom-Version': '2.11',
    },
});
  1. Get the conversations with:
const conversations = await intercom.GET('/conversations');
  1. Use the provided schema:
console.log(conversations.data.data);
  1. Realize that conversations.data.data is undefined 😂
Eclairemoy commented 1 month ago

thanks Hayden we will take a look