Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion examples/node/src/rest/api/v2010/account.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
*/

import { inspect, InspectOptions } from "util";

import Page, { TwilioResponsePayload } from "../../../base/Page";
import Response from "../../../http/response";
import V2010 from "../V2010";
Expand Down Expand Up @@ -115,6 +116,7 @@ export interface AccountListInstancePageOptions {
dateCreatedAfter?: Date;
/** */
pageSize?: number;

/** Page Number, this value is simply for client state */
pageNumber?: number;
/** PageToken provided by the API */
Expand Down Expand Up @@ -717,7 +719,6 @@ export function AccountListInstance(version: V2010): AccountListInstance {
method: "get",
uri: targetUrl,
});

let pagePromise = operationPromise.then(
(payload) =>
new AccountPage(instance._version, payload, instance._solution),
Expand Down
3 changes: 2 additions & 1 deletion examples/node/src/rest/flexApi/v1/credential/aws.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
*/

import { inspect, InspectOptions } from "util";

import Page, { TwilioResponsePayload } from "../../../../base/Page";
import Response from "../../../../http/response";
import V1 from "../../V1";
Expand Down Expand Up @@ -60,6 +61,7 @@ export interface AwsListInstanceOptions {
export interface AwsListInstancePageOptions {
/** */
pageSize?: number;

/** Page Number, this value is simply for client state */
pageNumber?: number;
/** PageToken provided by the API */
Expand Down Expand Up @@ -524,7 +526,6 @@ export function AwsListInstance(version: V1): AwsListInstance {
method: "get",
uri: targetUrl,
});

let pagePromise = operationPromise.then(
(payload) => new AwsPage(instance._version, payload, instance._solution),
);
Expand Down
3 changes: 2 additions & 1 deletion examples/node/src/rest/versionless/understand/assistant.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
*/

import { inspect, InspectOptions } from "util";

import Page, { TwilioResponsePayload } from "../../../base/Page";
import Response from "../../../http/response";
import Understand from "../Understand";
Expand Down Expand Up @@ -50,6 +51,7 @@ export interface AssistantListInstanceOptions {
export interface AssistantListInstancePageOptions {
/** How many resources to return in each list page. The default is 50, and the maximum is 1000. */
pageSize?: number;

/** Page Number, this value is simply for client state */
pageNumber?: number;
/** PageToken provided by the API */
Expand Down Expand Up @@ -201,7 +203,6 @@ export function AssistantListInstance(
method: "get",
uri: targetUrl,
});

let pagePromise = operationPromise.then(
(payload) =>
new AssistantPage(instance._version, payload, instance._solution),
Expand Down
22 changes: 20 additions & 2 deletions examples/test_spec/twilio_pagination_v1.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,21 @@ components:
name:
type: string
paths:
/v2/Services:
/v2/{accountSid}/Services:
servers:
- url: https://testparameter.twilio.com
get:
operationId: ListService
description: Retrieve a list of all Services
parameters:
- name: accountSid
in: path
description: Twilio Account SID that owns the Services
required: true
schema:
type: string
example: some_secret_account_sid

- name: pageSize
in: query
description: Maximum number of items to return in a single response
Expand All @@ -46,13 +54,23 @@ paths:
minimum: 1
maximum: 1000
example: 50

- name: pageToken
in: query
description: A URL-safe, base64-encoded token representing the page of results to return
required: false
schema:
type: string
example: "eyJwYWdlIjoyLCJxdWVyeSI6ImJvb2tzIn0="

- name: sortBy
in: query
description: Asc dec query param to sort results by a specific field
required: false
schema:
type: string
example: "desc"

security:
- accountSid_authToken: [ ]
responses:
Expand Down Expand Up @@ -92,4 +110,4 @@ paths:
nextToken:
type: string
description: Token to fetch the next page of results
example: "eyJwYWdlIjoyLCJxdWVyeSI6ImJvb2tzIn0="
example: "eyJwYWdlIjoyLCJxdWVyeSI6ImJvb2tzIn0="
2 changes: 1 addition & 1 deletion src/main/java/com/twilio/oai/TwilioNodeGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public void processOpenAPI(final OpenAPI openAPI) {
twilioCodegen.setDomain(domain);
twilioCodegen.setVersion(version);
twilioCodegen.setOutputDir(domain, version);

twilioCodegen.setIsV1ApiStandard(openAPI);
openAPI.getPaths().forEach(resourceTree::addResource);
resourceTree.getResources().forEach(resource -> resource.updateFamily(resourceTree));

Expand Down
6 changes: 3 additions & 3 deletions src/main/resources/twilio-node/api-single.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
{{#resources}}

import { inspect, InspectOptions } from "util";
{{#hasPaginationOperation}}
import Page, { TwilioResponsePayload } from "{{apiVersionPath}}/../../base/Page";
{{#hasPaginationOperation}}{{#isApiV1}}import TokenPage, { TokenPaginationPayload } from "{{apiVersionPath}}/../../base/TokenPage";{{/isApiV1}}{{^isApiV1}}
import Page, { TwilioResponsePayload } from "{{apiVersionPath}}/../../base/Page";{{/isApiV1}}
import Response from "{{apiVersionPath}}/../../http/response";
{{/hasPaginationOperation}}
import {{apiVersionClass}} from "{{apiVersionPath}}/{{apiVersionClass}}";
Expand Down Expand Up @@ -211,5 +211,5 @@ export function {{apiName}}ListInstance(version: {{apiVersionClass}}{{#listPathP
return instance;
}
{{^instancePath}}{{>responseModel}}{{/instancePath}}
{{#hasPaginationOperation}}{{>pagination}}{{/hasPaginationOperation}}
{{#hasPaginationOperation}}{{#isApiV1}}{{>tokenPagination}}{{/isApiV1}}{{^isApiV1}}{{>pagination}}{{/isApiV1}}{{/hasPaginationOperation}}
{{/resources}}
4 changes: 2 additions & 2 deletions src/main/resources/twilio-node/listOperationsOptions.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ export interface {{vendorExtensions.x-resource-name}}PageOptions {
{{#allParams}}
/** {{{description}}} */
"{{paramName}}"{{^required}}?{{/required}}: {{{dataType}}};
{{/allParams}}
{{/allParams}}{{^isApiV1}}
/** Page Number, this value is simply for client state */
pageNumber?: number;
/** PageToken provided by the API */
pageToken?: string;
pageToken?: string;{{/isApiV1}}
}
14 changes: 8 additions & 6 deletions src/main/resources/twilio-node/operation.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@
{{#queryParams}}{{>requestParam}}{{/queryParams}}
{{#formParams}}{{>requestParam}}{{/formParams}}
{{#bodyParam}}data = params{{/bodyParam}}
{{#vendorExtensions.x-is-read-operation}}
{{#vendorExtensions.x-is-read-operation}}{{^isApiV1}}
if (params.pageNumber !== undefined) data["Page"] = params.pageNumber;
if (params.pageToken !== undefined) data["PageToken"] = params.pageToken;
if (params.pageToken !== undefined) data["PageToken"] = params.pageToken;{{/isApiV1}}
{{/vendorExtensions.x-is-read-operation}}

{{#bodyParams}}if(headers === null || headers === undefined) {
Expand Down Expand Up @@ -75,7 +75,7 @@
operationPromise = operationPromise.then(payload => new {{instanceName}}(operationVersion, payload{{#vendorExtensions.x-is-context-operation}}{{#instancePathParams}}, instance._solution.{{paramName}}{{/instancePathParams}}{{/vendorExtensions.x-is-context-operation}}{{#vendorExtensions.x-is-list-operation}}{{#listPathParams}}, instance._solution.{{paramName}}{{/listPathParams}}{{/vendorExtensions.x-is-list-operation}}));
{{/vendorExtensions.x-is-delete-operation}}{{/vendorExtensions.x-is-read-operation}}
{{#vendorExtensions.x-is-read-operation}}
operationPromise = operationPromise.then(payload => new {{returnType}}(operationVersion, payload, instance._solution));
operationPromise = operationPromise.then(payload => new {{returnType}}(operationVersion, payload,{{#isApiV1}} instance._uri, data,{{/isApiV1}} instance._solution));
{{/vendorExtensions.x-is-read-operation}}

operationPromise = instance._version.setPromiseCallback(operationPromise,callback);
Expand All @@ -87,9 +87,11 @@
instance.list = instance._version.list;

instance.getPage = function getPage(targetUrl: string, callback?: (error: Error | null, items: {{returnType}}) => any): Promise<{{returnType}}> {
const operationPromise = instance._version._domain.twilio.request({method: "{{httpMethod}}", uri: targetUrl});

let pagePromise = operationPromise.then(payload => new {{returnType}}(instance._version, payload, instance._solution));
const operationPromise = instance._version._domain.twilio.request({method: "{{httpMethod}}", uri: targetUrl});{{#isApiV1}}
let data: any = {};
{{#queryParams}}{{>requestParam}}{{/queryParams}}
{{/isApiV1}}
let pagePromise = operationPromise.then(payload => new {{returnType}}(instance._version, payload,{{#isApiV1}} instance._uri, data,{{/isApiV1}} instance._solution));
pagePromise = instance._version.setPromiseCallback(pagePromise, callback);
return pagePromise;
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/twilio-node/responseModel.mustache
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{{#responseModel}}

interface {{apiName}}Payload extends {{^hasPaginationOperation}}{{apiName}}Resource {}{{/hasPaginationOperation}}{{#hasPaginationOperation}}TwilioResponsePayload {
interface {{apiName}}Payload extends {{^hasPaginationOperation}}{{apiName}}Resource {}{{/hasPaginationOperation}}{{#hasPaginationOperation}}{{#isApiV1}}TokenPaginationPayload{{/isApiV1}}{{^isApiV1}}TwilioResponsePayload{{/isApiV1}} {
{{recordKey}}: {{apiName}}Resource[];
}{{/hasPaginationOperation}}

Expand Down