mirror of
https://github.com/zitadel/zitadel.git
synced 2024-12-21 23:37:31 +00:00
7a6ca24625
* check uniqueness on create and register user * change user email, reserve release unique email * usergrant unique aggregate * usergrant uniqueness * validate UserGrant * fix tests * domain is set on username in all orgs * domain in admin * org domain sql * zitadel domain org name * org domains * org iam policy * default org iam policy * SETUP * load login names * login by login name * login name * fix: merge master * fix: merge master * Update internal/user/repository/eventsourcing/user.go Co-authored-by: Livio Amstutz <livio.a@gmail.com> * fix: fix unique domains * fix: rename env variable Co-authored-by: adlerhurst <silvan.reusser@gmail.com> Co-authored-by: Livio Amstutz <livio.a@gmail.com>
714 lines
17 KiB
JSON
714 lines
17 KiB
JSON
{
|
|
"swagger": "2.0",
|
|
"info": {
|
|
"title": "admin service",
|
|
"version": "0.1",
|
|
"contact": {
|
|
"url": "https://github.com/caos/zitadel/pkg/admin"
|
|
}
|
|
},
|
|
"schemes": [
|
|
"https"
|
|
],
|
|
"consumes": [
|
|
"application/json",
|
|
"application/grpc"
|
|
],
|
|
"produces": [
|
|
"application/json",
|
|
"application/grpc"
|
|
],
|
|
"paths": {
|
|
"/healthz": {
|
|
"get": {
|
|
"summary": "Healthz returns status OK as soon as the service started",
|
|
"operationId": "Healthz",
|
|
"responses": {
|
|
"200": {
|
|
"description": "A successful response.",
|
|
"schema": {
|
|
"properties": {}
|
|
}
|
|
}
|
|
},
|
|
"tags": [
|
|
"AdminService"
|
|
]
|
|
}
|
|
},
|
|
"/orgs/_isunique": {
|
|
"get": {
|
|
"summary": "ORG",
|
|
"operationId": "IsOrgUnique",
|
|
"responses": {
|
|
"200": {
|
|
"description": "A successful response.",
|
|
"schema": {
|
|
"$ref": "#/definitions/v1UniqueOrgResponse"
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"name": "name",
|
|
"in": "query",
|
|
"required": false,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"name": "domain",
|
|
"in": "query",
|
|
"required": false,
|
|
"type": "string"
|
|
}
|
|
],
|
|
"tags": [
|
|
"AdminService"
|
|
]
|
|
}
|
|
},
|
|
"/orgs/_search": {
|
|
"post": {
|
|
"operationId": "SearchOrgs",
|
|
"responses": {
|
|
"200": {
|
|
"description": "A successful response.",
|
|
"schema": {
|
|
"$ref": "#/definitions/v1OrgSearchResponse"
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"name": "body",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/v1OrgSearchRequest"
|
|
}
|
|
}
|
|
],
|
|
"tags": [
|
|
"AdminService"
|
|
]
|
|
}
|
|
},
|
|
"/orgs/_setup": {
|
|
"post": {
|
|
"operationId": "SetUpOrg",
|
|
"responses": {
|
|
"200": {
|
|
"description": "A successful response.",
|
|
"schema": {
|
|
"$ref": "#/definitions/v1OrgSetUpResponse"
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"name": "body",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/v1OrgSetUpRequest"
|
|
}
|
|
}
|
|
],
|
|
"tags": [
|
|
"AdminService"
|
|
]
|
|
}
|
|
},
|
|
"/orgs/{id}": {
|
|
"get": {
|
|
"operationId": "GetOrgByID",
|
|
"responses": {
|
|
"200": {
|
|
"description": "A successful response.",
|
|
"schema": {
|
|
"$ref": "#/definitions/v1Org"
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"type": "string"
|
|
}
|
|
],
|
|
"tags": [
|
|
"AdminService"
|
|
]
|
|
}
|
|
},
|
|
"/orgs/{org_id}/iampolicy": {
|
|
"get": {
|
|
"summary": "ORG_IAM_POLICY",
|
|
"operationId": "GetOrgIamPolicy",
|
|
"responses": {
|
|
"200": {
|
|
"description": "A successful response.",
|
|
"schema": {
|
|
"$ref": "#/definitions/v1OrgIamPolicy"
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"name": "org_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"type": "string"
|
|
}
|
|
],
|
|
"tags": [
|
|
"AdminService"
|
|
]
|
|
},
|
|
"delete": {
|
|
"operationId": "DeleteOrgIamPolicy",
|
|
"responses": {
|
|
"200": {
|
|
"description": "A successful response.",
|
|
"schema": {
|
|
"properties": {}
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"name": "org_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"type": "string"
|
|
}
|
|
],
|
|
"tags": [
|
|
"AdminService"
|
|
]
|
|
},
|
|
"post": {
|
|
"operationId": "CreateOrgIamPolicy",
|
|
"responses": {
|
|
"200": {
|
|
"description": "A successful response.",
|
|
"schema": {
|
|
"$ref": "#/definitions/v1OrgIamPolicy"
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"name": "org_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"name": "body",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/v1OrgIamPolicyRequest"
|
|
}
|
|
}
|
|
],
|
|
"tags": [
|
|
"AdminService"
|
|
]
|
|
},
|
|
"put": {
|
|
"operationId": "UpdateOrgIamPolicy",
|
|
"responses": {
|
|
"200": {
|
|
"description": "A successful response.",
|
|
"schema": {
|
|
"$ref": "#/definitions/v1OrgIamPolicy"
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"name": "org_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"name": "body",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/v1OrgIamPolicyRequest"
|
|
}
|
|
}
|
|
],
|
|
"tags": [
|
|
"AdminService"
|
|
]
|
|
}
|
|
},
|
|
"/ready": {
|
|
"get": {
|
|
"summary": "Ready returns status OK as soon as all dependent services are available",
|
|
"operationId": "Ready",
|
|
"responses": {
|
|
"200": {
|
|
"description": "A successful response.",
|
|
"schema": {
|
|
"properties": {}
|
|
}
|
|
}
|
|
},
|
|
"tags": [
|
|
"AdminService"
|
|
]
|
|
}
|
|
},
|
|
"/validate": {
|
|
"get": {
|
|
"operationId": "Validate",
|
|
"responses": {
|
|
"200": {
|
|
"description": "A successful response.",
|
|
"schema": {
|
|
"$ref": "#/definitions/protobufStruct"
|
|
}
|
|
}
|
|
},
|
|
"tags": [
|
|
"AdminService"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"definitions": {
|
|
"protobufListValue": {
|
|
"type": "object",
|
|
"properties": {
|
|
"values": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/protobufValue"
|
|
},
|
|
"description": "Repeated field of dynamically typed values."
|
|
}
|
|
},
|
|
"description": "`ListValue` is a wrapper around a repeated field of values.\n\nThe JSON representation for `ListValue` is JSON array."
|
|
},
|
|
"protobufNullValue": {
|
|
"type": "string",
|
|
"enum": [
|
|
"NULL_VALUE"
|
|
],
|
|
"default": "NULL_VALUE",
|
|
"description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value."
|
|
},
|
|
"protobufStruct": {
|
|
"type": "object",
|
|
"properties": {
|
|
"fields": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/definitions/protobufValue"
|
|
},
|
|
"description": "Unordered map of dynamically typed values."
|
|
}
|
|
},
|
|
"description": "`Struct` represents a structured data value, consisting of fields\nwhich map to dynamically typed values. In some languages, `Struct`\nmight be supported by a native representation. For example, in\nscripting languages like JS a struct is represented as an\nobject. The details of that representation are described together\nwith the proto support for the language.\n\nThe JSON representation for `Struct` is JSON object."
|
|
},
|
|
"protobufValue": {
|
|
"type": "object",
|
|
"properties": {
|
|
"null_value": {
|
|
"$ref": "#/definitions/protobufNullValue",
|
|
"description": "Represents a null value."
|
|
},
|
|
"number_value": {
|
|
"type": "number",
|
|
"format": "double",
|
|
"description": "Represents a double value."
|
|
},
|
|
"string_value": {
|
|
"type": "string",
|
|
"description": "Represents a string value."
|
|
},
|
|
"bool_value": {
|
|
"type": "boolean",
|
|
"format": "boolean",
|
|
"description": "Represents a boolean value."
|
|
},
|
|
"struct_value": {
|
|
"$ref": "#/definitions/protobufStruct",
|
|
"description": "Represents a structured value."
|
|
},
|
|
"list_value": {
|
|
"$ref": "#/definitions/protobufListValue",
|
|
"description": "Represents a repeated `Value`."
|
|
}
|
|
},
|
|
"description": "`Value` represents a dynamically typed value which can be either\nnull, a number, a string, a boolean, a recursive struct value, or a\nlist of values. A producer of value is expected to set one of that\nvariants, absence of any variant indicates an error.\n\nThe JSON representation for `Value` is JSON value."
|
|
},
|
|
"v1CreateOrgRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"domain": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"v1CreateUserRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_name": {
|
|
"type": "string"
|
|
},
|
|
"first_name": {
|
|
"type": "string"
|
|
},
|
|
"last_name": {
|
|
"type": "string"
|
|
},
|
|
"nick_name": {
|
|
"type": "string"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"preferred_language": {
|
|
"type": "string"
|
|
},
|
|
"gender": {
|
|
"$ref": "#/definitions/v1Gender"
|
|
},
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"is_email_verified": {
|
|
"type": "boolean",
|
|
"format": "boolean"
|
|
},
|
|
"phone": {
|
|
"type": "string"
|
|
},
|
|
"is_phone_verified": {
|
|
"type": "boolean",
|
|
"format": "boolean"
|
|
},
|
|
"country": {
|
|
"type": "string"
|
|
},
|
|
"locality": {
|
|
"type": "string"
|
|
},
|
|
"postal_code": {
|
|
"type": "string"
|
|
},
|
|
"region": {
|
|
"type": "string"
|
|
},
|
|
"street_address": {
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"v1Gender": {
|
|
"type": "string",
|
|
"enum": [
|
|
"GENDER_UNSPECIFIED",
|
|
"GENDER_FEMALE",
|
|
"GENDER_MALE",
|
|
"GENDER_DIVERSE"
|
|
],
|
|
"default": "GENDER_UNSPECIFIED"
|
|
},
|
|
"v1Org": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"$ref": "#/definitions/v1OrgState"
|
|
},
|
|
"creation_date": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"change_date": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"domain": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"v1OrgIamPolicy": {
|
|
"type": "object",
|
|
"properties": {
|
|
"org_id": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"user_login_must_be_domain": {
|
|
"type": "boolean",
|
|
"format": "boolean"
|
|
},
|
|
"default": {
|
|
"type": "boolean",
|
|
"format": "boolean"
|
|
},
|
|
"sequence": {
|
|
"type": "string",
|
|
"format": "uint64"
|
|
},
|
|
"creation_date": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"change_date": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
},
|
|
"v1OrgIamPolicyRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"org_id": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"user_login_must_be_domain": {
|
|
"type": "boolean",
|
|
"format": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"v1OrgSearchKey": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ORGSEARCHKEY_UNSPECIFIED",
|
|
"ORGSEARCHKEY_ORG_NAME",
|
|
"ORGSEARCHKEY_DOMAIN",
|
|
"ORGSEARCHKEY_STATE"
|
|
],
|
|
"default": "ORGSEARCHKEY_UNSPECIFIED"
|
|
},
|
|
"v1OrgSearchMethod": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ORGSEARCHMETHOD_EQUALS",
|
|
"ORGSEARCHMETHOD_STARTS_WITH",
|
|
"ORGSEARCHMETHOD_CONTAINS"
|
|
],
|
|
"default": "ORGSEARCHMETHOD_EQUALS"
|
|
},
|
|
"v1OrgSearchQuery": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key": {
|
|
"$ref": "#/definitions/v1OrgSearchKey"
|
|
},
|
|
"method": {
|
|
"$ref": "#/definitions/v1OrgSearchMethod"
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"v1OrgSearchRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"offset": {
|
|
"type": "string",
|
|
"format": "uint64"
|
|
},
|
|
"limit": {
|
|
"type": "string",
|
|
"format": "uint64"
|
|
},
|
|
"sorting_column": {
|
|
"$ref": "#/definitions/v1OrgSearchKey"
|
|
},
|
|
"asc": {
|
|
"type": "boolean",
|
|
"format": "boolean"
|
|
},
|
|
"queries": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/v1OrgSearchQuery"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"v1OrgSearchResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"offset": {
|
|
"type": "string",
|
|
"format": "uint64"
|
|
},
|
|
"limit": {
|
|
"type": "string",
|
|
"format": "uint64"
|
|
},
|
|
"total_result": {
|
|
"type": "string",
|
|
"format": "uint64"
|
|
},
|
|
"result": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/v1Org"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"v1OrgSetUpRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"org": {
|
|
"$ref": "#/definitions/v1CreateOrgRequest"
|
|
},
|
|
"user": {
|
|
"$ref": "#/definitions/v1CreateUserRequest"
|
|
}
|
|
}
|
|
},
|
|
"v1OrgSetUpResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"org": {
|
|
"$ref": "#/definitions/v1Org"
|
|
},
|
|
"user": {
|
|
"$ref": "#/definitions/v1User"
|
|
}
|
|
}
|
|
},
|
|
"v1OrgState": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ORGSTATE_UNSPECIFIED",
|
|
"ORGSTATE_ACTIVE",
|
|
"ORGSTATE_INACTIVE"
|
|
],
|
|
"default": "ORGSTATE_UNSPECIFIED"
|
|
},
|
|
"v1UniqueOrgResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"is_unique": {
|
|
"type": "boolean",
|
|
"format": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"v1User": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"$ref": "#/definitions/v1UserState"
|
|
},
|
|
"creation_date": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"change_date": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"user_name": {
|
|
"type": "string"
|
|
},
|
|
"first_name": {
|
|
"type": "string"
|
|
},
|
|
"last_name": {
|
|
"type": "string"
|
|
},
|
|
"nick_name": {
|
|
"type": "string"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"preferred_language": {
|
|
"type": "string"
|
|
},
|
|
"gender": {
|
|
"$ref": "#/definitions/v1Gender"
|
|
},
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"isEmailVerified": {
|
|
"type": "boolean",
|
|
"format": "boolean"
|
|
},
|
|
"phone": {
|
|
"type": "string"
|
|
},
|
|
"isPhoneVerified": {
|
|
"type": "boolean",
|
|
"format": "boolean"
|
|
},
|
|
"country": {
|
|
"type": "string"
|
|
},
|
|
"locality": {
|
|
"type": "string"
|
|
},
|
|
"postal_code": {
|
|
"type": "string"
|
|
},
|
|
"region": {
|
|
"type": "string"
|
|
},
|
|
"street_address": {
|
|
"type": "string"
|
|
},
|
|
"sequence": {
|
|
"type": "string",
|
|
"format": "uint64"
|
|
}
|
|
}
|
|
},
|
|
"v1UserState": {
|
|
"type": "string",
|
|
"enum": [
|
|
"USERSTATE_UNSPECIFIED",
|
|
"USERSTATE_ACTIVE",
|
|
"USERSTATE_INACTIVE",
|
|
"USERSTATE_DELETED",
|
|
"USERSTATE_LOCKED",
|
|
"USERSTATE_SUSPEND",
|
|
"USERSTATE_INITIAL"
|
|
],
|
|
"default": "USERSTATE_UNSPECIFIED"
|
|
}
|
|
}
|
|
}
|