/* tslint:disable */
/* eslint-disable */
/**
 * esa API v1
 * チームのナレッジ共有サービス[esa.io](https://esa.io/)のAPI v1の仕様書
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { Comment } from "./comment";
import { SharingUrls } from "./sharing-urls";
import { Stargazer } from "./stargazer";
import { User } from "./user";

/**
 * ユーザが作成した記事を表します。
 * @export
 * @interface Post
 */
export interface Post {
  /**
   * チーム内で記事を特定するためのIDです
   * @type {number}
   * @memberof Post
   */
  number: number;
  /**
   * 記事名です。タグやカテゴリー部分は含みません。
   * @type {string}
   * @memberof Post
   */
  name: string;
  /**
   * カテゴリとタグを含む、記事名です。
   * @type {string}
   * @memberof Post
   */
  full_name: string;
  /**
   * 記事がWIP(Working In Progress)状態かどうかを表します。
   * @type {boolean}
   * @memberof Post
   */
  wip: boolean;
  /**
   * Markdownで書かれた記事の本文です
   * @type {string}
   * @memberof Post
   */
  body_md: string;
  /**
   * HTMLに変換された記事の本文です。
   * @type {string}
   * @memberof Post
   */
  body_html: string;
  /**
   * 記事が作成された日時です
   * @type {string}
   * @memberof Post
   */
  created_at: string;
  /**
   * 記事更新時の変更メモです。
   * @type {string}
   * @memberof Post
   */
  message: string;
  /**
   * 記事のURLです。
   * @type {string}
   * @memberof Post
   */
  url: string;
  /**
   * 記事が更新された日時です。
   * @type {string}
   * @memberof Post
   */
  updated_at: string;
  /**
   * 記事に紐付けられたタグです。
   * @type {Array<string>}
   * @memberof Post
   */
  tags: Array<string>;
  /**
   * 記事が属するカテゴリです  設定されていない場合は`null`になります
   * @type {string}
   * @memberof Post
   */
  category: string | null;
  /**
   * 記事のリビジョン番号です。
   * @type {number}
   * @memberof Post
   */
  revision_number: number;
  /**
   * 記事を作成したユーザを表します。
   * @type {User}
   * @memberof Post
   */
  created_by: User;
  /**
   * 記事を最後に更新したユーザを表します。
   * @type {User}
   * @memberof Post
   */
  updated_by: User;
  /**
   * 記事の種別を表します
   * @type {string}
   * @memberof Post
   */
  kind: PostKindEnum;
  /**
   * 記事へのコメント数を表します
   * @type {number}
   * @memberof Post
   */
  comments_count: number;
  /**
   * 記事中のタスクの総数を表します
   * @type {number}
   * @memberof Post
   */
  tasks_count: number;
  /**
   * 記事中の完了済みのタスクの総数を表します
   * @type {number}
   * @memberof Post
   */
  done_tasks_count: number;
  /**
   * 記事にStarをしている人数を表します
   * @type {number}
   * @memberof Post
   */
  stargazers_count: number;
  /**
   * 記事をWatchしている人数を表します
   * @type {number}
   * @memberof Post
   */
  watchers_count: number;
  /**
   * ユーザーが記事をStarしているかどうかを表します
   * @type {boolean}
   * @memberof Post
   */
  star: boolean;
  /**
   * ユーザーが記事をWatchしているかどうかを表します
   * @type {boolean}
   * @memberof Post
   */
  watch: boolean;
  /**
   *
   * @type {SharingUrls}
   * @memberof Post
   */
  sharing_urls: SharingUrls | null;
  /**
   * 記事のコメント一覧を更新日の降順で返却します。
   * @type {Array<Comment>}
   * @memberof Post
   */
  comments?: Array<Comment>;
  /**
   * 指定された記事にStarをしたユーザ一覧です
   * @type {Array<Stargazer>}
   * @memberof Post
   */
  stargazers?: Array<Stargazer>;
}

/**
 * @export
 * @enum {string}
 */
export enum PostKindEnum {
  Stock = "stock",
  Flow = "flow",
}
