2023-11-21 09:18:12 +01:00
|
|
|
import type { Entity } from '../types';
|
|
|
|
import type { ReleaseAction } from './release-actions';
|
|
|
|
import type { UserInfo } from '../types';
|
2023-11-17 16:59:01 +01:00
|
|
|
import { errors } from '@strapi/utils';
|
2023-12-13 15:59:37 +01:00
|
|
|
import type { SanitizedAdminUser } from '@strapi/admin/strapi-admin';
|
2023-11-17 16:59:01 +01:00
|
|
|
|
|
|
|
export interface Release extends Entity {
|
|
|
|
name: string;
|
2024-02-06 13:50:40 +01:00
|
|
|
releasedAt: string | null;
|
|
|
|
scheduledAt: string | null;
|
2023-11-21 09:18:12 +01:00
|
|
|
actions: ReleaseAction[];
|
|
|
|
}
|
|
|
|
|
2023-12-04 10:10:51 +01:00
|
|
|
export type Pagination = {
|
2023-11-21 09:18:12 +01:00
|
|
|
page: number;
|
|
|
|
pageSize: number;
|
|
|
|
pageCount: number;
|
|
|
|
total: number;
|
|
|
|
};
|
|
|
|
|
|
|
|
export interface ReleaseDataResponse extends Omit<Release, 'actions'> {
|
|
|
|
actions: { meta: { count: number } };
|
2024-02-05 14:02:53 +01:00
|
|
|
createdBy: SanitizedAdminUser;
|
2023-11-17 16:59:01 +01:00
|
|
|
}
|
|
|
|
|
2023-12-07 10:28:45 +01:00
|
|
|
export interface ReleaseForContentTypeEntryDataResponse extends Omit<Release, 'actions'> {
|
2023-12-14 12:38:05 +01:00
|
|
|
action: ReleaseAction;
|
2023-12-07 10:28:45 +01:00
|
|
|
}
|
|
|
|
|
2023-11-17 16:59:01 +01:00
|
|
|
/**
|
2023-11-21 09:18:12 +01:00
|
|
|
* GET /content-releases/ - Get all releases
|
2023-11-17 16:59:01 +01:00
|
|
|
*/
|
2023-11-21 09:18:12 +01:00
|
|
|
export declare namespace GetReleases {
|
2023-11-17 16:59:01 +01:00
|
|
|
export interface Request {
|
2023-11-21 09:18:12 +01:00
|
|
|
state: {
|
|
|
|
userAbility: {};
|
|
|
|
};
|
|
|
|
query?: Partial<Pick<Pagination, 'page' | 'pageSize'>>;
|
2023-11-17 16:59:01 +01:00
|
|
|
}
|
|
|
|
|
2023-11-23 11:15:29 +01:00
|
|
|
export interface Response {
|
|
|
|
data: ReleaseDataResponse[];
|
|
|
|
meta: {
|
2023-12-01 09:27:16 +01:00
|
|
|
pagination?: Pagination;
|
2023-11-23 11:15:29 +01:00
|
|
|
};
|
|
|
|
error?: errors.ApplicationError;
|
|
|
|
}
|
2023-11-17 16:59:01 +01:00
|
|
|
}
|
|
|
|
|
2023-12-07 10:28:45 +01:00
|
|
|
/**
|
|
|
|
* GET /content-releases/ - Get all releases for a given entry
|
|
|
|
*/
|
|
|
|
export declare namespace GetContentTypeEntryReleases {
|
|
|
|
export interface Request {
|
|
|
|
state: {
|
|
|
|
userAbility: {};
|
|
|
|
};
|
|
|
|
query: {
|
|
|
|
contentTypeUid: ReleaseAction['contentType'];
|
|
|
|
entryId: ReleaseAction['entry']['id'];
|
|
|
|
hasEntryAttached?: boolean;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface Response {
|
|
|
|
data: ReleaseForContentTypeEntryDataResponse[];
|
|
|
|
error?: errors.ApplicationError;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-11-17 16:59:01 +01:00
|
|
|
/**
|
2023-11-21 09:18:12 +01:00
|
|
|
* GET /content-releases/:id - Get a single release
|
2023-11-17 16:59:01 +01:00
|
|
|
*/
|
2023-11-21 09:18:12 +01:00
|
|
|
export declare namespace GetRelease {
|
2023-11-17 16:59:01 +01:00
|
|
|
export interface Request {
|
2023-11-21 09:18:12 +01:00
|
|
|
state: {
|
|
|
|
userAbility: {};
|
|
|
|
};
|
|
|
|
params: {
|
|
|
|
id: Release['id'];
|
|
|
|
};
|
2023-11-17 16:59:01 +01:00
|
|
|
}
|
|
|
|
|
2023-11-23 11:15:29 +01:00
|
|
|
export interface Response {
|
|
|
|
data: ReleaseDataResponse;
|
|
|
|
error?: errors.ApplicationError | errors.NotFoundError;
|
|
|
|
}
|
2023-11-21 09:18:12 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* POST /content-releases/ - Create a release
|
|
|
|
*/
|
|
|
|
export declare namespace CreateRelease {
|
|
|
|
export interface Request {
|
|
|
|
state: {
|
|
|
|
user: UserInfo;
|
|
|
|
};
|
|
|
|
body: {
|
|
|
|
name: string;
|
2024-02-06 13:50:40 +01:00
|
|
|
scheduledAt?: Date;
|
2023-11-21 09:18:12 +01:00
|
|
|
};
|
2023-11-17 16:59:01 +01:00
|
|
|
}
|
2023-11-21 09:18:12 +01:00
|
|
|
|
2023-11-23 11:15:29 +01:00
|
|
|
export interface Response {
|
|
|
|
data: ReleaseDataResponse;
|
|
|
|
error?: errors.ApplicationError | errors.ValidationError;
|
|
|
|
}
|
2023-11-17 16:59:01 +01:00
|
|
|
}
|
2023-11-21 13:06:24 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* PUT /content-releases/:id - Update a release
|
|
|
|
*/
|
|
|
|
export declare namespace UpdateRelease {
|
|
|
|
export interface Request {
|
|
|
|
state: {
|
|
|
|
user: UserInfo;
|
|
|
|
};
|
|
|
|
params: {
|
|
|
|
id: Release['id'];
|
|
|
|
};
|
|
|
|
body: {
|
|
|
|
name: string;
|
2024-02-08 14:24:12 +01:00
|
|
|
// When editing a release, scheduledAt always need to be explicitly sended, so it can be null to unschedule it
|
|
|
|
scheduledAt?: Date | null;
|
2023-11-21 13:06:24 +01:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2023-11-23 11:15:29 +01:00
|
|
|
export interface Response {
|
|
|
|
data: ReleaseDataResponse;
|
|
|
|
error?: errors.ApplicationError | errors.ValidationError;
|
|
|
|
}
|
|
|
|
}
|
2023-12-07 09:35:57 +01:00
|
|
|
|
2023-12-11 19:03:53 +01:00
|
|
|
/**
|
|
|
|
* DELETE /content-releases/:id - Delete a release
|
|
|
|
*/
|
|
|
|
export declare namespace DeleteRelease {
|
|
|
|
export interface Request {
|
|
|
|
state: {
|
|
|
|
user: UserInfo;
|
|
|
|
};
|
|
|
|
params: {
|
|
|
|
id: Release['id'];
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface Response {
|
|
|
|
data: ReleaseDataResponse;
|
|
|
|
error?: errors.ApplicationError | errors.NotFoundError;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-12-07 09:35:57 +01:00
|
|
|
/**
|
|
|
|
* POST /content-releases/:releaseId/publish - Publish a release
|
|
|
|
*/
|
|
|
|
export declare namespace PublishRelease {
|
|
|
|
export interface Request {
|
|
|
|
state: {
|
|
|
|
user: UserInfo;
|
|
|
|
};
|
|
|
|
params: {
|
|
|
|
id: Release['id'];
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface Response {
|
|
|
|
data: ReleaseDataResponse;
|
2024-01-30 17:57:25 +01:00
|
|
|
meta: {
|
|
|
|
totalEntries: number;
|
|
|
|
totalPublishedEntries: number;
|
|
|
|
totalUnpublishedEntries: number;
|
|
|
|
};
|
2023-12-07 09:35:57 +01:00
|
|
|
error?: errors.ApplicationError | errors.ValidationError;
|
|
|
|
}
|
|
|
|
}
|