Skip to main content

args_api/endpoint/repository/
create_repository.rs

1use serde::{Deserialize, Serialize};
2
3use super::default_visibility;
4use crate::{endpoint::Endpoint, resource::RepositoryResource};
5
6pub struct CreateRepository;
7
8impl Endpoint for CreateRepository {
9    const PATH: &'static str = "/repository/{owner}/{repo}";
10    const METHOD: http::Method = http::Method::POST;
11
12    type Request = CreateRepositoryRequest;
13    type Response = CreateRepositoryResponse;
14}
15
16#[derive(ApiRequest, Debug, Serialize, Deserialize)]
17pub struct CreateRepositoryRequest {
18    pub owner_type: String,
19
20    #[serde(default = "default_visibility")]
21    pub visibility: String,
22
23    #[serde(default, skip_serializing_if = "Option::is_none")]
24    pub description: Option<String>,
25
26    #[serde(default)]
27    pub init_readme: bool,
28
29    #[serde(default, skip_serializing_if = "Option::is_none")]
30    pub gitignore_template: Option<String>,
31
32    #[serde(default, skip_serializing_if = "Option::is_none")]
33    pub license_template: Option<String>,
34}
35
36pub type CreateRepositoryResponse = RepositoryResource;