Source

types/ProjectTypes.ts

import { CollectionTypes } from "./CollectionTypes";

/**
 * @typedef {Object} ProjectResponse 
 * @property {string} status httpStatusCode for project data response
 * @property {ProjectResponseData} data Project data
 */
export interface ProjectResponse {
  status: string;
  data: ProjectResponseData[] | ProjectResponseData | undefined;
}

/**
 * @typedef {Object} ProjectResponseData
 * @property {id} id unique ID of project
 * @property {string} createdAt Created time of project
 * @property {string} updatedAt Updated time of project
 * @property {string} name Project name
 * @property {string} companyName Name of the company for partners / third party
 * @property {string} contactEmail Contact email to receive notifications regarding project
 * @property {string} collectionLimitExpiresAt Expiration date for collection limit
 * @property {string} collectionMonthlyLimit Maximum number of collections allowed to be created per month
 * @property {string} collectionRemaining Remaining number of collections allowed to create
 * @property {string} publicId unique public ID (UUID) to identify the project
 * @property {string} starkKey stark key of the owner of the project
 */
export interface ProjectResponseData {
  id: number,
  createdAt: string,
  updatedAt: string,
  name: string,
  companyName: string,
  contactEmail: string,
  collectionLimitExpiresAt?: string | null,
  collectionMonthlyLimit?: number,
  collectionRemaining?: number,
  publicId?: string,
  starkKey: string
}

/**
 * @typedef {Object} CollectionListResponseData
 * @property {id} id unique ID of project
 * @property {string} createdAt Created time of project
 * @property {string} updatedAt Updated time of project
 * @property {string} name Project name which would be coupled along with the your Collection
 * @property {string} companyName Name of the company for partners / third party which consumed Myria services
 * @property {string} contactEmail The email information for partners
 * @property {string} collectionLimitExpiresAt The email information for partners
 * @property {string} collectionMonthlyLimit Maximum number of collections allow to be created per month
 * @property {string} collectionRemaining Remaining number of collection allowed to create
 * @property {string} publicId unique public ID (UUID) to identify the project
 * @property {string} starkKey stark key of the owner of the project
 * @property {CollectionTypes[]} collections List of the collection data belong to this project
 */
export interface CollectionListResponseData extends ProjectResponseData {
  collections: CollectionTypes[];
}

/**
 * @typedef {Object} CreateProjectParams
 * @property {string} name Project name which would be coupled along with your Collection
 * @property {string} companyName Name of the company for partners / third party
 * @property {string} contactEmail The contact email to use for notifications regarding project
 * @property {string} starkKey Stark key of registered wallet user
 */
export interface CreateProjectParams {
  name: string;
  companyName: string;
  contactEmail: string;
  starkKey: string;
}

/**
 * @typedef {Object} CreateProjectParamsByAPIKey
 * @property {string} name Name of the project
 * @property {string} companyName Name of the company for partners / third party
 * @property {string} contactEmail Contact email
 * @property {string} apiKey Partner's API key
 * @property {string} myriaUserID Unique ID (uuid) of myria user
 */
export interface CreateProjectParamsByAPIKey {
  name: string;
  companyName: string;
  contactEmail: string;
  apiKey: string;
  myriaUserID: string;
}

/**
 * @typedef {Object} UpdateProjectParams
 * @property {string} id unique ID of project
 * @property {string} name Project name
 * @property {string} companyName Name of the company for partners / third party
 * @property {string} contactEmail Contact email address for notifications
 * @property {string} starkKey Stark key of registered wallet user
 */
export interface UpdateProjectParams {
  id: number;
  name: string;
  companyName: string;
  contactEmail: string;
  starkKey: string;
}

/**
 * @typedef {Object} UpdateProjectByAPIKey
 * @property {string} id unique ID of project
 * @property {string} name Project name
 * @property {string} companyName Name of the company for partners / third party
 * @property {string} contactEmail Contact email address for notifications
 * @property {string} apiKey Partner's API key
 * @property {string} myriaUserID Unique ID (uuid) of myria user
 */
export interface UpdateProjectByAPIKey {
  id: number;
  name: string;
  companyName: string;
  contactEmail: string;
  apiKey: string;
  myriaUserID: string;
}