svix
Version:
Svix webhooks API client and webhook verification library
202 lines (169 loc) • 6.42 kB
text/typescript
// this file is @generated
import { type EmptyResponse, EmptyResponseSerializer } from "../models/emptyResponse";
import {
type EndpointSecretRotateIn,
EndpointSecretRotateInSerializer,
} from "../models/endpointSecretRotateIn";
import {
type ListResponseStreamSinkOut,
ListResponseStreamSinkOutSerializer,
} from "../models/listResponseStreamSinkOut";
import type { Ordering } from "../models/ordering";
import { type SinkSecretOut, SinkSecretOutSerializer } from "../models/sinkSecretOut";
import {
type SinkTransformIn,
SinkTransformInSerializer,
} from "../models/sinkTransformIn";
import { type StreamSinkIn, StreamSinkInSerializer } from "../models/streamSinkIn";
import { type StreamSinkOut, StreamSinkOutSerializer } from "../models/streamSinkOut";
import {
type StreamSinkPatch,
StreamSinkPatchSerializer,
} from "../models/streamSinkPatch";
import { HttpMethod, SvixRequest, type SvixRequestContext } from "../request";
export interface StreamingSinkListOptions {
/** Limit the number of returned items */
limit?: number;
/** The iterator returned from a prior invocation */
iterator?: string | null;
/** The sorting order of the returned items */
order?: Ordering;
}
export interface StreamingSinkCreateOptions {
idempotencyKey?: string;
}
export interface StreamingSinkRotateSecretOptions {
idempotencyKey?: string;
}
export class StreamingSink {
public constructor(private readonly requestCtx: SvixRequestContext) {}
/** List of all the stream's sinks. */
public list(
streamId: string,
options?: StreamingSinkListOptions
): Promise<ListResponseStreamSinkOut> {
const request = new SvixRequest(HttpMethod.GET, "/api/v1/stream/{stream_id}/sink");
request.setPathParam("stream_id", streamId);
request.setQueryParams({
limit: options?.limit,
iterator: options?.iterator,
order: options?.order,
});
return request.send(
this.requestCtx,
ListResponseStreamSinkOutSerializer._fromJsonObject
);
}
/** Creates a new sink. */
public create(
streamId: string,
streamSinkIn: StreamSinkIn,
options?: StreamingSinkCreateOptions
): Promise<StreamSinkOut> {
const request = new SvixRequest(HttpMethod.POST, "/api/v1/stream/{stream_id}/sink");
request.setPathParam("stream_id", streamId);
request.setHeaderParam("idempotency-key", options?.idempotencyKey);
request.setBody(StreamSinkInSerializer._toJsonObject(streamSinkIn));
return request.send(this.requestCtx, StreamSinkOutSerializer._fromJsonObject);
}
/** Get a sink by id or uid. */
public get(streamId: string, sinkId: string): Promise<StreamSinkOut> {
const request = new SvixRequest(
HttpMethod.GET,
"/api/v1/stream/{stream_id}/sink/{sink_id}"
);
request.setPathParam("stream_id", streamId);
request.setPathParam("sink_id", sinkId);
return request.send(this.requestCtx, StreamSinkOutSerializer._fromJsonObject);
}
/** Update a sink. */
public update(
streamId: string,
sinkId: string,
streamSinkIn: StreamSinkIn
): Promise<StreamSinkOut> {
const request = new SvixRequest(
HttpMethod.PUT,
"/api/v1/stream/{stream_id}/sink/{sink_id}"
);
request.setPathParam("stream_id", streamId);
request.setPathParam("sink_id", sinkId);
request.setBody(StreamSinkInSerializer._toJsonObject(streamSinkIn));
return request.send(this.requestCtx, StreamSinkOutSerializer._fromJsonObject);
}
/** Delete a sink. */
public delete(streamId: string, sinkId: string): Promise<void> {
const request = new SvixRequest(
HttpMethod.DELETE,
"/api/v1/stream/{stream_id}/sink/{sink_id}"
);
request.setPathParam("stream_id", streamId);
request.setPathParam("sink_id", sinkId);
return request.sendNoResponseBody(this.requestCtx);
}
/** Partially update a sink. */
public patch(
streamId: string,
sinkId: string,
streamSinkPatch: StreamSinkPatch
): Promise<StreamSinkOut> {
const request = new SvixRequest(
HttpMethod.PATCH,
"/api/v1/stream/{stream_id}/sink/{sink_id}"
);
request.setPathParam("stream_id", streamId);
request.setPathParam("sink_id", sinkId);
request.setBody(StreamSinkPatchSerializer._toJsonObject(streamSinkPatch));
return request.send(this.requestCtx, StreamSinkOutSerializer._fromJsonObject);
}
/**
* Get the sink's signing secret (only supported for http sinks)
*
* This is used to verify the authenticity of the delivery.
*
* For more information please refer to [the consuming webhooks docs](https://docs.svix.com/consuming-webhooks/).
*/
public getSecret(streamId: string, sinkId: string): Promise<SinkSecretOut> {
const request = new SvixRequest(
HttpMethod.GET,
"/api/v1/stream/{stream_id}/sink/{sink_id}/secret"
);
request.setPathParam("stream_id", streamId);
request.setPathParam("sink_id", sinkId);
return request.send(this.requestCtx, SinkSecretOutSerializer._fromJsonObject);
}
/** Rotates the signing secret (only supported for http sinks). */
public rotateSecret(
streamId: string,
sinkId: string,
endpointSecretRotateIn: EndpointSecretRotateIn,
options?: StreamingSinkRotateSecretOptions
): Promise<EmptyResponse> {
const request = new SvixRequest(
HttpMethod.POST,
"/api/v1/stream/{stream_id}/sink/{sink_id}/secret/rotate"
);
request.setPathParam("stream_id", streamId);
request.setPathParam("sink_id", sinkId);
request.setHeaderParam("idempotency-key", options?.idempotencyKey);
request.setBody(
EndpointSecretRotateInSerializer._toJsonObject(endpointSecretRotateIn)
);
return request.send(this.requestCtx, EmptyResponseSerializer._fromJsonObject);
}
/** Set or unset the transformation code associated with this sink. */
public transformationPartialUpdate(
streamId: string,
sinkId: string,
sinkTransformIn: SinkTransformIn
): Promise<EmptyResponse> {
const request = new SvixRequest(
HttpMethod.PATCH,
"/api/v1/stream/{stream_id}/sink/{sink_id}/transformation"
);
request.setPathParam("stream_id", streamId);
request.setPathParam("sink_id", sinkId);
request.setBody(SinkTransformInSerializer._toJsonObject(sinkTransformIn));
return request.send(this.requestCtx, EmptyResponseSerializer._fromJsonObject);
}
}