diff --git a/Makefile b/Makefile index b26c3c9..653b7ac 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ BINARY_PATH=bin/$(BINARY_NAME) # API/Code generation variables API_PATH=$(GO_MODULE)/api/project/v1 DESIGN_MODULE=$(API_PATH)/design -GOA_VERSION=v3 +GOA_VERSION=v3.22.6 GO_FILES=$(shell find . -name '*.go' -not -path './api/project/v1/gen/*' -not -path './vendor/*') # Build variables @@ -69,7 +69,7 @@ help: deps: @echo "==> Installing dependencies..." go mod download - go install goa.design/goa/$(GOA_VERSION)/cmd/goa@latest + go install goa.design/goa/v3/cmd/goa@$(GOA_VERSION) @command -v golangci-lint >/dev/null 2>&1 || { \ echo "==> Installing golangci-lint..."; \ go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest; \ diff --git a/api/project/v1/gen/http/cli/lfx_v2_project_service/cli.go b/api/project/v1/gen/http/cli/lfx_v2_project_service/cli.go index 2e224f8..723b33d 100644 --- a/api/project/v1/gen/http/cli/lfx_v2_project_service/cli.go +++ b/api/project/v1/gen/http/cli/lfx_v2_project_service/cli.go @@ -1,4 +1,4 @@ -// Code generated by goa v3.21.1, DO NOT EDIT. +// Code generated by goa v3.22.6, DO NOT EDIT. // // lfx-v2-project-service HTTP client CLI support package // @@ -23,14 +23,15 @@ import ( // UsageCommands returns the set of commands and sub-commands using the format // // command (subcommand1|subcommand2|...) -func UsageCommands() string { - return `project-service (get-projects|create-project|get-one-project-base|get-one-project-settings|update-project-base|update-project-settings|delete-project|readyz|livez) -` +func UsageCommands() []string { + return []string{ + "project-service (get-projects|create-project|get-one-project-base|get-one-project-settings|update-project-base|update-project-settings|delete-project|readyz|livez)", + } } // UsageExamples produces an example of a valid invocation of the CLI tool. func UsageExamples() string { - return os.Args[0] + ` project-service get-projects --version "1" --bearer-token "eyJhbGci..."` + "\n" + + return os.Args[0] + " " + "project-service get-projects --version \"1\" --bearer-token \"eyJhbGci...\"" + "\n" + "" } @@ -228,275 +229,220 @@ func ParseEndpoint( // projectServiceUsage displays the usage of the project-service command and // its subcommands. func projectServiceUsage() { - fmt.Fprintf(os.Stderr, `The project service provides LFX Project resources. -Usage: - %[1]s [globalflags] project-service COMMAND [flags] - -COMMAND: - get-projects: Get all projects. - create-project: Create a new project. - get-one-project-base: Get a single project's base information. - get-one-project-settings: Get a single project's settings. - update-project-base: Update an existing project's base information. - update-project-settings: Update an existing project's settings. - delete-project: Delete an existing project. - readyz: Check if the service is able to take inbound requests. - livez: Check if the service is alive. - -Additional help: - %[1]s project-service COMMAND --help -`, os.Args[0]) + fmt.Fprintln(os.Stderr, `The project service provides LFX Project resources.`) + fmt.Fprintf(os.Stderr, "Usage:\n %s [globalflags] project-service COMMAND [flags]\n\n", os.Args[0]) + fmt.Fprintln(os.Stderr, "COMMAND:") + fmt.Fprintln(os.Stderr, ` get-projects: Get all projects.`) + fmt.Fprintln(os.Stderr, ` create-project: Create a new project.`) + fmt.Fprintln(os.Stderr, ` get-one-project-base: Get a single project's base information.`) + fmt.Fprintln(os.Stderr, ` get-one-project-settings: Get a single project's settings.`) + fmt.Fprintln(os.Stderr, ` update-project-base: Update an existing project's base information.`) + fmt.Fprintln(os.Stderr, ` update-project-settings: Update an existing project's settings.`) + fmt.Fprintln(os.Stderr, ` delete-project: Delete an existing project.`) + fmt.Fprintln(os.Stderr, ` readyz: Check if the service is able to take inbound requests.`) + fmt.Fprintln(os.Stderr, ` livez: Check if the service is alive.`) + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Additional help:") + fmt.Fprintf(os.Stderr, " %s project-service COMMAND --help\n", os.Args[0]) } func projectServiceGetProjectsUsage() { - fmt.Fprintf(os.Stderr, `%[1]s [flags] project-service get-projects -version STRING -bearer-token STRING - -Get all projects. - -version STRING: - -bearer-token STRING: - -Example: - %[1]s project-service get-projects --version "1" --bearer-token "eyJhbGci..." -`, os.Args[0]) + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] project-service get-projects", os.Args[0]) + fmt.Fprint(os.Stderr, " -version STRING") + fmt.Fprint(os.Stderr, " -bearer-token STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Get all projects.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -version STRING: `) + fmt.Fprintln(os.Stderr, ` -bearer-token STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "project-service get-projects --version \"1\" --bearer-token \"eyJhbGci...\"") } func projectServiceCreateProjectUsage() { - fmt.Fprintf(os.Stderr, `%[1]s [flags] project-service create-project -body JSON -version STRING -bearer-token STRING -x-sync BOOL - -Create a new project. - -body JSON: - -version STRING: - -bearer-token STRING: - -x-sync BOOL: - -Example: - %[1]s project-service create-project --body '{ - "announcement_date": "2021-01-01", - "auditors": [ - { - "avatar": "https://example.com/avatar1.jpg", - "email": "john.doe@example.com", - "name": "John Doe", - "username": "johndoe123" - }, - { - "avatar": "https://example.com/avatar2.jpg", - "email": "jane.smith@example.com", - "name": "Jane Smith", - "username": "janesmith456" - } - ], - "autojoin_enabled": false, - "category": "Active", - "charter_url": "https://example.com/charter.pdf", - "description": "project foo is a project about bar", - "entity_dissolution_date": "2021-12-31", - "entity_formation_document_url": "https://example.com/formation.pdf", - "formation_date": "2021-01-01", - "funding_model": [ - "Crowdfunding" - ], - "is_foundation": false, - "legal_entity_name": "Example Foundation LLC", - "legal_entity_type": "Subproject", - "legal_parent_uid": "7cad5a8d-19d0-41a4-81a6-043453daf9ee", - "logo_url": "https://example.com/logo.png", - "meeting_coordinators": [ - { - "avatar": "https://example.com/avatar1.jpg", - "email": "john.doe@example.com", - "name": "John Doe", - "username": "johndoe123" - }, - { - "avatar": "https://example.com/avatar2.jpg", - "email": "jane.smith@example.com", - "name": "Jane Smith", - "username": "janesmith456" - } - ], - "mission_statement": "The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.", - "name": "Foo Foundation", - "parent_uid": "7cad5a8d-19d0-41a4-81a6-043453daf9ee", - "public": true, - "repository_url": "https://example.com/project", - "slug": "project-slug", - "stage": "Formation - Exploratory", - "website_url": "https://example.com", - "writers": [ - { - "avatar": "https://example.com/avatar3.jpg", - "email": "alice.johnson@example.com", - "name": "Alice Johnson", - "username": "alicejohnson789" - }, - { - "avatar": "https://example.com/avatar4.jpg", - "email": "bob.wilson@example.com", - "name": "Bob Wilson", - "username": "bobwilson101" - } - ] - }' --version "1" --bearer-token "eyJhbGci..." --x-sync true -`, os.Args[0]) + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] project-service create-project", os.Args[0]) + fmt.Fprint(os.Stderr, " -body JSON") + fmt.Fprint(os.Stderr, " -version STRING") + fmt.Fprint(os.Stderr, " -bearer-token STRING") + fmt.Fprint(os.Stderr, " -x-sync BOOL") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Create a new project.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -body JSON: `) + fmt.Fprintln(os.Stderr, ` -version STRING: `) + fmt.Fprintln(os.Stderr, ` -bearer-token STRING: `) + fmt.Fprintln(os.Stderr, ` -x-sync BOOL: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "project-service create-project --body '{\n \"announcement_date\": \"2021-01-01\",\n \"auditors\": [\n {\n \"avatar\": \"https://example.com/avatar1.jpg\",\n \"email\": \"john.doe@example.com\",\n \"name\": \"John Doe\",\n \"username\": \"johndoe123\"\n },\n {\n \"avatar\": \"https://example.com/avatar2.jpg\",\n \"email\": \"jane.smith@example.com\",\n \"name\": \"Jane Smith\",\n \"username\": \"janesmith456\"\n }\n ],\n \"autojoin_enabled\": false,\n \"category\": \"Active\",\n \"charter_url\": \"https://example.com/charter.pdf\",\n \"description\": \"project foo is a project about bar\",\n \"entity_dissolution_date\": \"2021-12-31\",\n \"entity_formation_document_url\": \"https://example.com/formation.pdf\",\n \"formation_date\": \"2021-01-01\",\n \"funding_model\": [\n \"Crowdfunding\"\n ],\n \"is_foundation\": false,\n \"legal_entity_name\": \"Example Foundation LLC\",\n \"legal_entity_type\": \"Subproject\",\n \"legal_parent_uid\": \"7cad5a8d-19d0-41a4-81a6-043453daf9ee\",\n \"logo_url\": \"https://example.com/logo.png\",\n \"meeting_coordinators\": [\n {\n \"avatar\": \"https://example.com/avatar1.jpg\",\n \"email\": \"john.doe@example.com\",\n \"name\": \"John Doe\",\n \"username\": \"johndoe123\"\n },\n {\n \"avatar\": \"https://example.com/avatar2.jpg\",\n \"email\": \"jane.smith@example.com\",\n \"name\": \"Jane Smith\",\n \"username\": \"janesmith456\"\n }\n ],\n \"mission_statement\": \"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.\",\n \"name\": \"Foo Foundation\",\n \"parent_uid\": \"7cad5a8d-19d0-41a4-81a6-043453daf9ee\",\n \"public\": true,\n \"repository_url\": \"https://example.com/project\",\n \"slug\": \"project-slug\",\n \"stage\": \"Formation - Exploratory\",\n \"website_url\": \"https://example.com\",\n \"writers\": [\n {\n \"avatar\": \"https://example.com/avatar3.jpg\",\n \"email\": \"alice.johnson@example.com\",\n \"name\": \"Alice Johnson\",\n \"username\": \"alicejohnson789\"\n },\n {\n \"avatar\": \"https://example.com/avatar4.jpg\",\n \"email\": \"bob.wilson@example.com\",\n \"name\": \"Bob Wilson\",\n \"username\": \"bobwilson101\"\n }\n ]\n }' --version \"1\" --bearer-token \"eyJhbGci...\" --x-sync true") } func projectServiceGetOneProjectBaseUsage() { - fmt.Fprintf(os.Stderr, `%[1]s [flags] project-service get-one-project-base -uid STRING -version STRING -bearer-token STRING - -Get a single project's base information. - -uid STRING: Project UID -- v2 uid, not related to v1 id directly - -version STRING: - -bearer-token STRING: - -Example: - %[1]s project-service get-one-project-base --uid "7cad5a8d-19d0-41a4-81a6-043453daf9ee" --version "1" --bearer-token "eyJhbGci..." -`, os.Args[0]) + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] project-service get-one-project-base", os.Args[0]) + fmt.Fprint(os.Stderr, " -uid STRING") + fmt.Fprint(os.Stderr, " -version STRING") + fmt.Fprint(os.Stderr, " -bearer-token STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Get a single project's base information.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -uid STRING: Project UID -- v2 uid, not related to v1 id directly`) + fmt.Fprintln(os.Stderr, ` -version STRING: `) + fmt.Fprintln(os.Stderr, ` -bearer-token STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "project-service get-one-project-base --uid \"7cad5a8d-19d0-41a4-81a6-043453daf9ee\" --version \"1\" --bearer-token \"eyJhbGci...\"") } func projectServiceGetOneProjectSettingsUsage() { - fmt.Fprintf(os.Stderr, `%[1]s [flags] project-service get-one-project-settings -uid STRING -version STRING -bearer-token STRING - -Get a single project's settings. - -uid STRING: Project UID -- v2 uid, not related to v1 id directly - -version STRING: - -bearer-token STRING: - -Example: - %[1]s project-service get-one-project-settings --uid "7cad5a8d-19d0-41a4-81a6-043453daf9ee" --version "1" --bearer-token "eyJhbGci..." -`, os.Args[0]) + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] project-service get-one-project-settings", os.Args[0]) + fmt.Fprint(os.Stderr, " -uid STRING") + fmt.Fprint(os.Stderr, " -version STRING") + fmt.Fprint(os.Stderr, " -bearer-token STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Get a single project's settings.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -uid STRING: Project UID -- v2 uid, not related to v1 id directly`) + fmt.Fprintln(os.Stderr, ` -version STRING: `) + fmt.Fprintln(os.Stderr, ` -bearer-token STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "project-service get-one-project-settings --uid \"7cad5a8d-19d0-41a4-81a6-043453daf9ee\" --version \"1\" --bearer-token \"eyJhbGci...\"") } func projectServiceUpdateProjectBaseUsage() { - fmt.Fprintf(os.Stderr, `%[1]s [flags] project-service update-project-base -body JSON -uid STRING -version STRING -bearer-token STRING -x-sync BOOL -if-match STRING - -Update an existing project's base information. - -body JSON: - -uid STRING: Project UID -- v2 uid, not related to v1 id directly - -version STRING: - -bearer-token STRING: - -x-sync BOOL: - -if-match STRING: - -Example: - %[1]s project-service update-project-base --body '{ - "autojoin_enabled": false, - "category": "Active", - "charter_url": "https://example.com/charter.pdf", - "description": "project foo is a project about bar", - "entity_dissolution_date": "2021-12-31", - "entity_formation_document_url": "https://example.com/formation.pdf", - "formation_date": "2021-01-01", - "funding_model": [ - "Crowdfunding" - ], - "is_foundation": false, - "legal_entity_name": "Example Foundation LLC", - "legal_entity_type": "Subproject", - "legal_parent_uid": "7cad5a8d-19d0-41a4-81a6-043453daf9ee", - "logo_url": "https://example.com/logo.png", - "name": "Foo Foundation", - "parent_uid": "7cad5a8d-19d0-41a4-81a6-043453daf9ee", - "public": true, - "repository_url": "https://example.com/project", - "slug": "project-slug", - "stage": "Formation - Exploratory", - "website_url": "https://example.com" - }' --uid "7cad5a8d-19d0-41a4-81a6-043453daf9ee" --version "1" --bearer-token "eyJhbGci..." --x-sync true --if-match "123" -`, os.Args[0]) + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] project-service update-project-base", os.Args[0]) + fmt.Fprint(os.Stderr, " -body JSON") + fmt.Fprint(os.Stderr, " -uid STRING") + fmt.Fprint(os.Stderr, " -version STRING") + fmt.Fprint(os.Stderr, " -bearer-token STRING") + fmt.Fprint(os.Stderr, " -x-sync BOOL") + fmt.Fprint(os.Stderr, " -if-match STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Update an existing project's base information.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -body JSON: `) + fmt.Fprintln(os.Stderr, ` -uid STRING: Project UID -- v2 uid, not related to v1 id directly`) + fmt.Fprintln(os.Stderr, ` -version STRING: `) + fmt.Fprintln(os.Stderr, ` -bearer-token STRING: `) + fmt.Fprintln(os.Stderr, ` -x-sync BOOL: `) + fmt.Fprintln(os.Stderr, ` -if-match STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "project-service update-project-base --body '{\n \"autojoin_enabled\": false,\n \"category\": \"Active\",\n \"charter_url\": \"https://example.com/charter.pdf\",\n \"description\": \"project foo is a project about bar\",\n \"entity_dissolution_date\": \"2021-12-31\",\n \"entity_formation_document_url\": \"https://example.com/formation.pdf\",\n \"formation_date\": \"2021-01-01\",\n \"funding_model\": [\n \"Crowdfunding\"\n ],\n \"is_foundation\": false,\n \"legal_entity_name\": \"Example Foundation LLC\",\n \"legal_entity_type\": \"Subproject\",\n \"legal_parent_uid\": \"7cad5a8d-19d0-41a4-81a6-043453daf9ee\",\n \"logo_url\": \"https://example.com/logo.png\",\n \"name\": \"Foo Foundation\",\n \"parent_uid\": \"7cad5a8d-19d0-41a4-81a6-043453daf9ee\",\n \"public\": true,\n \"repository_url\": \"https://example.com/project\",\n \"slug\": \"project-slug\",\n \"stage\": \"Formation - Exploratory\",\n \"website_url\": \"https://example.com\"\n }' --uid \"7cad5a8d-19d0-41a4-81a6-043453daf9ee\" --version \"1\" --bearer-token \"eyJhbGci...\" --x-sync true --if-match \"123\"") } func projectServiceUpdateProjectSettingsUsage() { - fmt.Fprintf(os.Stderr, `%[1]s [flags] project-service update-project-settings -body JSON -uid STRING -version STRING -bearer-token STRING -x-sync BOOL -if-match STRING - -Update an existing project's settings. - -body JSON: - -uid STRING: Project UID -- v2 uid, not related to v1 id directly - -version STRING: - -bearer-token STRING: - -x-sync BOOL: - -if-match STRING: - -Example: - %[1]s project-service update-project-settings --body '{ - "announcement_date": "2021-01-01", - "auditors": [ - { - "avatar": "https://example.com/avatar1.jpg", - "email": "john.doe@example.com", - "name": "John Doe", - "username": "johndoe123" - }, - { - "avatar": "https://example.com/avatar2.jpg", - "email": "jane.smith@example.com", - "name": "Jane Smith", - "username": "janesmith456" - } - ], - "meeting_coordinators": [ - { - "avatar": "https://example.com/avatar1.jpg", - "email": "john.doe@example.com", - "name": "John Doe", - "username": "johndoe123" - }, - { - "avatar": "https://example.com/avatar2.jpg", - "email": "jane.smith@example.com", - "name": "Jane Smith", - "username": "janesmith456" - } - ], - "mission_statement": "The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.", - "writers": [ - { - "avatar": "https://example.com/avatar3.jpg", - "email": "alice.johnson@example.com", - "name": "Alice Johnson", - "username": "alicejohnson789" - }, - { - "avatar": "https://example.com/avatar4.jpg", - "email": "bob.wilson@example.com", - "name": "Bob Wilson", - "username": "bobwilson101" - } - ] - }' --uid "7cad5a8d-19d0-41a4-81a6-043453daf9ee" --version "1" --bearer-token "eyJhbGci..." --x-sync true --if-match "123" -`, os.Args[0]) + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] project-service update-project-settings", os.Args[0]) + fmt.Fprint(os.Stderr, " -body JSON") + fmt.Fprint(os.Stderr, " -uid STRING") + fmt.Fprint(os.Stderr, " -version STRING") + fmt.Fprint(os.Stderr, " -bearer-token STRING") + fmt.Fprint(os.Stderr, " -x-sync BOOL") + fmt.Fprint(os.Stderr, " -if-match STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Update an existing project's settings.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -body JSON: `) + fmt.Fprintln(os.Stderr, ` -uid STRING: Project UID -- v2 uid, not related to v1 id directly`) + fmt.Fprintln(os.Stderr, ` -version STRING: `) + fmt.Fprintln(os.Stderr, ` -bearer-token STRING: `) + fmt.Fprintln(os.Stderr, ` -x-sync BOOL: `) + fmt.Fprintln(os.Stderr, ` -if-match STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "project-service update-project-settings --body '{\n \"announcement_date\": \"2021-01-01\",\n \"auditors\": [\n {\n \"avatar\": \"https://example.com/avatar1.jpg\",\n \"email\": \"john.doe@example.com\",\n \"name\": \"John Doe\",\n \"username\": \"johndoe123\"\n },\n {\n \"avatar\": \"https://example.com/avatar2.jpg\",\n \"email\": \"jane.smith@example.com\",\n \"name\": \"Jane Smith\",\n \"username\": \"janesmith456\"\n }\n ],\n \"meeting_coordinators\": [\n {\n \"avatar\": \"https://example.com/avatar1.jpg\",\n \"email\": \"john.doe@example.com\",\n \"name\": \"John Doe\",\n \"username\": \"johndoe123\"\n },\n {\n \"avatar\": \"https://example.com/avatar2.jpg\",\n \"email\": \"jane.smith@example.com\",\n \"name\": \"Jane Smith\",\n \"username\": \"janesmith456\"\n }\n ],\n \"mission_statement\": \"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.\",\n \"writers\": [\n {\n \"avatar\": \"https://example.com/avatar3.jpg\",\n \"email\": \"alice.johnson@example.com\",\n \"name\": \"Alice Johnson\",\n \"username\": \"alicejohnson789\"\n },\n {\n \"avatar\": \"https://example.com/avatar4.jpg\",\n \"email\": \"bob.wilson@example.com\",\n \"name\": \"Bob Wilson\",\n \"username\": \"bobwilson101\"\n }\n ]\n }' --uid \"7cad5a8d-19d0-41a4-81a6-043453daf9ee\" --version \"1\" --bearer-token \"eyJhbGci...\" --x-sync true --if-match \"123\"") } func projectServiceDeleteProjectUsage() { - fmt.Fprintf(os.Stderr, `%[1]s [flags] project-service delete-project -uid STRING -version STRING -bearer-token STRING -x-sync BOOL -if-match STRING - -Delete an existing project. - -uid STRING: Project UID -- v2 uid, not related to v1 id directly - -version STRING: - -bearer-token STRING: - -x-sync BOOL: - -if-match STRING: - -Example: - %[1]s project-service delete-project --uid "7cad5a8d-19d0-41a4-81a6-043453daf9ee" --version "1" --bearer-token "eyJhbGci..." --x-sync true --if-match "123" -`, os.Args[0]) + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] project-service delete-project", os.Args[0]) + fmt.Fprint(os.Stderr, " -uid STRING") + fmt.Fprint(os.Stderr, " -version STRING") + fmt.Fprint(os.Stderr, " -bearer-token STRING") + fmt.Fprint(os.Stderr, " -x-sync BOOL") + fmt.Fprint(os.Stderr, " -if-match STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Delete an existing project.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -uid STRING: Project UID -- v2 uid, not related to v1 id directly`) + fmt.Fprintln(os.Stderr, ` -version STRING: `) + fmt.Fprintln(os.Stderr, ` -bearer-token STRING: `) + fmt.Fprintln(os.Stderr, ` -x-sync BOOL: `) + fmt.Fprintln(os.Stderr, ` -if-match STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "project-service delete-project --uid \"7cad5a8d-19d0-41a4-81a6-043453daf9ee\" --version \"1\" --bearer-token \"eyJhbGci...\" --x-sync true --if-match \"123\"") } func projectServiceReadyzUsage() { - fmt.Fprintf(os.Stderr, `%[1]s [flags] project-service readyz + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] project-service readyz", os.Args[0]) + fmt.Fprintln(os.Stderr) -Check if the service is able to take inbound requests. + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Check if the service is able to take inbound requests.`) -Example: - %[1]s project-service readyz -`, os.Args[0]) + // Flags list + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "project-service readyz") } func projectServiceLivezUsage() { - fmt.Fprintf(os.Stderr, `%[1]s [flags] project-service livez + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] project-service livez", os.Args[0]) + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Check if the service is alive.`) -Check if the service is alive. + // Flags list -Example: - %[1]s project-service livez -`, os.Args[0]) + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "project-service livez") } diff --git a/api/project/v1/gen/http/openapi.json b/api/project/v1/gen/http/openapi.json index 5db7266..dce0f54 100644 --- a/api/project/v1/gen/http/openapi.json +++ b/api/project/v1/gen/http/openapi.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"title":"LFX V2 - Project Service","description":"Create, manage, update, and delete LFX project resources","version":"0.0.1"},"host":"localhost:80","consumes":["application/json","application/xml","application/gob"],"produces":["application/json","application/xml","application/gob"],"paths":{"/projects":{"get":{"tags":["project-service"],"summary":"get-projects project-service","description":"Get all projects.","operationId":"project-service#get-projects","parameters":[{"name":"v","in":"query","description":"Version of the API","required":false,"type":"string","enum":["1"]},{"name":"Authorization","in":"header","description":"JWT token issued by Heimdall","required":false,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/ProjectServiceGetProjectsResponseBody","required":["projects"]},"headers":{"Cache-Control":{"description":"Cache control header","type":"string"}}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":[]}]},"post":{"tags":["project-service"],"summary":"create-project project-service","description":"Create a new project.","operationId":"project-service#create-project","parameters":[{"name":"v","in":"query","description":"Version of the API","required":false,"type":"string","enum":["1"]},{"name":"Authorization","in":"header","description":"JWT token issued by Heimdall","required":false,"type":"string"},{"name":"X-Sync","in":"header","description":"X-Sync header value for performing operations synchronously","required":false,"type":"boolean"},{"name":"Create-ProjectRequestBody","in":"body","required":true,"schema":{"$ref":"#/definitions/ProjectServiceCreateProjectRequestBody","required":["slug","description","name","parent_uid"]}}],"responses":{"201":{"description":"Created response.","schema":{"$ref":"#/definitions/ProjectFull"}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"409":{"description":"Conflict response.","schema":{"$ref":"#/definitions/ConflictError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":[]}]}},"/projects/{uid}":{"get":{"tags":["project-service"],"summary":"get-one-project-base project-service","description":"Get a single project's base information.","operationId":"project-service#get-one-project-base","parameters":[{"name":"v","in":"query","description":"Version of the API","required":false,"type":"string","enum":["1"]},{"name":"uid","in":"path","description":"Project UID -- v2 uid, not related to v1 id directly","required":true,"type":"string","format":"uuid"},{"name":"Authorization","in":"header","description":"JWT token issued by Heimdall","required":false,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/ProjectServiceGetOneProjectBaseResponseBody"},"headers":{"ETag":{"description":"ETag header value","type":"string"}}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":[]}]},"put":{"tags":["project-service"],"summary":"update-project-base project-service","description":"Update an existing project's base information.","operationId":"project-service#update-project-base","parameters":[{"name":"v","in":"query","description":"Version of the API","required":false,"type":"string","enum":["1"]},{"name":"uid","in":"path","description":"Project UID -- v2 uid, not related to v1 id directly","required":true,"type":"string","format":"uuid"},{"name":"Authorization","in":"header","description":"JWT token issued by Heimdall","required":false,"type":"string"},{"name":"X-Sync","in":"header","description":"X-Sync header value for performing operations synchronously","required":false,"type":"boolean"},{"name":"If-Match","in":"header","description":"If-Match header value for conditional requests","required":false,"type":"string"},{"name":"Update-Project-BaseRequestBody","in":"body","required":true,"schema":{"$ref":"#/definitions/ProjectServiceUpdateProjectBaseRequestBody","required":["slug","description","name","parent_uid"]}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/ProjectBase"}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"409":{"description":"Conflict response.","schema":{"$ref":"#/definitions/ConflictError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":[]}]},"delete":{"tags":["project-service"],"summary":"delete-project project-service","description":"Delete an existing project.","operationId":"project-service#delete-project","parameters":[{"name":"v","in":"query","description":"Version of the API","required":false,"type":"string","enum":["1"]},{"name":"uid","in":"path","description":"Project UID -- v2 uid, not related to v1 id directly","required":true,"type":"string","format":"uuid"},{"name":"Authorization","in":"header","description":"JWT token issued by Heimdall","required":false,"type":"string"},{"name":"X-Sync","in":"header","description":"X-Sync header value for performing operations synchronously","required":false,"type":"boolean"},{"name":"If-Match","in":"header","description":"If-Match header value for conditional requests","required":false,"type":"string"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":[]}]}},"/projects/{uid}/settings":{"get":{"tags":["project-service"],"summary":"get-one-project-settings project-service","description":"Get a single project's settings.","operationId":"project-service#get-one-project-settings","parameters":[{"name":"v","in":"query","description":"Version of the API","required":false,"type":"string","enum":["1"]},{"name":"uid","in":"path","description":"Project UID -- v2 uid, not related to v1 id directly","required":true,"type":"string","format":"uuid"},{"name":"Authorization","in":"header","description":"JWT token issued by Heimdall","required":false,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/ProjectServiceGetOneProjectSettingsResponseBody"},"headers":{"ETag":{"description":"ETag header value","type":"string"}}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":[]}]},"put":{"tags":["project-service"],"summary":"update-project-settings project-service","description":"Update an existing project's settings.","operationId":"project-service#update-project-settings","parameters":[{"name":"v","in":"query","description":"Version of the API","required":false,"type":"string","enum":["1"]},{"name":"uid","in":"path","description":"Project UID -- v2 uid, not related to v1 id directly","required":true,"type":"string","format":"uuid"},{"name":"Authorization","in":"header","description":"JWT token issued by Heimdall","required":false,"type":"string"},{"name":"X-Sync","in":"header","description":"X-Sync header value for performing operations synchronously","required":false,"type":"boolean"},{"name":"If-Match","in":"header","description":"If-Match header value for conditional requests","required":false,"type":"string"},{"name":"Update-Project-SettingsRequestBody","in":"body","required":true,"schema":{"$ref":"#/definitions/ProjectServiceUpdateProjectSettingsRequestBody"}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/ProjectSettings"}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":[]}]}}},"definitions":{"BadRequestError":{"title":"BadRequestError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"400"},"message":{"type":"string","description":"Error message","example":"The request was invalid."}},"description":"Bad request","example":{"code":"400","message":"The request was invalid."},"required":["code","message"]},"ConflictError":{"title":"ConflictError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"409"},"message":{"type":"string","description":"Error message","example":"The resource already exists."}},"description":"Conflict","example":{"code":"409","message":"The resource already exists."},"required":["code","message"]},"InternalServerError":{"title":"InternalServerError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"500"},"message":{"type":"string","description":"Error message","example":"An internal server error occurred."}},"description":"Internal server error","example":{"code":"500","message":"An internal server error occurred."},"required":["code","message"]},"NotFoundError":{"title":"NotFoundError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"404"},"message":{"type":"string","description":"Error message","example":"The resource was not found."}},"description":"Resource not found","example":{"code":"404","message":"The resource was not found."},"required":["code","message"]},"ProjectBase":{"title":"ProjectBase","type":"object","properties":{"autojoin_enabled":{"type":"boolean","description":"Whether autojoin is enabled for the project","example":false},"category":{"type":"string","description":"The category of the project","example":"Active","enum":["Active","Adopted","Archived","At-Large","Early Adoption","Emeritus","Graduated","Growth","Idle","Impact","Incubating","Kanister","Mature","Pre-LFESS","Sandbox","SIG","Standards","TAC","Working Group","TAG","NONE"]},"charter_url":{"type":"string","description":"The URL of the project charter document","example":"https://example.com/charter.pdf","format":"uri"},"created_at":{"type":"string","description":"The date and time the project was created","example":"2021-01-01T00:00:00Z","format":"date-time"},"description":{"type":"string","description":"A description of the project","example":"project foo is a project about bar"},"entity_dissolution_date":{"type":"string","description":"The date the project entity was dissolved","example":"2021-12-31","format":"date"},"entity_formation_document_url":{"type":"string","description":"The URL of the project entity formation document","example":"https://example.com/formation.pdf","format":"uri"},"formation_date":{"type":"string","description":"The date the project was formed","example":"2021-01-01","format":"date"},"funding_model":{"type":"array","items":{"type":"string","example":"Membership","enum":["Crowdfunding","Membership","Alternate Funding"]},"description":"A list of funding models for the project","example":["Crowdfunding"]},"is_foundation":{"type":"boolean","description":"Whether the project is a foundation","example":false},"legal_entity_name":{"type":"string","description":"The legal entity name of the project","example":"Example Foundation LLC"},"legal_entity_type":{"type":"string","description":"The legal entity type of the project","example":"Subproject","enum":["Subproject","Incorporated Entity","Series LLC","Unofficial Subproject","Internal Allocation","None"]},"legal_parent_uid":{"type":"string","description":"The UID of the legal parent entity, should be empty if there is none","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","format":"uuid"},"logo_url":{"type":"string","description":"The URL of the project logo","example":"https://example.com/logo.png","format":"uri"},"name":{"type":"string","description":"The pretty name of the project","example":"Foo Foundation"},"parent_uid":{"type":"string","description":"The UID of the parent project, required and must be a valid UUID","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee"},"public":{"type":"boolean","description":"Whether the project is public","example":true},"repository_url":{"type":"string","description":"The URL of the project repository","example":"https://example.com/project","format":"uri"},"slug":{"type":"string","description":"Project slug, a short slugified name of the project","example":"project-slug","format":"regexp","pattern":"^[a-z][a-z0-9_\\-]*[a-z0-9]$"},"stage":{"type":"string","description":"The stage of the project","example":"Formation - Exploratory","enum":["Formation - Exploratory","Formation - Engaged","Active","Archived","Formation - On Hold","Formation - Disengaged","Formation - Confidential","Prospect"]},"uid":{"type":"string","description":"Project UID -- v2 uid, not related to v1 id directly","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","format":"uuid"},"updated_at":{"type":"string","description":"The date and time the project was last updated","example":"2021-01-01T00:00:00Z","format":"date-time"},"website_url":{"type":"string","description":"The URL of the project website","example":"https://example.com","format":"uri"}},"description":"A base representation of LF Projects without sub-objects.","example":{"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","created_at":"2021-01-01T00:00:00Z","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","updated_at":"2021-01-01T00:00:00Z","website_url":"https://example.com"}},"ProjectFull":{"title":"ProjectFull","type":"object","properties":{"announcement_date":{"type":"string","description":"The date the project was announced","example":"2021-01-01","format":"date"},"auditors":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project auditors with their profile information","example":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}]},"autojoin_enabled":{"type":"boolean","description":"Whether autojoin is enabled for the project","example":false},"category":{"type":"string","description":"The category of the project","example":"Active","enum":["Active","Adopted","Archived","At-Large","Early Adoption","Emeritus","Graduated","Growth","Idle","Impact","Incubating","Kanister","Mature","Pre-LFESS","Sandbox","SIG","Standards","TAC","Working Group","TAG","NONE"]},"charter_url":{"type":"string","description":"The URL of the project charter document","example":"https://example.com/charter.pdf","format":"uri"},"created_at":{"type":"string","description":"The date and time the project was created","example":"2021-01-01T00:00:00Z","format":"date-time"},"description":{"type":"string","description":"A description of the project","example":"project foo is a project about bar"},"entity_dissolution_date":{"type":"string","description":"The date the project entity was dissolved","example":"2021-12-31","format":"date"},"entity_formation_document_url":{"type":"string","description":"The URL of the project entity formation document","example":"https://example.com/formation.pdf","format":"uri"},"formation_date":{"type":"string","description":"The date the project was formed","example":"2021-01-01","format":"date"},"funding_model":{"type":"array","items":{"type":"string","example":"Alternate Funding","enum":["Crowdfunding","Membership","Alternate Funding"]},"description":"A list of funding models for the project","example":["Crowdfunding"]},"is_foundation":{"type":"boolean","description":"Whether the project is a foundation","example":false},"legal_entity_name":{"type":"string","description":"The legal entity name of the project","example":"Example Foundation LLC"},"legal_entity_type":{"type":"string","description":"The legal entity type of the project","example":"Subproject","enum":["Subproject","Incorporated Entity","Series LLC","Unofficial Subproject","Internal Allocation","None"]},"legal_parent_uid":{"type":"string","description":"The UID of the legal parent entity, should be empty if there is none","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","format":"uuid"},"logo_url":{"type":"string","description":"The URL of the project logo","example":"https://example.com/logo.png","format":"uri"},"meeting_coordinators":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project meeting coordinators with their profile information","example":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}]},"mission_statement":{"type":"string","description":"The mission statement of the project","example":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption."},"name":{"type":"string","description":"The pretty name of the project","example":"Foo Foundation"},"parent_uid":{"type":"string","description":"The UID of the parent project, required and must be a valid UUID","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee"},"public":{"type":"boolean","description":"Whether the project is public","example":true},"repository_url":{"type":"string","description":"The URL of the project repository","example":"https://example.com/project","format":"uri"},"slug":{"type":"string","description":"Project slug, a short slugified name of the project","example":"project-slug","format":"regexp","pattern":"^[a-z][a-z0-9_\\-]*[a-z0-9]$"},"stage":{"type":"string","description":"The stage of the project","example":"Formation - Exploratory","enum":["Formation - Exploratory","Formation - Engaged","Active","Archived","Formation - On Hold","Formation - Disengaged","Formation - Confidential","Prospect"]},"uid":{"type":"string","description":"Project UID -- v2 uid, not related to v1 id directly","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","format":"uuid"},"updated_at":{"type":"string","description":"The date and time the project was last updated","example":"2021-01-01T00:00:00Z","format":"date-time"},"website_url":{"type":"string","description":"The URL of the project website","example":"https://example.com","format":"uri"},"writers":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project writers with their profile information","example":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]}},"description":"A full representation of LF Projects with sub-objects populated.","example":{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","created_at":"2021-01-01T00:00:00Z","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","updated_at":"2021-01-01T00:00:00Z","website_url":"https://example.com","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]}},"ProjectServiceCreateProjectRequestBody":{"title":"ProjectServiceCreateProjectRequestBody","type":"object","properties":{"announcement_date":{"type":"string","description":"The date the project was announced","example":"2021-01-01","format":"date"},"auditors":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project auditors with their profile information","example":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}]},"autojoin_enabled":{"type":"boolean","description":"Whether autojoin is enabled for the project","example":false},"category":{"type":"string","description":"The category of the project","example":"Active","enum":["Active","Adopted","Archived","At-Large","Early Adoption","Emeritus","Graduated","Growth","Idle","Impact","Incubating","Kanister","Mature","Pre-LFESS","Sandbox","SIG","Standards","TAC","Working Group","TAG","NONE"]},"charter_url":{"type":"string","description":"The URL of the project charter document","example":"https://example.com/charter.pdf","format":"uri"},"description":{"type":"string","description":"A description of the project","example":"project foo is a project about bar"},"entity_dissolution_date":{"type":"string","description":"The date the project entity was dissolved","example":"2021-12-31","format":"date"},"entity_formation_document_url":{"type":"string","description":"The URL of the project entity formation document","example":"https://example.com/formation.pdf","format":"uri"},"formation_date":{"type":"string","description":"The date the project was formed","example":"2021-01-01","format":"date"},"funding_model":{"type":"array","items":{"type":"string","example":"Membership","enum":["Crowdfunding","Membership","Alternate Funding"]},"description":"A list of funding models for the project","example":["Crowdfunding"]},"is_foundation":{"type":"boolean","description":"Whether the project is a foundation","example":false},"legal_entity_name":{"type":"string","description":"The legal entity name of the project","example":"Example Foundation LLC"},"legal_entity_type":{"type":"string","description":"The legal entity type of the project","example":"Subproject","enum":["Subproject","Incorporated Entity","Series LLC","Unofficial Subproject","Internal Allocation","None"]},"legal_parent_uid":{"type":"string","description":"The UID of the legal parent entity, should be empty if there is none","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","format":"uuid"},"logo_url":{"type":"string","description":"The URL of the project logo","example":"https://example.com/logo.png","format":"uri"},"meeting_coordinators":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project meeting coordinators with their profile information","example":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}]},"mission_statement":{"type":"string","description":"The mission statement of the project","example":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption."},"name":{"type":"string","description":"The pretty name of the project","example":"Foo Foundation"},"parent_uid":{"type":"string","description":"The UID of the parent project, required and must be a valid UUID","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee"},"public":{"type":"boolean","description":"Whether the project is public","example":true},"repository_url":{"type":"string","description":"The URL of the project repository","example":"https://example.com/project","format":"uri"},"slug":{"type":"string","description":"Project slug, a short slugified name of the project","example":"project-slug","format":"regexp","pattern":"^[a-z][a-z0-9_\\-]*[a-z0-9]$"},"stage":{"type":"string","description":"The stage of the project","example":"Formation - Exploratory","enum":["Formation - Exploratory","Formation - Engaged","Active","Archived","Formation - On Hold","Formation - Disengaged","Formation - Confidential","Prospect"]},"website_url":{"type":"string","description":"The URL of the project website","example":"https://example.com","format":"uri"},"writers":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project writers with their profile information","example":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]}},"example":{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","website_url":"https://example.com","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]},"required":["slug","description","name","parent_uid"]},"ProjectServiceGetOneProjectBaseResponseBody":{"title":"ProjectServiceGetOneProjectBaseResponseBody","$ref":"#/definitions/ProjectBase"},"ProjectServiceGetOneProjectSettingsResponseBody":{"title":"ProjectServiceGetOneProjectSettingsResponseBody","$ref":"#/definitions/ProjectSettings"},"ProjectServiceGetProjectsResponseBody":{"title":"ProjectServiceGetProjectsResponseBody","type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/definitions/ProjectFull"},"description":"Resources found","example":[{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","created_at":"2021-01-01T00:00:00Z","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","updated_at":"2021-01-01T00:00:00Z","website_url":"https://example.com","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]},{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","created_at":"2021-01-01T00:00:00Z","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","updated_at":"2021-01-01T00:00:00Z","website_url":"https://example.com","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]},{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","created_at":"2021-01-01T00:00:00Z","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","updated_at":"2021-01-01T00:00:00Z","website_url":"https://example.com","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]},{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","created_at":"2021-01-01T00:00:00Z","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","updated_at":"2021-01-01T00:00:00Z","website_url":"https://example.com","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]}]}},"example":{"projects":[{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","created_at":"2021-01-01T00:00:00Z","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","updated_at":"2021-01-01T00:00:00Z","website_url":"https://example.com","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]},{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","created_at":"2021-01-01T00:00:00Z","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","updated_at":"2021-01-01T00:00:00Z","website_url":"https://example.com","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]}]},"required":["projects"]},"ProjectServiceUpdateProjectBaseRequestBody":{"title":"ProjectServiceUpdateProjectBaseRequestBody","type":"object","properties":{"autojoin_enabled":{"type":"boolean","description":"Whether autojoin is enabled for the project","example":false},"category":{"type":"string","description":"The category of the project","example":"Active","enum":["Active","Adopted","Archived","At-Large","Early Adoption","Emeritus","Graduated","Growth","Idle","Impact","Incubating","Kanister","Mature","Pre-LFESS","Sandbox","SIG","Standards","TAC","Working Group","TAG","NONE"]},"charter_url":{"type":"string","description":"The URL of the project charter document","example":"https://example.com/charter.pdf","format":"uri"},"description":{"type":"string","description":"A description of the project","example":"project foo is a project about bar"},"entity_dissolution_date":{"type":"string","description":"The date the project entity was dissolved","example":"2021-12-31","format":"date"},"entity_formation_document_url":{"type":"string","description":"The URL of the project entity formation document","example":"https://example.com/formation.pdf","format":"uri"},"formation_date":{"type":"string","description":"The date the project was formed","example":"2021-01-01","format":"date"},"funding_model":{"type":"array","items":{"type":"string","example":"Crowdfunding","enum":["Crowdfunding","Membership","Alternate Funding"]},"description":"A list of funding models for the project","example":["Crowdfunding"]},"is_foundation":{"type":"boolean","description":"Whether the project is a foundation","example":false},"legal_entity_name":{"type":"string","description":"The legal entity name of the project","example":"Example Foundation LLC"},"legal_entity_type":{"type":"string","description":"The legal entity type of the project","example":"Subproject","enum":["Subproject","Incorporated Entity","Series LLC","Unofficial Subproject","Internal Allocation","None"]},"legal_parent_uid":{"type":"string","description":"The UID of the legal parent entity, should be empty if there is none","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","format":"uuid"},"logo_url":{"type":"string","description":"The URL of the project logo","example":"https://example.com/logo.png","format":"uri"},"name":{"type":"string","description":"The pretty name of the project","example":"Foo Foundation"},"parent_uid":{"type":"string","description":"The UID of the parent project, required and must be a valid UUID","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee"},"public":{"type":"boolean","description":"Whether the project is public","example":true},"repository_url":{"type":"string","description":"The URL of the project repository","example":"https://example.com/project","format":"uri"},"slug":{"type":"string","description":"Project slug, a short slugified name of the project","example":"project-slug","format":"regexp","pattern":"^[a-z][a-z0-9_\\-]*[a-z0-9]$"},"stage":{"type":"string","description":"The stage of the project","example":"Formation - Exploratory","enum":["Formation - Exploratory","Formation - Engaged","Active","Archived","Formation - On Hold","Formation - Disengaged","Formation - Confidential","Prospect"]},"website_url":{"type":"string","description":"The URL of the project website","example":"https://example.com","format":"uri"}},"example":{"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","website_url":"https://example.com"},"required":["slug","description","name","parent_uid"]},"ProjectServiceUpdateProjectSettingsRequestBody":{"title":"ProjectServiceUpdateProjectSettingsRequestBody","type":"object","properties":{"announcement_date":{"type":"string","description":"The date the project was announced","example":"2021-01-01","format":"date"},"auditors":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project auditors with their profile information","example":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}]},"meeting_coordinators":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project meeting coordinators with their profile information","example":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}]},"mission_statement":{"type":"string","description":"The mission statement of the project","example":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption."},"writers":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project writers with their profile information","example":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]}},"example":{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]}},"ProjectSettings":{"title":"ProjectSettings","type":"object","properties":{"announcement_date":{"type":"string","description":"The date the project was announced","example":"2021-01-01","format":"date"},"auditors":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project auditors with their profile information","example":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}]},"created_at":{"type":"string","description":"The date and time the project was created","example":"2021-01-01T00:00:00Z","format":"date-time"},"meeting_coordinators":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project meeting coordinators with their profile information","example":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}]},"mission_statement":{"type":"string","description":"The mission statement of the project","example":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption."},"uid":{"type":"string","description":"Project UID -- v2 uid, not related to v1 id directly","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","format":"uuid"},"updated_at":{"type":"string","description":"The date and time the project was last updated","example":"2021-01-01T00:00:00Z","format":"date-time"},"writers":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project writers with their profile information","example":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]}},"description":"A representation of LF Project settings.","example":{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"created_at":"2021-01-01T00:00:00Z","meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","updated_at":"2021-01-01T00:00:00Z","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]}},"ServiceUnavailableError":{"title":"ServiceUnavailableError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"503"},"message":{"type":"string","description":"Error message","example":"The service is unavailable."}},"description":"Service unavailable","example":{"code":"503","message":"The service is unavailable."},"required":["code","message"]},"UserInfo":{"title":"UserInfo","type":"object","properties":{"avatar":{"type":"string","description":"The avatar URL of the user","example":"https://example.com/avatar.jpg","format":"uri"},"email":{"type":"string","description":"The email address of the user","example":"john.doe@example.com","format":"email"},"name":{"type":"string","description":"The full name of the user","example":"John Doe"},"username":{"type":"string","description":"The username/LFID of the user","example":"johndoe123"}},"description":"User information including profile details.","example":{"avatar":"https://example.com/avatar.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"}}},"securityDefinitions":{"jwt_header_Authorization":{"type":"apiKey","description":"Heimdall authorization","name":"Authorization","in":"header"}}} \ No newline at end of file +{"swagger":"2.0","info":{"title":"LFX V2 - Project Service","description":"Create, manage, update, and delete LFX project resources","version":"0.0.1"},"host":"localhost:80","consumes":["application/json","application/xml","application/gob"],"produces":["application/json","application/xml","application/gob"],"paths":{"/projects":{"get":{"tags":["project-service"],"summary":"get-projects project-service","description":"Get all projects.","operationId":"project-service#get-projects","parameters":[{"name":"v","in":"query","description":"Version of the API","required":false,"type":"string","enum":["1"]},{"name":"Authorization","in":"header","description":"JWT token issued by Heimdall","required":false,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/ProjectServiceGetProjectsResponseBody","required":["projects"]},"headers":{"Cache-Control":{"description":"Cache control header","type":"string"}}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]},"post":{"tags":["project-service"],"summary":"create-project project-service","description":"Create a new project.","operationId":"project-service#create-project","parameters":[{"name":"v","in":"query","description":"Version of the API","required":false,"type":"string","enum":["1"]},{"name":"Authorization","in":"header","description":"JWT token issued by Heimdall","required":false,"type":"string"},{"name":"X-Sync","in":"header","description":"X-Sync header value for performing operations synchronously","required":false,"type":"boolean"},{"name":"Create-ProjectRequestBody","in":"body","required":true,"schema":{"$ref":"#/definitions/ProjectServiceCreateProjectRequestBody","required":["slug","description","name","parent_uid"]}}],"responses":{"201":{"description":"Created response.","schema":{"$ref":"#/definitions/ProjectFull"}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"409":{"description":"Conflict response.","schema":{"$ref":"#/definitions/ConflictError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/projects/{uid}":{"get":{"tags":["project-service"],"summary":"get-one-project-base project-service","description":"Get a single project's base information.","operationId":"project-service#get-one-project-base","parameters":[{"name":"v","in":"query","description":"Version of the API","required":false,"type":"string","enum":["1"]},{"name":"uid","in":"path","description":"Project UID -- v2 uid, not related to v1 id directly","required":true,"type":"string","format":"uuid"},{"name":"Authorization","in":"header","description":"JWT token issued by Heimdall","required":false,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/ProjectServiceGetOneProjectBaseResponseBody"},"headers":{"ETag":{"description":"ETag header value","type":"string"}}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]},"put":{"tags":["project-service"],"summary":"update-project-base project-service","description":"Update an existing project's base information.","operationId":"project-service#update-project-base","parameters":[{"name":"v","in":"query","description":"Version of the API","required":false,"type":"string","enum":["1"]},{"name":"uid","in":"path","description":"Project UID -- v2 uid, not related to v1 id directly","required":true,"type":"string","format":"uuid"},{"name":"Authorization","in":"header","description":"JWT token issued by Heimdall","required":false,"type":"string"},{"name":"X-Sync","in":"header","description":"X-Sync header value for performing operations synchronously","required":false,"type":"boolean"},{"name":"If-Match","in":"header","description":"If-Match header value for conditional requests","required":false,"type":"string"},{"name":"Update-Project-BaseRequestBody","in":"body","required":true,"schema":{"$ref":"#/definitions/ProjectServiceUpdateProjectBaseRequestBody","required":["slug","description","name","parent_uid"]}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/ProjectBase"}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"409":{"description":"Conflict response.","schema":{"$ref":"#/definitions/ConflictError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]},"delete":{"tags":["project-service"],"summary":"delete-project project-service","description":"Delete an existing project.","operationId":"project-service#delete-project","parameters":[{"name":"v","in":"query","description":"Version of the API","required":false,"type":"string","enum":["1"]},{"name":"uid","in":"path","description":"Project UID -- v2 uid, not related to v1 id directly","required":true,"type":"string","format":"uuid"},{"name":"Authorization","in":"header","description":"JWT token issued by Heimdall","required":false,"type":"string"},{"name":"X-Sync","in":"header","description":"X-Sync header value for performing operations synchronously","required":false,"type":"boolean"},{"name":"If-Match","in":"header","description":"If-Match header value for conditional requests","required":false,"type":"string"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/projects/{uid}/settings":{"get":{"tags":["project-service"],"summary":"get-one-project-settings project-service","description":"Get a single project's settings.","operationId":"project-service#get-one-project-settings","parameters":[{"name":"v","in":"query","description":"Version of the API","required":false,"type":"string","enum":["1"]},{"name":"uid","in":"path","description":"Project UID -- v2 uid, not related to v1 id directly","required":true,"type":"string","format":"uuid"},{"name":"Authorization","in":"header","description":"JWT token issued by Heimdall","required":false,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/ProjectServiceGetOneProjectSettingsResponseBody"},"headers":{"ETag":{"description":"ETag header value","type":"string"}}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]},"put":{"tags":["project-service"],"summary":"update-project-settings project-service","description":"Update an existing project's settings.","operationId":"project-service#update-project-settings","parameters":[{"name":"v","in":"query","description":"Version of the API","required":false,"type":"string","enum":["1"]},{"name":"uid","in":"path","description":"Project UID -- v2 uid, not related to v1 id directly","required":true,"type":"string","format":"uuid"},{"name":"Authorization","in":"header","description":"JWT token issued by Heimdall","required":false,"type":"string"},{"name":"X-Sync","in":"header","description":"X-Sync header value for performing operations synchronously","required":false,"type":"boolean"},{"name":"If-Match","in":"header","description":"If-Match header value for conditional requests","required":false,"type":"string"},{"name":"Update-Project-SettingsRequestBody","in":"body","required":true,"schema":{"$ref":"#/definitions/ProjectServiceUpdateProjectSettingsRequestBody"}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/ProjectSettings"}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}}},"definitions":{"BadRequestError":{"title":"BadRequestError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"400"},"message":{"type":"string","description":"Error message","example":"The request was invalid."}},"description":"Bad request","example":{"code":"400","message":"The request was invalid."},"required":["code","message"]},"ConflictError":{"title":"ConflictError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"409"},"message":{"type":"string","description":"Error message","example":"The resource already exists."}},"description":"Conflict","example":{"code":"409","message":"The resource already exists."},"required":["code","message"]},"InternalServerError":{"title":"InternalServerError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"500"},"message":{"type":"string","description":"Error message","example":"An internal server error occurred."}},"description":"Internal server error","example":{"code":"500","message":"An internal server error occurred."},"required":["code","message"]},"NotFoundError":{"title":"NotFoundError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"404"},"message":{"type":"string","description":"Error message","example":"The resource was not found."}},"description":"Resource not found","example":{"code":"404","message":"The resource was not found."},"required":["code","message"]},"ProjectBase":{"title":"ProjectBase","type":"object","properties":{"autojoin_enabled":{"type":"boolean","description":"Whether autojoin is enabled for the project","example":false},"category":{"type":"string","description":"The category of the project","example":"Active","enum":["Active","Adopted","Archived","At-Large","Early Adoption","Emeritus","Graduated","Growth","Idle","Impact","Incubating","Kanister","Mature","Pre-LFESS","Sandbox","SIG","Standards","TAC","Working Group","TAG","NONE"]},"charter_url":{"type":"string","description":"The URL of the project charter document","example":"https://example.com/charter.pdf","format":"uri"},"created_at":{"type":"string","description":"The date and time the project was created","example":"2021-01-01T00:00:00Z","format":"date-time"},"description":{"type":"string","description":"A description of the project","example":"project foo is a project about bar"},"entity_dissolution_date":{"type":"string","description":"The date the project entity was dissolved","example":"2021-12-31","format":"date"},"entity_formation_document_url":{"type":"string","description":"The URL of the project entity formation document","example":"https://example.com/formation.pdf","format":"uri"},"formation_date":{"type":"string","description":"The date the project was formed","example":"2021-01-01","format":"date"},"funding_model":{"type":"array","items":{"type":"string","example":"Membership","enum":["Crowdfunding","Membership","Alternate Funding"]},"description":"A list of funding models for the project","example":["Crowdfunding"]},"is_foundation":{"type":"boolean","description":"Whether the project is a foundation","example":false},"legal_entity_name":{"type":"string","description":"The legal entity name of the project","example":"Example Foundation LLC"},"legal_entity_type":{"type":"string","description":"The legal entity type of the project","example":"Subproject","enum":["Subproject","Incorporated Entity","Series LLC","Unofficial Subproject","Internal Allocation","None"]},"legal_parent_uid":{"type":"string","description":"The UID of the legal parent entity, should be empty if there is none","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","format":"uuid"},"logo_url":{"type":"string","description":"The URL of the project logo","example":"https://example.com/logo.png","format":"uri"},"name":{"type":"string","description":"The pretty name of the project","example":"Foo Foundation"},"parent_uid":{"type":"string","description":"The UID of the parent project, required and must be a valid UUID","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee"},"public":{"type":"boolean","description":"Whether the project is public","example":true},"repository_url":{"type":"string","description":"The URL of the project repository","example":"https://example.com/project","format":"uri"},"slug":{"type":"string","description":"Project slug, a short slugified name of the project","example":"project-slug","format":"regexp","pattern":"^[a-z][a-z0-9_\\-]*[a-z0-9]$"},"stage":{"type":"string","description":"The stage of the project","example":"Formation - Exploratory","enum":["Formation - Exploratory","Formation - Engaged","Active","Archived","Formation - On Hold","Formation - Disengaged","Formation - Confidential","Prospect"]},"uid":{"type":"string","description":"Project UID -- v2 uid, not related to v1 id directly","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","format":"uuid"},"updated_at":{"type":"string","description":"The date and time the project was last updated","example":"2021-01-01T00:00:00Z","format":"date-time"},"website_url":{"type":"string","description":"The URL of the project website","example":"https://example.com","format":"uri"}},"description":"A base representation of LF Projects without sub-objects.","example":{"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","created_at":"2021-01-01T00:00:00Z","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","updated_at":"2021-01-01T00:00:00Z","website_url":"https://example.com"}},"ProjectFull":{"title":"ProjectFull","type":"object","properties":{"announcement_date":{"type":"string","description":"The date the project was announced","example":"2021-01-01","format":"date"},"auditors":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project auditors with their profile information","example":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}]},"autojoin_enabled":{"type":"boolean","description":"Whether autojoin is enabled for the project","example":false},"category":{"type":"string","description":"The category of the project","example":"Active","enum":["Active","Adopted","Archived","At-Large","Early Adoption","Emeritus","Graduated","Growth","Idle","Impact","Incubating","Kanister","Mature","Pre-LFESS","Sandbox","SIG","Standards","TAC","Working Group","TAG","NONE"]},"charter_url":{"type":"string","description":"The URL of the project charter document","example":"https://example.com/charter.pdf","format":"uri"},"created_at":{"type":"string","description":"The date and time the project was created","example":"2021-01-01T00:00:00Z","format":"date-time"},"description":{"type":"string","description":"A description of the project","example":"project foo is a project about bar"},"entity_dissolution_date":{"type":"string","description":"The date the project entity was dissolved","example":"2021-12-31","format":"date"},"entity_formation_document_url":{"type":"string","description":"The URL of the project entity formation document","example":"https://example.com/formation.pdf","format":"uri"},"formation_date":{"type":"string","description":"The date the project was formed","example":"2021-01-01","format":"date"},"funding_model":{"type":"array","items":{"type":"string","example":"Alternate Funding","enum":["Crowdfunding","Membership","Alternate Funding"]},"description":"A list of funding models for the project","example":["Crowdfunding"]},"is_foundation":{"type":"boolean","description":"Whether the project is a foundation","example":false},"legal_entity_name":{"type":"string","description":"The legal entity name of the project","example":"Example Foundation LLC"},"legal_entity_type":{"type":"string","description":"The legal entity type of the project","example":"Subproject","enum":["Subproject","Incorporated Entity","Series LLC","Unofficial Subproject","Internal Allocation","None"]},"legal_parent_uid":{"type":"string","description":"The UID of the legal parent entity, should be empty if there is none","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","format":"uuid"},"logo_url":{"type":"string","description":"The URL of the project logo","example":"https://example.com/logo.png","format":"uri"},"meeting_coordinators":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project meeting coordinators with their profile information","example":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}]},"mission_statement":{"type":"string","description":"The mission statement of the project","example":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption."},"name":{"type":"string","description":"The pretty name of the project","example":"Foo Foundation"},"parent_uid":{"type":"string","description":"The UID of the parent project, required and must be a valid UUID","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee"},"public":{"type":"boolean","description":"Whether the project is public","example":true},"repository_url":{"type":"string","description":"The URL of the project repository","example":"https://example.com/project","format":"uri"},"slug":{"type":"string","description":"Project slug, a short slugified name of the project","example":"project-slug","format":"regexp","pattern":"^[a-z][a-z0-9_\\-]*[a-z0-9]$"},"stage":{"type":"string","description":"The stage of the project","example":"Formation - Exploratory","enum":["Formation - Exploratory","Formation - Engaged","Active","Archived","Formation - On Hold","Formation - Disengaged","Formation - Confidential","Prospect"]},"uid":{"type":"string","description":"Project UID -- v2 uid, not related to v1 id directly","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","format":"uuid"},"updated_at":{"type":"string","description":"The date and time the project was last updated","example":"2021-01-01T00:00:00Z","format":"date-time"},"website_url":{"type":"string","description":"The URL of the project website","example":"https://example.com","format":"uri"},"writers":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project writers with their profile information","example":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]}},"description":"A full representation of LF Projects with sub-objects populated.","example":{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","created_at":"2021-01-01T00:00:00Z","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","updated_at":"2021-01-01T00:00:00Z","website_url":"https://example.com","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]}},"ProjectServiceCreateProjectRequestBody":{"title":"ProjectServiceCreateProjectRequestBody","type":"object","properties":{"announcement_date":{"type":"string","description":"The date the project was announced","example":"2021-01-01","format":"date"},"auditors":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project auditors with their profile information","example":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}]},"autojoin_enabled":{"type":"boolean","description":"Whether autojoin is enabled for the project","example":false},"category":{"type":"string","description":"The category of the project","example":"Active","enum":["Active","Adopted","Archived","At-Large","Early Adoption","Emeritus","Graduated","Growth","Idle","Impact","Incubating","Kanister","Mature","Pre-LFESS","Sandbox","SIG","Standards","TAC","Working Group","TAG","NONE"]},"charter_url":{"type":"string","description":"The URL of the project charter document","example":"https://example.com/charter.pdf","format":"uri"},"description":{"type":"string","description":"A description of the project","example":"project foo is a project about bar"},"entity_dissolution_date":{"type":"string","description":"The date the project entity was dissolved","example":"2021-12-31","format":"date"},"entity_formation_document_url":{"type":"string","description":"The URL of the project entity formation document","example":"https://example.com/formation.pdf","format":"uri"},"formation_date":{"type":"string","description":"The date the project was formed","example":"2021-01-01","format":"date"},"funding_model":{"type":"array","items":{"type":"string","example":"Membership","enum":["Crowdfunding","Membership","Alternate Funding"]},"description":"A list of funding models for the project","example":["Crowdfunding"]},"is_foundation":{"type":"boolean","description":"Whether the project is a foundation","example":false},"legal_entity_name":{"type":"string","description":"The legal entity name of the project","example":"Example Foundation LLC"},"legal_entity_type":{"type":"string","description":"The legal entity type of the project","example":"Subproject","enum":["Subproject","Incorporated Entity","Series LLC","Unofficial Subproject","Internal Allocation","None"]},"legal_parent_uid":{"type":"string","description":"The UID of the legal parent entity, should be empty if there is none","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","format":"uuid"},"logo_url":{"type":"string","description":"The URL of the project logo","example":"https://example.com/logo.png","format":"uri"},"meeting_coordinators":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project meeting coordinators with their profile information","example":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}]},"mission_statement":{"type":"string","description":"The mission statement of the project","example":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption."},"name":{"type":"string","description":"The pretty name of the project","example":"Foo Foundation"},"parent_uid":{"type":"string","description":"The UID of the parent project, required and must be a valid UUID","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee"},"public":{"type":"boolean","description":"Whether the project is public","example":true},"repository_url":{"type":"string","description":"The URL of the project repository","example":"https://example.com/project","format":"uri"},"slug":{"type":"string","description":"Project slug, a short slugified name of the project","example":"project-slug","format":"regexp","pattern":"^[a-z][a-z0-9_\\-]*[a-z0-9]$"},"stage":{"type":"string","description":"The stage of the project","example":"Formation - Exploratory","enum":["Formation - Exploratory","Formation - Engaged","Active","Archived","Formation - On Hold","Formation - Disengaged","Formation - Confidential","Prospect"]},"website_url":{"type":"string","description":"The URL of the project website","example":"https://example.com","format":"uri"},"writers":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project writers with their profile information","example":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]}},"example":{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","website_url":"https://example.com","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]},"required":["slug","description","name","parent_uid"]},"ProjectServiceGetOneProjectBaseResponseBody":{"title":"ProjectServiceGetOneProjectBaseResponseBody","$ref":"#/definitions/ProjectBase"},"ProjectServiceGetOneProjectSettingsResponseBody":{"title":"ProjectServiceGetOneProjectSettingsResponseBody","$ref":"#/definitions/ProjectSettings"},"ProjectServiceGetProjectsResponseBody":{"title":"ProjectServiceGetProjectsResponseBody","type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/definitions/ProjectFull"},"description":"Resources found","example":[{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","created_at":"2021-01-01T00:00:00Z","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","updated_at":"2021-01-01T00:00:00Z","website_url":"https://example.com","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]},{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","created_at":"2021-01-01T00:00:00Z","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","updated_at":"2021-01-01T00:00:00Z","website_url":"https://example.com","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]},{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","created_at":"2021-01-01T00:00:00Z","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","updated_at":"2021-01-01T00:00:00Z","website_url":"https://example.com","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]},{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","created_at":"2021-01-01T00:00:00Z","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","updated_at":"2021-01-01T00:00:00Z","website_url":"https://example.com","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]}]}},"example":{"projects":[{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","created_at":"2021-01-01T00:00:00Z","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","updated_at":"2021-01-01T00:00:00Z","website_url":"https://example.com","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]},{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","created_at":"2021-01-01T00:00:00Z","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","updated_at":"2021-01-01T00:00:00Z","website_url":"https://example.com","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]}]},"required":["projects"]},"ProjectServiceUpdateProjectBaseRequestBody":{"title":"ProjectServiceUpdateProjectBaseRequestBody","type":"object","properties":{"autojoin_enabled":{"type":"boolean","description":"Whether autojoin is enabled for the project","example":false},"category":{"type":"string","description":"The category of the project","example":"Active","enum":["Active","Adopted","Archived","At-Large","Early Adoption","Emeritus","Graduated","Growth","Idle","Impact","Incubating","Kanister","Mature","Pre-LFESS","Sandbox","SIG","Standards","TAC","Working Group","TAG","NONE"]},"charter_url":{"type":"string","description":"The URL of the project charter document","example":"https://example.com/charter.pdf","format":"uri"},"description":{"type":"string","description":"A description of the project","example":"project foo is a project about bar"},"entity_dissolution_date":{"type":"string","description":"The date the project entity was dissolved","example":"2021-12-31","format":"date"},"entity_formation_document_url":{"type":"string","description":"The URL of the project entity formation document","example":"https://example.com/formation.pdf","format":"uri"},"formation_date":{"type":"string","description":"The date the project was formed","example":"2021-01-01","format":"date"},"funding_model":{"type":"array","items":{"type":"string","example":"Crowdfunding","enum":["Crowdfunding","Membership","Alternate Funding"]},"description":"A list of funding models for the project","example":["Crowdfunding"]},"is_foundation":{"type":"boolean","description":"Whether the project is a foundation","example":false},"legal_entity_name":{"type":"string","description":"The legal entity name of the project","example":"Example Foundation LLC"},"legal_entity_type":{"type":"string","description":"The legal entity type of the project","example":"Subproject","enum":["Subproject","Incorporated Entity","Series LLC","Unofficial Subproject","Internal Allocation","None"]},"legal_parent_uid":{"type":"string","description":"The UID of the legal parent entity, should be empty if there is none","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","format":"uuid"},"logo_url":{"type":"string","description":"The URL of the project logo","example":"https://example.com/logo.png","format":"uri"},"name":{"type":"string","description":"The pretty name of the project","example":"Foo Foundation"},"parent_uid":{"type":"string","description":"The UID of the parent project, required and must be a valid UUID","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee"},"public":{"type":"boolean","description":"Whether the project is public","example":true},"repository_url":{"type":"string","description":"The URL of the project repository","example":"https://example.com/project","format":"uri"},"slug":{"type":"string","description":"Project slug, a short slugified name of the project","example":"project-slug","format":"regexp","pattern":"^[a-z][a-z0-9_\\-]*[a-z0-9]$"},"stage":{"type":"string","description":"The stage of the project","example":"Formation - Exploratory","enum":["Formation - Exploratory","Formation - Engaged","Active","Archived","Formation - On Hold","Formation - Disengaged","Formation - Confidential","Prospect"]},"website_url":{"type":"string","description":"The URL of the project website","example":"https://example.com","format":"uri"}},"example":{"autojoin_enabled":false,"category":"Active","charter_url":"https://example.com/charter.pdf","description":"project foo is a project about bar","entity_dissolution_date":"2021-12-31","entity_formation_document_url":"https://example.com/formation.pdf","formation_date":"2021-01-01","funding_model":["Crowdfunding"],"is_foundation":false,"legal_entity_name":"Example Foundation LLC","legal_entity_type":"Subproject","legal_parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","logo_url":"https://example.com/logo.png","name":"Foo Foundation","parent_uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","public":true,"repository_url":"https://example.com/project","slug":"project-slug","stage":"Formation - Exploratory","website_url":"https://example.com"},"required":["slug","description","name","parent_uid"]},"ProjectServiceUpdateProjectSettingsRequestBody":{"title":"ProjectServiceUpdateProjectSettingsRequestBody","type":"object","properties":{"announcement_date":{"type":"string","description":"The date the project was announced","example":"2021-01-01","format":"date"},"auditors":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project auditors with their profile information","example":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}]},"meeting_coordinators":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project meeting coordinators with their profile information","example":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}]},"mission_statement":{"type":"string","description":"The mission statement of the project","example":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption."},"writers":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project writers with their profile information","example":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]}},"example":{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]}},"ProjectSettings":{"title":"ProjectSettings","type":"object","properties":{"announcement_date":{"type":"string","description":"The date the project was announced","example":"2021-01-01","format":"date"},"auditors":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project auditors with their profile information","example":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}]},"created_at":{"type":"string","description":"The date and time the project was created","example":"2021-01-01T00:00:00Z","format":"date-time"},"meeting_coordinators":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project meeting coordinators with their profile information","example":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}]},"mission_statement":{"type":"string","description":"The mission statement of the project","example":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption."},"uid":{"type":"string","description":"Project UID -- v2 uid, not related to v1 id directly","example":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","format":"uuid"},"updated_at":{"type":"string","description":"The date and time the project was last updated","example":"2021-01-01T00:00:00Z","format":"date-time"},"writers":{"type":"array","items":{"$ref":"#/definitions/UserInfo"},"description":"A list of project writers with their profile information","example":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]}},"description":"A representation of LF Project settings.","example":{"announcement_date":"2021-01-01","auditors":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"created_at":"2021-01-01T00:00:00Z","meeting_coordinators":[{"avatar":"https://example.com/avatar1.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"},{"avatar":"https://example.com/avatar2.jpg","email":"jane.smith@example.com","name":"Jane Smith","username":"janesmith456"}],"mission_statement":"The mission of the project is to build a sustainable ecosystem around open source projects to accelerate technology development and industry adoption.","uid":"7cad5a8d-19d0-41a4-81a6-043453daf9ee","updated_at":"2021-01-01T00:00:00Z","writers":[{"avatar":"https://example.com/avatar3.jpg","email":"alice.johnson@example.com","name":"Alice Johnson","username":"alicejohnson789"},{"avatar":"https://example.com/avatar4.jpg","email":"bob.wilson@example.com","name":"Bob Wilson","username":"bobwilson101"}]}},"ServiceUnavailableError":{"title":"ServiceUnavailableError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"503"},"message":{"type":"string","description":"Error message","example":"The service is unavailable."}},"description":"Service unavailable","example":{"code":"503","message":"The service is unavailable."},"required":["code","message"]},"UserInfo":{"title":"UserInfo","type":"object","properties":{"avatar":{"type":"string","description":"The avatar URL of the user","example":"https://example.com/avatar.jpg","format":"uri"},"email":{"type":"string","description":"The email address of the user","example":"john.doe@example.com","format":"email"},"name":{"type":"string","description":"The full name of the user","example":"John Doe"},"username":{"type":"string","description":"The username/LFID of the user","example":"johndoe123"}},"description":"User information including profile details.","example":{"avatar":"https://example.com/avatar.jpg","email":"john.doe@example.com","name":"John Doe","username":"johndoe123"}}},"securityDefinitions":{"jwt_header_Authorization":{"type":"apiKey","description":"Heimdall authorization","name":"Authorization","in":"header"}}} \ No newline at end of file diff --git a/api/project/v1/gen/http/project_service/client/cli.go b/api/project/v1/gen/http/project_service/client/cli.go index 68545ff..2898987 100644 --- a/api/project/v1/gen/http/project_service/client/cli.go +++ b/api/project/v1/gen/http/project_service/client/cli.go @@ -1,4 +1,4 @@ -// Code generated by goa v3.21.1, DO NOT EDIT. +// Code generated by goa v3.22.6, DO NOT EDIT. // // project-service HTTP client CLI support package // diff --git a/api/project/v1/gen/http/project_service/client/client.go b/api/project/v1/gen/http/project_service/client/client.go index f6f7f65..5d305b7 100644 --- a/api/project/v1/gen/http/project_service/client/client.go +++ b/api/project/v1/gen/http/project_service/client/client.go @@ -1,4 +1,4 @@ -// Code generated by goa v3.21.1, DO NOT EDIT. +// Code generated by goa v3.22.6, DO NOT EDIT. // // project-service client HTTP transport // diff --git a/api/project/v1/gen/http/project_service/client/encode_decode.go b/api/project/v1/gen/http/project_service/client/encode_decode.go index ed186e0..91dea3a 100644 --- a/api/project/v1/gen/http/project_service/client/encode_decode.go +++ b/api/project/v1/gen/http/project_service/client/encode_decode.go @@ -1,4 +1,4 @@ -// Code generated by goa v3.21.1, DO NOT EDIT. +// Code generated by goa v3.22.6, DO NOT EDIT. // // project-service HTTP client encoders and decoders // diff --git a/api/project/v1/gen/http/project_service/client/paths.go b/api/project/v1/gen/http/project_service/client/paths.go index b785f78..96487c5 100644 --- a/api/project/v1/gen/http/project_service/client/paths.go +++ b/api/project/v1/gen/http/project_service/client/paths.go @@ -1,4 +1,4 @@ -// Code generated by goa v3.21.1, DO NOT EDIT. +// Code generated by goa v3.22.6, DO NOT EDIT. // // HTTP request path constructors for the project-service service. // diff --git a/api/project/v1/gen/http/project_service/client/types.go b/api/project/v1/gen/http/project_service/client/types.go index d5d096f..da76ed1 100644 --- a/api/project/v1/gen/http/project_service/client/types.go +++ b/api/project/v1/gen/http/project_service/client/types.go @@ -1,4 +1,4 @@ -// Code generated by goa v3.21.1, DO NOT EDIT. +// Code generated by goa v3.22.6, DO NOT EDIT. // // project-service HTTP client types // diff --git a/api/project/v1/gen/http/project_service/server/encode_decode.go b/api/project/v1/gen/http/project_service/server/encode_decode.go index 91121eb..dbedcf0 100644 --- a/api/project/v1/gen/http/project_service/server/encode_decode.go +++ b/api/project/v1/gen/http/project_service/server/encode_decode.go @@ -1,4 +1,4 @@ -// Code generated by goa v3.21.1, DO NOT EDIT. +// Code generated by goa v3.22.6, DO NOT EDIT. // // project-service HTTP server encoders and decoders // @@ -39,8 +39,8 @@ func EncodeGetProjectsResponse(encoder func(context.Context, http.ResponseWriter // DecodeGetProjectsRequest returns a decoder for requests sent to the // project-service get-projects endpoint. -func DecodeGetProjectsRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (any, error) { - return func(r *http.Request) (any, error) { +func DecodeGetProjectsRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (*projectservice.GetProjectsPayload, error) { + return func(r *http.Request) (*projectservice.GetProjectsPayload, error) { var ( version *string bearerToken *string @@ -144,15 +144,15 @@ func EncodeCreateProjectResponse(encoder func(context.Context, http.ResponseWrit // DecodeCreateProjectRequest returns a decoder for requests sent to the // project-service create-project endpoint. -func DecodeCreateProjectRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (any, error) { - return func(r *http.Request) (any, error) { +func DecodeCreateProjectRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (*projectservice.CreateProjectPayload, error) { + return func(r *http.Request) (*projectservice.CreateProjectPayload, error) { var ( body CreateProjectRequestBody err error ) err = decoder(r).Decode(&body) if err != nil { - if err == io.EOF { + if errors.Is(err, io.EOF) { return nil, goa.MissingPayloadError() } var gerr *goa.ServiceError @@ -295,8 +295,8 @@ func EncodeGetOneProjectBaseResponse(encoder func(context.Context, http.Response // DecodeGetOneProjectBaseRequest returns a decoder for requests sent to the // project-service get-one-project-base endpoint. -func DecodeGetOneProjectBaseRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (any, error) { - return func(r *http.Request) (any, error) { +func DecodeGetOneProjectBaseRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (*projectservice.GetOneProjectBasePayload, error) { + return func(r *http.Request) (*projectservice.GetOneProjectBasePayload, error) { var ( uid string version *string @@ -408,8 +408,8 @@ func EncodeGetOneProjectSettingsResponse(encoder func(context.Context, http.Resp // DecodeGetOneProjectSettingsRequest returns a decoder for requests sent to // the project-service get-one-project-settings endpoint. -func DecodeGetOneProjectSettingsRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (any, error) { - return func(r *http.Request) (any, error) { +func DecodeGetOneProjectSettingsRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (*projectservice.GetOneProjectSettingsPayload, error) { + return func(r *http.Request) (*projectservice.GetOneProjectSettingsPayload, error) { var ( uid string version *string @@ -518,15 +518,15 @@ func EncodeUpdateProjectBaseResponse(encoder func(context.Context, http.Response // DecodeUpdateProjectBaseRequest returns a decoder for requests sent to the // project-service update-project-base endpoint. -func DecodeUpdateProjectBaseRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (any, error) { - return func(r *http.Request) (any, error) { +func DecodeUpdateProjectBaseRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (*projectservice.UpdateProjectBasePayload, error) { + return func(r *http.Request) (*projectservice.UpdateProjectBasePayload, error) { var ( body UpdateProjectBaseRequestBody err error ) err = decoder(r).Decode(&body) if err != nil { - if err == io.EOF { + if errors.Is(err, io.EOF) { return nil, goa.MissingPayloadError() } var gerr *goa.ServiceError @@ -689,15 +689,15 @@ func EncodeUpdateProjectSettingsResponse(encoder func(context.Context, http.Resp // DecodeUpdateProjectSettingsRequest returns a decoder for requests sent to // the project-service update-project-settings endpoint. -func DecodeUpdateProjectSettingsRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (any, error) { - return func(r *http.Request) (any, error) { +func DecodeUpdateProjectSettingsRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (*projectservice.UpdateProjectSettingsPayload, error) { + return func(r *http.Request) (*projectservice.UpdateProjectSettingsPayload, error) { var ( body UpdateProjectSettingsRequestBody err error ) err = decoder(r).Decode(&body) if err != nil { - if err == io.EOF { + if errors.Is(err, io.EOF) { return nil, goa.MissingPayloadError() } var gerr *goa.ServiceError @@ -844,8 +844,8 @@ func EncodeDeleteProjectResponse(encoder func(context.Context, http.ResponseWrit // DecodeDeleteProjectRequest returns a decoder for requests sent to the // project-service delete-project endpoint. -func DecodeDeleteProjectRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (any, error) { - return func(r *http.Request) (any, error) { +func DecodeDeleteProjectRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (*projectservice.DeleteProjectPayload, error) { + return func(r *http.Request) (*projectservice.DeleteProjectPayload, error) { var ( uid string version *string diff --git a/api/project/v1/gen/http/project_service/server/paths.go b/api/project/v1/gen/http/project_service/server/paths.go index 7277445..8497993 100644 --- a/api/project/v1/gen/http/project_service/server/paths.go +++ b/api/project/v1/gen/http/project_service/server/paths.go @@ -1,4 +1,4 @@ -// Code generated by goa v3.21.1, DO NOT EDIT. +// Code generated by goa v3.22.6, DO NOT EDIT. // // HTTP request path constructors for the project-service service. // diff --git a/api/project/v1/gen/http/project_service/server/server.go b/api/project/v1/gen/http/project_service/server/server.go index 1308e81..fd8c133 100644 --- a/api/project/v1/gen/http/project_service/server/server.go +++ b/api/project/v1/gen/http/project_service/server/server.go @@ -1,4 +1,4 @@ -// Code generated by goa v3.21.1, DO NOT EDIT. +// Code generated by goa v3.22.6, DO NOT EDIT. // // project-service HTTP server // @@ -188,20 +188,22 @@ func NewGetProjectsHandler( ctx = context.WithValue(ctx, goa.ServiceKey, "project-service") payload, err := decodeRequest(r) if err != nil { - if err := encodeError(ctx, w, err); err != nil { + if err := encodeError(ctx, w, err); err != nil && errhandler != nil { errhandler(ctx, w, err) } return } res, err := endpoint(ctx, payload) if err != nil { - if err := encodeError(ctx, w, err); err != nil { + if err := encodeError(ctx, w, err); err != nil && errhandler != nil { errhandler(ctx, w, err) } return } if err := encodeResponse(ctx, w, res); err != nil { - errhandler(ctx, w, err) + if errhandler != nil { + errhandler(ctx, w, err) + } } }) } @@ -239,20 +241,22 @@ func NewCreateProjectHandler( ctx = context.WithValue(ctx, goa.ServiceKey, "project-service") payload, err := decodeRequest(r) if err != nil { - if err := encodeError(ctx, w, err); err != nil { + if err := encodeError(ctx, w, err); err != nil && errhandler != nil { errhandler(ctx, w, err) } return } res, err := endpoint(ctx, payload) if err != nil { - if err := encodeError(ctx, w, err); err != nil { + if err := encodeError(ctx, w, err); err != nil && errhandler != nil { errhandler(ctx, w, err) } return } if err := encodeResponse(ctx, w, res); err != nil { - errhandler(ctx, w, err) + if errhandler != nil { + errhandler(ctx, w, err) + } } }) } @@ -291,20 +295,22 @@ func NewGetOneProjectBaseHandler( ctx = context.WithValue(ctx, goa.ServiceKey, "project-service") payload, err := decodeRequest(r) if err != nil { - if err := encodeError(ctx, w, err); err != nil { + if err := encodeError(ctx, w, err); err != nil && errhandler != nil { errhandler(ctx, w, err) } return } res, err := endpoint(ctx, payload) if err != nil { - if err := encodeError(ctx, w, err); err != nil { + if err := encodeError(ctx, w, err); err != nil && errhandler != nil { errhandler(ctx, w, err) } return } if err := encodeResponse(ctx, w, res); err != nil { - errhandler(ctx, w, err) + if errhandler != nil { + errhandler(ctx, w, err) + } } }) } @@ -343,20 +349,22 @@ func NewGetOneProjectSettingsHandler( ctx = context.WithValue(ctx, goa.ServiceKey, "project-service") payload, err := decodeRequest(r) if err != nil { - if err := encodeError(ctx, w, err); err != nil { + if err := encodeError(ctx, w, err); err != nil && errhandler != nil { errhandler(ctx, w, err) } return } res, err := endpoint(ctx, payload) if err != nil { - if err := encodeError(ctx, w, err); err != nil { + if err := encodeError(ctx, w, err); err != nil && errhandler != nil { errhandler(ctx, w, err) } return } if err := encodeResponse(ctx, w, res); err != nil { - errhandler(ctx, w, err) + if errhandler != nil { + errhandler(ctx, w, err) + } } }) } @@ -395,20 +403,22 @@ func NewUpdateProjectBaseHandler( ctx = context.WithValue(ctx, goa.ServiceKey, "project-service") payload, err := decodeRequest(r) if err != nil { - if err := encodeError(ctx, w, err); err != nil { + if err := encodeError(ctx, w, err); err != nil && errhandler != nil { errhandler(ctx, w, err) } return } res, err := endpoint(ctx, payload) if err != nil { - if err := encodeError(ctx, w, err); err != nil { + if err := encodeError(ctx, w, err); err != nil && errhandler != nil { errhandler(ctx, w, err) } return } if err := encodeResponse(ctx, w, res); err != nil { - errhandler(ctx, w, err) + if errhandler != nil { + errhandler(ctx, w, err) + } } }) } @@ -447,20 +457,22 @@ func NewUpdateProjectSettingsHandler( ctx = context.WithValue(ctx, goa.ServiceKey, "project-service") payload, err := decodeRequest(r) if err != nil { - if err := encodeError(ctx, w, err); err != nil { + if err := encodeError(ctx, w, err); err != nil && errhandler != nil { errhandler(ctx, w, err) } return } res, err := endpoint(ctx, payload) if err != nil { - if err := encodeError(ctx, w, err); err != nil { + if err := encodeError(ctx, w, err); err != nil && errhandler != nil { errhandler(ctx, w, err) } return } if err := encodeResponse(ctx, w, res); err != nil { - errhandler(ctx, w, err) + if errhandler != nil { + errhandler(ctx, w, err) + } } }) } @@ -498,20 +510,22 @@ func NewDeleteProjectHandler( ctx = context.WithValue(ctx, goa.ServiceKey, "project-service") payload, err := decodeRequest(r) if err != nil { - if err := encodeError(ctx, w, err); err != nil { + if err := encodeError(ctx, w, err); err != nil && errhandler != nil { errhandler(ctx, w, err) } return } res, err := endpoint(ctx, payload) if err != nil { - if err := encodeError(ctx, w, err); err != nil { + if err := encodeError(ctx, w, err); err != nil && errhandler != nil { errhandler(ctx, w, err) } return } if err := encodeResponse(ctx, w, res); err != nil { - errhandler(ctx, w, err) + if errhandler != nil { + errhandler(ctx, w, err) + } } }) } @@ -549,13 +563,15 @@ func NewReadyzHandler( var err error res, err := endpoint(ctx, nil) if err != nil { - if err := encodeError(ctx, w, err); err != nil { + if err := encodeError(ctx, w, err); err != nil && errhandler != nil { errhandler(ctx, w, err) } return } if err := encodeResponse(ctx, w, res); err != nil { - errhandler(ctx, w, err) + if errhandler != nil { + errhandler(ctx, w, err) + } } }) } @@ -593,13 +609,15 @@ func NewLivezHandler( var err error res, err := endpoint(ctx, nil) if err != nil { - if err := encodeError(ctx, w, err); err != nil { + if err := encodeError(ctx, w, err); err != nil && errhandler != nil { errhandler(ctx, w, err) } return } if err := encodeResponse(ctx, w, res); err != nil { - errhandler(ctx, w, err) + if errhandler != nil { + errhandler(ctx, w, err) + } } }) } diff --git a/api/project/v1/gen/http/project_service/server/types.go b/api/project/v1/gen/http/project_service/server/types.go index 7534cec..c2697e8 100644 --- a/api/project/v1/gen/http/project_service/server/types.go +++ b/api/project/v1/gen/http/project_service/server/types.go @@ -1,4 +1,4 @@ -// Code generated by goa v3.21.1, DO NOT EDIT. +// Code generated by goa v3.22.6, DO NOT EDIT. // // project-service HTTP server types // diff --git a/api/project/v1/gen/project_service/client.go b/api/project/v1/gen/project_service/client.go index ab704e9..e3f0c3f 100644 --- a/api/project/v1/gen/project_service/client.go +++ b/api/project/v1/gen/project_service/client.go @@ -1,4 +1,4 @@ -// Code generated by goa v3.21.1, DO NOT EDIT. +// Code generated by goa v3.22.6, DO NOT EDIT. // // project-service client // diff --git a/api/project/v1/gen/project_service/endpoints.go b/api/project/v1/gen/project_service/endpoints.go index 9571a5c..bef0271 100644 --- a/api/project/v1/gen/project_service/endpoints.go +++ b/api/project/v1/gen/project_service/endpoints.go @@ -1,4 +1,4 @@ -// Code generated by goa v3.21.1, DO NOT EDIT. +// Code generated by goa v3.22.6, DO NOT EDIT. // // project-service endpoints // diff --git a/api/project/v1/gen/project_service/service.go b/api/project/v1/gen/project_service/service.go index e98bbe4..97d1829 100644 --- a/api/project/v1/gen/project_service/service.go +++ b/api/project/v1/gen/project_service/service.go @@ -1,4 +1,4 @@ -// Code generated by goa v3.21.1, DO NOT EDIT. +// Code generated by goa v3.22.6, DO NOT EDIT. // // project-service service // diff --git a/charts/lfx-v2-project-service/Chart.yaml b/charts/lfx-v2-project-service/Chart.yaml index 0581c39..2526b40 100644 --- a/charts/lfx-v2-project-service/Chart.yaml +++ b/charts/lfx-v2-project-service/Chart.yaml @@ -5,5 +5,5 @@ apiVersion: v2 name: lfx-v2-project-service description: LFX Platform V2 Project Service chart type: application -version: 0.5.3 +version: 0.5.4 appVersion: "latest" diff --git a/internal/domain/models/project.go b/internal/domain/models/project.go index 6bd691e..3c0d002 100644 --- a/internal/domain/models/project.go +++ b/internal/domain/models/project.go @@ -67,35 +67,18 @@ func (p *ProjectBase) Tags() []string { } if p.UID != "" { - // without prefix - tags = append(tags, p.UID) - // with prefix tag := fmt.Sprintf("project_uid:%s", p.UID) tags = append(tags, tag) } - if p.ParentUID != "" { - // with prefix - tag := fmt.Sprintf("parent_uid:%s", p.ParentUID) - tags = append(tags, tag) - } - if p.Slug != "" { - // without prefix - tags = append(tags, p.Slug) - // with prefix tag := fmt.Sprintf("project_slug:%s", p.Slug) tags = append(tags, tag) } if p.Name != "" { - // without prefix - tags = append(tags, p.Name) - } - - if p.Description != "" { - // without prefix - tags = append(tags, p.Description) + tag := fmt.Sprintf("project_name:%s", p.Name) + tags = append(tags, tag) } return tags @@ -113,17 +96,9 @@ func (p *ProjectSettings) Tags() []string { } if p.UID != "" { - // without prefix - tags = append(tags, p.UID) - // with prefix tag := fmt.Sprintf("project_uid:%s", p.UID) tags = append(tags, tag) } - if p.MissionStatement != "" { - // without prefix - tags = append(tags, p.MissionStatement) - } - return tags } diff --git a/internal/domain/models/project_test.go b/internal/domain/models/project_test.go index 2bfec2b..ad24510 100644 --- a/internal/domain/models/project_test.go +++ b/internal/domain/models/project_test.go @@ -32,7 +32,6 @@ func TestProjectBaseTags(t *testing.T) { UID: "project-123", }, expected: []string{ - "project-123", "project_uid:project-123", }, }, @@ -42,7 +41,6 @@ func TestProjectBaseTags(t *testing.T) { Slug: "test-project", }, expected: []string{ - "test-project", "project_slug:test-project", }, }, @@ -52,7 +50,7 @@ func TestProjectBaseTags(t *testing.T) { Name: "Test Project", }, expected: []string{ - "Test Project", + "project_name:Test Project", }, }, { @@ -60,9 +58,7 @@ func TestProjectBaseTags(t *testing.T) { project: &ProjectBase{ Description: "This is a test project", }, - expected: []string{ - "This is a test project", - }, + expected: nil, }, { name: "project with all tag fields", @@ -74,13 +70,9 @@ func TestProjectBaseTags(t *testing.T) { ParentUID: "parent-456", }, expected: []string{ - "project-123", "project_uid:project-123", - "parent_uid:parent-456", - "test-project", "project_slug:test-project", - "Test Project", - "This is a test project", + "project_name:Test Project", }, }, { @@ -90,9 +82,7 @@ func TestProjectBaseTags(t *testing.T) { ParentUID: "parent-456", }, expected: []string{ - "project-123", "project_uid:project-123", - "parent_uid:parent-456", }, }, { @@ -118,13 +108,9 @@ func TestProjectBaseTags(t *testing.T) { RepositoryURL: "https://github.com/example/repo", }, expected: []string{ - "project-123", "project_uid:project-123", - "parent_uid:parent-456", - "test-project", "project_slug:test-project", - "Test Project", - "This is a test project", + "project_name:Test Project", }, }, } @@ -172,7 +158,6 @@ func TestProjectSettingsTags(t *testing.T) { UID: "settings-123", }, expected: []string{ - "settings-123", "project_uid:settings-123", }, }, @@ -181,9 +166,7 @@ func TestProjectSettingsTags(t *testing.T) { settings: &ProjectSettings{ MissionStatement: "Our mission is to test", }, - expected: []string{ - "Our mission is to test", - }, + expected: nil, }, { name: "settings with all tag fields", @@ -192,9 +175,7 @@ func TestProjectSettingsTags(t *testing.T) { MissionStatement: "Our mission is to test", }, expected: []string{ - "settings-123", "project_uid:settings-123", - "Our mission is to test", }, }, { @@ -218,9 +199,7 @@ func TestProjectSettingsTags(t *testing.T) { UpdatedAt: &now, }, expected: []string{ - "settings-123", "project_uid:settings-123", - "Our mission is to test", }, }, }