self::ARRAY_TYPE, 'path' => 'auth.identity', 'items' => ['type' => self::STRING_TYPE], 'description' => << self::OBJECT_TYPE, 'path' => 'auth.identity.password', 'properties' => [ 'id' => [ 'type' => self::STRING_TYPE, 'description' => $this->id('user'), ], 'name' => [ 'type' => self::STRING_TYPE, 'description' => 'The username of the user', ], 'password' => [ 'type' => self::STRING_TYPE, 'description' => 'The password of the user', ], 'domain' => $this->domain(), ], ]; } public function tokenBody(): array { return [ 'path' => 'auth.identity.token', 'sentAs' => 'id', 'type' => self::STRING_TYPE, 'description' => $this->id('token'), ]; } public function scope(): array { return [ 'type' => self::OBJECT_TYPE, 'path' => 'auth', 'properties' => [ 'project' => $this->project(), 'domain' => $this->domain(), ], ]; } public function typeQuery(): array { return [ 'type' => 'string', 'location' => 'query', 'description' => 'Filters all the available services according to a given type', ]; } public function interf(): array { return [ 'description' => << << << 'string', 'sentAs' => 'service_id', 'description' => $this->id('service')['description'].' that this endpoint belongs to', ]; } public function password(): array { return [ 'description' => << 'The personal e-mail address of the user', ]; } public function effective(): array { return [ 'type' => self::BOOL_TYPE, 'location' => self::QUERY, 'description' => << 'scope.project.id', 'location' => 'query', 'description' => 'Filter by project ID', ]; } public function domainIdQuery(): array { return [ 'sentAs' => 'scope.domain.id', 'location' => 'query', 'description' => $this->id('domain')['description'].' associated with the role assignments', ]; } public function roleIdQuery(): array { return [ 'sentAs' => 'role.id', 'location' => 'query', 'description' => 'Filter by role ID', ]; } public function groupIdQuery(): array { return [ 'sentAs' => 'group.id', 'location' => 'query', 'description' => 'Filter by group ID', ]; } public function userIdQuery(): array { return [ 'sentAs' => 'user.id', 'location' => 'query', 'description' => 'Filter by user ID', ]; } public function domain(): array { return [ 'type' => 'object', 'properties' => [ 'id' => $this->id('domain'), 'name' => $this->name('domain'), ], ]; } public function project(): array { return [ 'type' => 'object', 'properties' => [ 'id' => $this->id('project'), 'name' => $this->name('project'), 'domain' => $this->domain(), ], ]; } public function idUrl($type) { return [ 'required' => true, 'location' => self::URL, 'description' => sprintf('The unique ID, or identifier, for the %s', $type), ]; } public function tokenId(): array { return [ 'location' => self::HEADER, 'sentAs' => 'X-Subject-Token', 'description' => 'The unique token ID', ]; } public function domainId($type) { return [ 'sentAs' => 'domain_id', 'description' => sprintf('%s associated with this %s', $this->id('domain')['description'], $type), ]; } public function parentId(): array { return [ 'sentAs' => 'parent_id', 'description' => << sprintf('The type of the %s', $resource), ]; } public function desc($resource) { return [ 'description' => sprintf('A human-friendly summary that explains what the %s does', $resource), ]; } public function enabled($resource) { return [ 'type' => self::BOOL_TYPE, 'description' => sprintf( 'Indicates whether this %s is enabled or not. If not, the %s will be unavailable for use.', $resource, $resource ), ]; } public function defaultProjectId(): array { return [ 'sentAs' => 'default_project_id', 'description' => << 'project_id', 'description' => $this->id('project'), ]; } public function userId(): array { return [ 'sentAs' => 'user_id', 'description' => $this->id('user'), ]; } public function blob(): array { return [ 'type' => 'string', 'description' => "This does something, but it's not explained in the docs (as of writing this)", ]; } }