@gojinko/api-client 2.29.0 → 2.29.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/errors.d.ts +2 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +6 -4
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/redaction.d.ts +10 -0
- package/dist/redaction.d.ts.map +1 -0
- package/dist/redaction.js +37 -0
- package/dist/redaction.js.map +1 -0
- package/dist/tools.d.ts +11 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +32 -0
- package/dist/tools.js.map +1 -1
- package/dist/types/devplatform.d.ts +14 -0
- package/dist/types/devplatform.d.ts.map +1 -1
- package/dist/types/generated.d.ts +357 -14
- package/dist/types/generated.d.ts.map +1 -1
- package/package.json +1 -1
- package/public-api.yaml +611 -104
|
@@ -2892,27 +2892,262 @@ export interface paths {
|
|
|
2892
2892
|
};
|
|
2893
2893
|
get?: never;
|
|
2894
2894
|
put?: never;
|
|
2895
|
-
/**
|
|
2895
|
+
/**
|
|
2896
|
+
* Submit a typed card or SPT payment with Idempotency-Key, or a legacy flat Shared Payment Token
|
|
2897
|
+
* @description Typed submissions require a jnk_ API key via X-API-Key (ApiKeyAuth) or Authorization: Bearer (BearerAuth), a tenant-bound booking scope, quoted_cart_id and Idempotency-Key, and return a PaymentAttemptOutcome (200 known outcome / 202 pending). OAuth/JWT bearer tokens are supported only for the legacy flat token body, which keeps its existing authorization response. Request bodies are limited to 16 KiB.
|
|
2898
|
+
*/
|
|
2896
2899
|
post: {
|
|
2897
2900
|
parameters: {
|
|
2898
2901
|
query?: never;
|
|
2899
|
-
header?:
|
|
2902
|
+
header?: {
|
|
2903
|
+
"Idempotency-Key"?: string;
|
|
2904
|
+
};
|
|
2900
2905
|
path?: never;
|
|
2901
2906
|
cookie?: never;
|
|
2902
2907
|
};
|
|
2903
2908
|
requestBody?: {
|
|
2904
2909
|
content: {
|
|
2905
|
-
"application/json": components["schemas"]["AgentPaymentSubmitRequest"];
|
|
2910
|
+
"application/json": components["schemas"]["TypedAgentPaymentSubmitRequest"] | components["schemas"]["AgentPaymentSubmitRequest"];
|
|
2911
|
+
};
|
|
2912
|
+
};
|
|
2913
|
+
responses: {
|
|
2914
|
+
/** @description Legacy authorization result or typed payment outcome */
|
|
2915
|
+
200: {
|
|
2916
|
+
headers: {
|
|
2917
|
+
[name: string]: unknown;
|
|
2918
|
+
};
|
|
2919
|
+
content: {
|
|
2920
|
+
"application/json": components["schemas"]["PaymentAttemptOutcome"] | components["schemas"]["AgentPaymentSubmitResponse"];
|
|
2921
|
+
};
|
|
2922
|
+
};
|
|
2923
|
+
/** @description Payment accepted and pending; poll the attempt after Retry-After. */
|
|
2924
|
+
202: {
|
|
2925
|
+
headers: {
|
|
2926
|
+
/** @description Polling delay supplied by the BFF. */
|
|
2927
|
+
"Retry-After"?: string;
|
|
2928
|
+
[name: string]: unknown;
|
|
2929
|
+
};
|
|
2930
|
+
content: {
|
|
2931
|
+
"application/json": components["schemas"]["PaymentAttemptOutcome"];
|
|
2932
|
+
};
|
|
2933
|
+
};
|
|
2934
|
+
/** @description Payment credential format or validity refusal. **`credential_format_invalid`** — The typed payment body or Idempotency-Key has an invalid format. Correct the named field and resubmit with a valid Idempotency-Key. **`payment_credential_invalid`** — The payment credential is invalid. Follow recovery.action and supply a replacement credential when required. **`BAD_REQUEST`** — The request was malformed or failed validation. Fix the request as the message describes; retrying it unchanged cannot succeed. */
|
|
2935
|
+
400: {
|
|
2936
|
+
headers: {
|
|
2937
|
+
[name: string]: unknown;
|
|
2938
|
+
};
|
|
2939
|
+
content: {
|
|
2940
|
+
"application/json": components["schemas"]["PaymentRefusalResponse"];
|
|
2941
|
+
};
|
|
2942
|
+
};
|
|
2943
|
+
/** @description Authentication required */
|
|
2944
|
+
401: {
|
|
2945
|
+
headers: {
|
|
2946
|
+
[name: string]: unknown;
|
|
2947
|
+
};
|
|
2948
|
+
content: {
|
|
2949
|
+
/**
|
|
2950
|
+
* @example {
|
|
2951
|
+
* "error": {
|
|
2952
|
+
* "code": "AUTH_REQUIRED",
|
|
2953
|
+
* "message": "Invalid or expired API key.",
|
|
2954
|
+
* "doc_url": "https://docs.gojinko.com/api-reference/authentication"
|
|
2955
|
+
* }
|
|
2956
|
+
* }
|
|
2957
|
+
*/
|
|
2958
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
2959
|
+
};
|
|
2960
|
+
};
|
|
2961
|
+
/** @description Payment required — organization balance exhausted */
|
|
2962
|
+
402: {
|
|
2963
|
+
headers: {
|
|
2964
|
+
[name: string]: unknown;
|
|
2965
|
+
};
|
|
2966
|
+
content: {
|
|
2967
|
+
/**
|
|
2968
|
+
* @example {
|
|
2969
|
+
* "error": {
|
|
2970
|
+
* "code": "PAYMENT_REQUIRED",
|
|
2971
|
+
* "message": "Insufficient balance — this call costs $0.0150 and your organization has $0.0000 available. Top up at https://dashboard.gojinko.com/developers/billing/topup",
|
|
2972
|
+
* "doc_url": "https://docs.gojinko.com/concepts/errors"
|
|
2973
|
+
* }
|
|
2974
|
+
* }
|
|
2975
|
+
*/
|
|
2976
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
2977
|
+
};
|
|
2978
|
+
};
|
|
2979
|
+
/** @description This payment type is not enabled. **`payment_type_not_enabled`** — This payment type is not enabled for the caller. Choose a type advertised in accepted_payment_types or contact support. */
|
|
2980
|
+
403: {
|
|
2981
|
+
headers: {
|
|
2982
|
+
[name: string]: unknown;
|
|
2983
|
+
};
|
|
2984
|
+
content: {
|
|
2985
|
+
"application/json": components["schemas"]["PaymentRefusalResponse"];
|
|
2986
|
+
};
|
|
2987
|
+
};
|
|
2988
|
+
/** @description Resource not found */
|
|
2989
|
+
404: {
|
|
2990
|
+
headers: {
|
|
2991
|
+
[name: string]: unknown;
|
|
2992
|
+
};
|
|
2993
|
+
content: {
|
|
2994
|
+
/**
|
|
2995
|
+
* @example {
|
|
2996
|
+
* "error": {
|
|
2997
|
+
* "code": "NOT_FOUND",
|
|
2998
|
+
* "message": "Resource not found.",
|
|
2999
|
+
* "doc_url": "https://docs.gojinko.com/concepts/errors"
|
|
3000
|
+
* }
|
|
3001
|
+
* }
|
|
3002
|
+
*/
|
|
3003
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
3004
|
+
};
|
|
3005
|
+
};
|
|
3006
|
+
/** @description Payment submission conflicts with an existing attempt. **`trip_owned_by_other_payment`** — Another payment attempt owns this trip. Read the existing attempt and follow its recovery action before paying again. **`idempotency_key_reused`** — The idempotency key was already used for a different submission. Reuse the original request with this key, or use a new key for a new submission. **`attempt_in_progress`** — A payment attempt is already in progress. Poll the existing attempt and follow recovery.action. **`attempt_terminal`** — This payment attempt has reached a terminal state. Read its outcome and follow recovery.action before starting another attempt. */
|
|
3007
|
+
409: {
|
|
3008
|
+
headers: {
|
|
3009
|
+
[name: string]: unknown;
|
|
3010
|
+
};
|
|
3011
|
+
content: {
|
|
3012
|
+
"application/json": components["schemas"]["PaymentRefusalResponse"];
|
|
3013
|
+
};
|
|
3014
|
+
};
|
|
3015
|
+
/** @description The locked quote has expired, so nothing was redeemed and no payment object was created — or the resource the request names is gone. Tell the two apart by `error.code`. **`QUOTE_EXPIRED`** — The locked quote behind this checkout passed its `expires_at`, so payment was refused before any payment object was created. Call `POST /v1/checkout` again on the same trip — it re-quotes — then mint a new Shared Payment Token against the new `agent_spt_params` and submit that. Nothing was charged. **`GONE`** — The resource this request names existed and no longer does. Re-acquire it — search again, or check out again to re-quote — then retry with the new identifier. Repeating this request with the same one cannot succeed. **`quote_expired`** — The quoted cart has expired; the typed payment was refused. Call checkout again and submit against the new quoted_cart_id. */
|
|
3016
|
+
410: {
|
|
3017
|
+
headers: {
|
|
3018
|
+
[name: string]: unknown;
|
|
3019
|
+
};
|
|
3020
|
+
content: {
|
|
3021
|
+
/**
|
|
3022
|
+
* @example {
|
|
3023
|
+
* "error": {
|
|
3024
|
+
* "code": "QUOTE_EXPIRED",
|
|
3025
|
+
* "message": "The quote behind this checkout expired at 2026-09-04T12:39:56Z.",
|
|
3026
|
+
* "doc_url": "https://docs.gojinko.com/concepts/errors"
|
|
3027
|
+
* },
|
|
3028
|
+
* "expires_at": "2026-09-04T12:39:56Z",
|
|
3029
|
+
* "quoted_cart_id": 2097152
|
|
3030
|
+
* }
|
|
3031
|
+
*/
|
|
3032
|
+
"application/json": components["schemas"]["QuoteExpiredResponse"] | components["schemas"]["ErrorResponse"] | components["schemas"]["PaymentRefusalResponse"];
|
|
3033
|
+
};
|
|
3034
|
+
};
|
|
3035
|
+
/** @description Validation error */
|
|
3036
|
+
422: {
|
|
3037
|
+
headers: {
|
|
3038
|
+
[name: string]: unknown;
|
|
3039
|
+
};
|
|
3040
|
+
content: {
|
|
3041
|
+
/**
|
|
3042
|
+
* @example {
|
|
3043
|
+
* "error": {
|
|
3044
|
+
* "code": "BAD_REQUEST",
|
|
3045
|
+
* "message": "origins: origins is required; trip_type: trip_type is required",
|
|
3046
|
+
* "doc_url": "https://docs.gojinko.com/concepts/errors"
|
|
3047
|
+
* }
|
|
3048
|
+
* }
|
|
3049
|
+
*/
|
|
3050
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
3051
|
+
};
|
|
3052
|
+
};
|
|
3053
|
+
/** @description Rate limit or quota exceeded */
|
|
3054
|
+
429: {
|
|
3055
|
+
headers: {
|
|
3056
|
+
[name: string]: unknown;
|
|
3057
|
+
};
|
|
3058
|
+
content: {
|
|
3059
|
+
/**
|
|
3060
|
+
* @example {
|
|
3061
|
+
* "error": {
|
|
3062
|
+
* "code": "RATE_LIMITED",
|
|
3063
|
+
* "message": "Rate limit or quota exceeded.",
|
|
3064
|
+
* "doc_url": "https://docs.gojinko.com/concepts/errors"
|
|
3065
|
+
* }
|
|
3066
|
+
* }
|
|
3067
|
+
*/
|
|
3068
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
3069
|
+
};
|
|
3070
|
+
};
|
|
3071
|
+
/** @description The travel provider rejected the request, or an upstream call failed */
|
|
3072
|
+
502: {
|
|
3073
|
+
headers: {
|
|
3074
|
+
[name: string]: unknown;
|
|
3075
|
+
};
|
|
3076
|
+
content: {
|
|
3077
|
+
/**
|
|
3078
|
+
* @example {
|
|
3079
|
+
* "error": {
|
|
3080
|
+
* "code": "UPSTREAM_REJECTED",
|
|
3081
|
+
* "message": "sabre-rest BargainFinderMaxRQ failed with status 400: 27131 - Number of connection locations exceeds maximum allowed",
|
|
3082
|
+
* "doc_url": "https://docs.gojinko.com/concepts/errors"
|
|
3083
|
+
* }
|
|
3084
|
+
* }
|
|
3085
|
+
*/
|
|
3086
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
3087
|
+
};
|
|
3088
|
+
};
|
|
3089
|
+
/** @description Payment temporarily unavailable. **`temporarily_unavailable`** — Payment submission is temporarily unavailable. Wait for Retry-After when provided and follow recovery.action. */
|
|
3090
|
+
503: {
|
|
3091
|
+
headers: {
|
|
3092
|
+
[name: string]: unknown;
|
|
3093
|
+
};
|
|
3094
|
+
content: {
|
|
3095
|
+
"application/json": components["schemas"]["PaymentRefusalResponse"];
|
|
3096
|
+
};
|
|
3097
|
+
};
|
|
3098
|
+
/** @description The travel provider did not answer in time */
|
|
3099
|
+
504: {
|
|
3100
|
+
headers: {
|
|
3101
|
+
[name: string]: unknown;
|
|
3102
|
+
};
|
|
3103
|
+
content: {
|
|
3104
|
+
/**
|
|
3105
|
+
* @example {
|
|
3106
|
+
* "error": {
|
|
3107
|
+
* "code": "UPSTREAM_TIMEOUT",
|
|
3108
|
+
* "message": "sabre-rest BargainFinderMaxRQ timed out after 30s",
|
|
3109
|
+
* "doc_url": "https://docs.gojinko.com/concepts/errors"
|
|
3110
|
+
* }
|
|
3111
|
+
* }
|
|
3112
|
+
*/
|
|
3113
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
3114
|
+
};
|
|
3115
|
+
};
|
|
3116
|
+
};
|
|
3117
|
+
};
|
|
3118
|
+
delete?: never;
|
|
3119
|
+
options?: never;
|
|
3120
|
+
head?: never;
|
|
3121
|
+
patch?: never;
|
|
3122
|
+
trace?: never;
|
|
3123
|
+
};
|
|
3124
|
+
"/v1/trip/{trip_id}/payment_attempts/{payment_attempt_id}": {
|
|
3125
|
+
parameters: {
|
|
3126
|
+
query?: never;
|
|
3127
|
+
header?: never;
|
|
3128
|
+
path?: never;
|
|
3129
|
+
cookie?: never;
|
|
3130
|
+
};
|
|
3131
|
+
/** Read a payment attempt outcome */
|
|
3132
|
+
get: {
|
|
3133
|
+
parameters: {
|
|
3134
|
+
query?: never;
|
|
3135
|
+
header?: never;
|
|
3136
|
+
path: {
|
|
3137
|
+
trip_id: string;
|
|
3138
|
+
payment_attempt_id: string;
|
|
2906
3139
|
};
|
|
3140
|
+
cookie?: never;
|
|
2907
3141
|
};
|
|
3142
|
+
requestBody?: never;
|
|
2908
3143
|
responses: {
|
|
2909
|
-
/** @description
|
|
3144
|
+
/** @description Payment attempt outcome */
|
|
2910
3145
|
200: {
|
|
2911
3146
|
headers: {
|
|
2912
3147
|
[name: string]: unknown;
|
|
2913
3148
|
};
|
|
2914
3149
|
content: {
|
|
2915
|
-
"application/json": components["schemas"]["
|
|
3150
|
+
"application/json": components["schemas"]["PaymentAttemptOutcome"];
|
|
2916
3151
|
};
|
|
2917
3152
|
};
|
|
2918
3153
|
/** @description Bad request */
|
|
@@ -2969,6 +3204,15 @@ export interface paths {
|
|
|
2969
3204
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
2970
3205
|
};
|
|
2971
3206
|
};
|
|
3207
|
+
/** @description Payment attempt access forbidden. **`FORBIDDEN`** — The credential is valid, and this request is refused anyway. Do not rotate the key — it is working. Check that it is entitled to this operation, and on this environment. */
|
|
3208
|
+
403: {
|
|
3209
|
+
headers: {
|
|
3210
|
+
[name: string]: unknown;
|
|
3211
|
+
};
|
|
3212
|
+
content: {
|
|
3213
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
3214
|
+
};
|
|
3215
|
+
};
|
|
2972
3216
|
/** @description Resource not found */
|
|
2973
3217
|
404: {
|
|
2974
3218
|
headers: {
|
|
@@ -3005,7 +3249,7 @@ export interface paths {
|
|
|
3005
3249
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
3006
3250
|
};
|
|
3007
3251
|
};
|
|
3008
|
-
/** @description The
|
|
3252
|
+
/** @description The resource this request names no longer exists */
|
|
3009
3253
|
410: {
|
|
3010
3254
|
headers: {
|
|
3011
3255
|
[name: string]: unknown;
|
|
@@ -3014,15 +3258,13 @@ export interface paths {
|
|
|
3014
3258
|
/**
|
|
3015
3259
|
* @example {
|
|
3016
3260
|
* "error": {
|
|
3017
|
-
* "code": "
|
|
3018
|
-
* "message": "The
|
|
3261
|
+
* "code": "GONE",
|
|
3262
|
+
* "message": "The resource no longer exists.",
|
|
3019
3263
|
* "doc_url": "https://docs.gojinko.com/concepts/errors"
|
|
3020
|
-
* }
|
|
3021
|
-
* "expires_at": "2026-09-04T12:39:56Z",
|
|
3022
|
-
* "quoted_cart_id": 2097152
|
|
3264
|
+
* }
|
|
3023
3265
|
* }
|
|
3024
3266
|
*/
|
|
3025
|
-
"application/json": components["schemas"]["
|
|
3267
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
3026
3268
|
};
|
|
3027
3269
|
};
|
|
3028
3270
|
/** @description Validation error */
|
|
@@ -3119,6 +3361,8 @@ export interface paths {
|
|
|
3119
3361
|
};
|
|
3120
3362
|
};
|
|
3121
3363
|
};
|
|
3364
|
+
put?: never;
|
|
3365
|
+
post?: never;
|
|
3122
3366
|
delete?: never;
|
|
3123
3367
|
options?: never;
|
|
3124
3368
|
head?: never;
|
|
@@ -11584,7 +11828,7 @@ export interface components {
|
|
|
11584
11828
|
* @example BAD_REQUEST
|
|
11585
11829
|
* @enum {string}
|
|
11586
11830
|
*/
|
|
11587
|
-
code: "AUTH_REQUIRED" | "PAYMENT_REQUIRED" | "RATE_LIMITED" | "BAD_REQUEST" | "FORBIDDEN" | "NOT_FOUND" | "CONFLICT" | "GONE" | "QUOTE_EXPIRED" | "TRIP_EXPIRED" | "TRIP_STATE_CONFLICT" | "OFFER_EXPIRED" | "OFFER_UNAVAILABLE" | "MISSING_CUSTOMER_DETAILS" | "CURRENCY_UNSUPPORTED" | "HOTEL_NAME_LOW_CONFIDENCE" | "DESTINATION_LOW_CONFIDENCE" | "UPSTREAM_REJECTED" | "UPSTREAM_UNAVAILABLE" | "UPSTREAM_TIMEOUT" | "UPSTREAM_ERROR" | "INTERNAL";
|
|
11831
|
+
code: "credential_format_invalid" | "payment_type_not_enabled" | "payment_credential_invalid" | "trip_owned_by_other_payment" | "idempotency_key_reused" | "attempt_in_progress" | "quote_expired" | "attempt_terminal" | "temporarily_unavailable" | "AUTH_REQUIRED" | "PAYMENT_REQUIRED" | "RATE_LIMITED" | "BAD_REQUEST" | "FORBIDDEN" | "NOT_FOUND" | "CONFLICT" | "GONE" | "QUOTE_EXPIRED" | "TRIP_EXPIRED" | "TRIP_STATE_CONFLICT" | "OFFER_EXPIRED" | "OFFER_UNAVAILABLE" | "MISSING_CUSTOMER_DETAILS" | "CURRENCY_UNSUPPORTED" | "HOTEL_NAME_LOW_CONFIDENCE" | "DESTINATION_LOW_CONFIDENCE" | "UPSTREAM_REJECTED" | "UPSTREAM_UNAVAILABLE" | "UPSTREAM_TIMEOUT" | "UPSTREAM_ERROR" | "INTERNAL";
|
|
11588
11832
|
message: string;
|
|
11589
11833
|
doc_url?: string;
|
|
11590
11834
|
};
|
|
@@ -12047,7 +12291,7 @@ export interface components {
|
|
|
12047
12291
|
* @example BAD_REQUEST
|
|
12048
12292
|
* @enum {string}
|
|
12049
12293
|
*/
|
|
12050
|
-
code: "AUTH_REQUIRED" | "PAYMENT_REQUIRED" | "RATE_LIMITED" | "BAD_REQUEST" | "FORBIDDEN" | "NOT_FOUND" | "CONFLICT" | "GONE" | "QUOTE_EXPIRED" | "TRIP_EXPIRED" | "TRIP_STATE_CONFLICT" | "OFFER_EXPIRED" | "OFFER_UNAVAILABLE" | "MISSING_CUSTOMER_DETAILS" | "CURRENCY_UNSUPPORTED" | "HOTEL_NAME_LOW_CONFIDENCE" | "DESTINATION_LOW_CONFIDENCE" | "UPSTREAM_REJECTED" | "UPSTREAM_UNAVAILABLE" | "UPSTREAM_TIMEOUT" | "UPSTREAM_ERROR" | "INTERNAL";
|
|
12294
|
+
code: "credential_format_invalid" | "payment_type_not_enabled" | "payment_credential_invalid" | "trip_owned_by_other_payment" | "idempotency_key_reused" | "attempt_in_progress" | "quote_expired" | "attempt_terminal" | "temporarily_unavailable" | "AUTH_REQUIRED" | "PAYMENT_REQUIRED" | "RATE_LIMITED" | "BAD_REQUEST" | "FORBIDDEN" | "NOT_FOUND" | "CONFLICT" | "GONE" | "QUOTE_EXPIRED" | "TRIP_EXPIRED" | "TRIP_STATE_CONFLICT" | "OFFER_EXPIRED" | "OFFER_UNAVAILABLE" | "MISSING_CUSTOMER_DETAILS" | "CURRENCY_UNSUPPORTED" | "HOTEL_NAME_LOW_CONFIDENCE" | "DESTINATION_LOW_CONFIDENCE" | "UPSTREAM_REJECTED" | "UPSTREAM_UNAVAILABLE" | "UPSTREAM_TIMEOUT" | "UPSTREAM_ERROR" | "INTERNAL";
|
|
12051
12295
|
message: string;
|
|
12052
12296
|
doc_url?: string;
|
|
12053
12297
|
};
|
|
@@ -12722,6 +12966,46 @@ export interface components {
|
|
|
12722
12966
|
};
|
|
12723
12967
|
intent?: components["schemas"]["IntentInput"];
|
|
12724
12968
|
};
|
|
12969
|
+
PaymentAttemptOutcome: {
|
|
12970
|
+
payment_attempt_id: string;
|
|
12971
|
+
trip_id: string;
|
|
12972
|
+
quoted_cart_id: number;
|
|
12973
|
+
fulfillment_cart_id?: number;
|
|
12974
|
+
/** @enum {string} */
|
|
12975
|
+
payment_status: "not_started" | "pending" | "requires_authentication" | "authorized" | "captured" | "declined" | "cancelling" | "cancelled" | "expired" | "failed";
|
|
12976
|
+
booking_status: string;
|
|
12977
|
+
booking_ref?: string;
|
|
12978
|
+
payment_error: {
|
|
12979
|
+
/** @enum {string} */
|
|
12980
|
+
code: "credential_format_invalid" | "payment_type_not_enabled" | "payment_credential_invalid" | "trip_owned_by_other_payment" | "idempotency_key_reused" | "attempt_in_progress" | "card_declined" | "payment_credential_rejected" | "authentication_required" | "authentication_failed" | "authentication_abandoned" | "quote_expired" | "attempt_terminal" | "payment_outcome_unknown" | "fulfillment_dispatch_delayed" | "reconciliation_required" | "temporarily_unavailable";
|
|
12981
|
+
message: string;
|
|
12982
|
+
} | null;
|
|
12983
|
+
recovery: {
|
|
12984
|
+
/** @enum {string} */
|
|
12985
|
+
action: "poll" | "authenticate" | "retry_same_key" | "retry_new_key" | "recheckout" | "contact_support" | "stop";
|
|
12986
|
+
replacement_credential_required: boolean;
|
|
12987
|
+
};
|
|
12988
|
+
/** @enum {string} */
|
|
12989
|
+
recovery_status: "automatic" | "manual_review";
|
|
12990
|
+
/** Format: date-time */
|
|
12991
|
+
quote_expires_at?: string;
|
|
12992
|
+
retry_after_seconds?: number;
|
|
12993
|
+
authentication?: {
|
|
12994
|
+
url: string;
|
|
12995
|
+
/** Format: date-time */
|
|
12996
|
+
expires_at: string;
|
|
12997
|
+
};
|
|
12998
|
+
money?: {
|
|
12999
|
+
authorized?: components["schemas"]["Money"];
|
|
13000
|
+
captured?: components["schemas"]["Money"];
|
|
13001
|
+
released?: components["schemas"]["Money"];
|
|
13002
|
+
refunded?: components["schemas"]["Money"];
|
|
13003
|
+
externally_reimbursed?: components["schemas"]["Money"];
|
|
13004
|
+
/** @enum {string} */
|
|
13005
|
+
resolution_status?: "pending" | "resolved" | "manual_review";
|
|
13006
|
+
refund_reference?: string;
|
|
13007
|
+
};
|
|
13008
|
+
};
|
|
12725
13009
|
BookingRef: {
|
|
12726
13010
|
/** @example itm_4b91c2 */
|
|
12727
13011
|
item_id?: string;
|
|
@@ -12756,6 +13040,7 @@ export interface components {
|
|
|
12756
13040
|
hotel_id?: string;
|
|
12757
13041
|
};
|
|
12758
13042
|
GetTripResponse: {
|
|
13043
|
+
payment_attempt?: components["schemas"]["PaymentAttemptOutcome"];
|
|
12759
13044
|
/** @example trip_1048576 */
|
|
12760
13045
|
trip_id: string;
|
|
12761
13046
|
/**
|
|
@@ -12877,6 +13162,18 @@ export interface components {
|
|
|
12877
13162
|
expires_at?: string;
|
|
12878
13163
|
};
|
|
12879
13164
|
CheckoutResponse: {
|
|
13165
|
+
quoted_cart_id: number;
|
|
13166
|
+
accepted_payment_types: {
|
|
13167
|
+
/** @enum {string} */
|
|
13168
|
+
type: "spt" | "card";
|
|
13169
|
+
card_kinds?: ("customer_card" | "vcc")[];
|
|
13170
|
+
requires: {
|
|
13171
|
+
headers: string[];
|
|
13172
|
+
fields: string[];
|
|
13173
|
+
};
|
|
13174
|
+
/** @enum {string} */
|
|
13175
|
+
authentication: "customer_handoff" | "unavailable";
|
|
13176
|
+
}[];
|
|
12880
13177
|
/** @example cs_1048576 */
|
|
12881
13178
|
session_id?: string;
|
|
12882
13179
|
/** @example https://book.gojinko.com/checkout?sid=1048576 */
|
|
@@ -12921,6 +13218,18 @@ export interface components {
|
|
|
12921
13218
|
checkout_url?: string;
|
|
12922
13219
|
recap_token?: string;
|
|
12923
13220
|
};
|
|
13221
|
+
PaymentRefusalResponse: components["schemas"]["ErrorResponse"] & {
|
|
13222
|
+
payment_error?: {
|
|
13223
|
+
/** @enum {string} */
|
|
13224
|
+
code: "credential_format_invalid" | "payment_type_not_enabled" | "payment_credential_invalid" | "trip_owned_by_other_payment" | "idempotency_key_reused" | "attempt_in_progress" | "card_declined" | "payment_credential_rejected" | "authentication_required" | "authentication_failed" | "authentication_abandoned" | "quote_expired" | "attempt_terminal" | "payment_outcome_unknown" | "fulfillment_dispatch_delayed" | "reconciliation_required" | "temporarily_unavailable";
|
|
13225
|
+
message: string;
|
|
13226
|
+
} | null;
|
|
13227
|
+
recovery?: {
|
|
13228
|
+
/** @enum {string} */
|
|
13229
|
+
action: "poll" | "authenticate" | "retry_same_key" | "retry_new_key" | "recheckout" | "contact_support" | "stop";
|
|
13230
|
+
replacement_credential_required: boolean;
|
|
13231
|
+
};
|
|
13232
|
+
};
|
|
12924
13233
|
QuoteExpiredResponse: {
|
|
12925
13234
|
error: {
|
|
12926
13235
|
/** @enum {string} */
|
|
@@ -12939,6 +13248,40 @@ export interface components {
|
|
|
12939
13248
|
*/
|
|
12940
13249
|
quoted_cart_id?: number;
|
|
12941
13250
|
};
|
|
13251
|
+
TypedAgentPaymentSubmitRequest: {
|
|
13252
|
+
trip_id: string;
|
|
13253
|
+
quoted_cart_id: number;
|
|
13254
|
+
payment: {
|
|
13255
|
+
/** @enum {string} */
|
|
13256
|
+
type: "spt";
|
|
13257
|
+
shared_payment_token: string;
|
|
13258
|
+
} | {
|
|
13259
|
+
/** @enum {string} */
|
|
13260
|
+
type: "card";
|
|
13261
|
+
/** @enum {string} */
|
|
13262
|
+
card_kind: "customer_card" | "vcc";
|
|
13263
|
+
/** @description 12–19 digits after removing spaces, with a valid Luhn checksum. Forwarded unchanged. */
|
|
13264
|
+
number: string;
|
|
13265
|
+
exp_month: number;
|
|
13266
|
+
/** @description Four-digit expiry year, at least the current UTC year. */
|
|
13267
|
+
exp_year: number;
|
|
13268
|
+
cvc: string;
|
|
13269
|
+
billing_details?: {
|
|
13270
|
+
name?: string;
|
|
13271
|
+
/** Format: email */
|
|
13272
|
+
email?: string;
|
|
13273
|
+
phone?: string;
|
|
13274
|
+
address?: {
|
|
13275
|
+
line1?: string;
|
|
13276
|
+
line2?: string;
|
|
13277
|
+
city?: string;
|
|
13278
|
+
state?: string;
|
|
13279
|
+
postal_code?: string;
|
|
13280
|
+
country?: string;
|
|
13281
|
+
};
|
|
13282
|
+
};
|
|
13283
|
+
};
|
|
13284
|
+
};
|
|
12942
13285
|
AgentPaymentSubmitRequest: {
|
|
12943
13286
|
/** @example trip_1048576 */
|
|
12944
13287
|
trip_id: string;
|