diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..0f160fe8fe200d7845b20ff716198e131a45fc5f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+_work
+docker-compose.yaml
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 1363ff6bb0b7f3f58db95b1b380d2a735b57468b..007325db148c0aa03f80bdbf26b9c20367536094 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,7 +2,7 @@ image: docker:20.10.9
 
 variables:
   DOCKER_TLS_CERTDIR: "/certs"
-  IMAGE_VER: 0.3.0
+  IMAGE_VER: 0.4.0
 
 services:
   - docker:20.10.9-dind
diff --git a/cf2022.conf b/cf2022.conf
index 13e032b61d2014fb08172c6a4a6a63c83796aca8..8efcf4e24db5479712cfb43c5d327cb738b2a42e 100644
--- a/cf2022.conf
+++ b/cf2022.conf
@@ -1,8 +1,14 @@
 {
-  secrets              => ['14283e549647774b17d10e1d75bcf16c2969673e'],
-  oauth_url            => 'https://auth.pirati.cz/auth/realms/pirati',
-  pretix_api           => 'https://pretix.pir-test.eu/api/v1',
-  pretix_token         => 'rxr4dcx9jnyv50jfd8xdamxjwo3j89503y3upiy1830hpv76is9zqd80c27r5gjk',
-  pretix_organizer     => 'pirati',
-  pretix_event         => 'cf2022',
+  secrets               => ['14283e549647774b17d10e1d75bcf16c2969673e'],
+  oauth_url             => 'https://auth.pirati.cz/auth/realms/pirati',
+  groups_url            => 'https://iapi.pirati.cz/v1/groups',
+  pretix_api            => 'https://pretix.pir-test.eu/api/v1',
+  pretix_token          => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
+  pretix_organizer      => 'pirati',
+  pretix_event          => 'cf2022',
+  pretix_qid_sso        => 29, # identifikator otazky SSO UID
+  pretix_qid_region     => 8, # identifikator otazky Kraj
+  pretix_product_member => 1, # produkt pro cleny
+  pretix_product_regp   => 2, # produkt pro regp
+  mail_domain => 'pirati.cz',
 }
diff --git a/lib/CF2022/Controller/Orders.pm b/lib/CF2022/Controller/Orders.pm
new file mode 100644
index 0000000000000000000000000000000000000000..51b8df84961dc16f6f334df4f58232bc0a14b819
--- /dev/null
+++ b/lib/CF2022/Controller/Orders.pm
@@ -0,0 +1,103 @@
+package CF2022::Controller::Orders;
+use Mojo::Base 'Mojolicious::Controller';
+use Mojo::UserAgent;
+
+use constant MAIN_PRODUCTS => qr/^(1|2|3)$/;
+
+use feature 'signatures';
+no warnings qw{ experimental::signatures };
+
+sub create ($c ) {
+    $c->openapi->valid_input or return;
+
+    my $args      = $c->req->json;
+    my @products  = @{ $args->{products} };
+    my @responses = @{ $args->{responses} };
+    my $group;
+
+    my $url = sprintf ('%s/organizers/%s/events/%s/orders/',
+        $c->config->{pretix_api},
+        $c->config->{pretix_organizer},
+        $c->config->{pretix_event},
+    );
+
+    if ( $args->{token} ) {
+        $c->oauth_token($args->{token});
+
+        my $claims = $c->oauth_claims;
+        return $c->error(403, 'Invalid token') if ! $claims;
+
+        $group = $c->oauth_main_group;
+        return $c->error(403, 'Invalid token') if ! $group;
+
+        $args->{name} = $claims->{name};
+
+        push @responses, (
+            {
+                question_id => $c->config->{pretix_qid_sso},
+                response    => $claims->{sub},
+            },
+            {
+                question_id => $c->config->{pretix_qid_region},
+                response    => $group->{region},
+            },
+        );
+
+        @products = grep { $_->{id} !~ MAIN_PRODUCTS } @products;
+        push @products, {
+            id => $c->config->{'pretix_product_' . $group->{role}}
+        };
+
+        if ( $group->{role} eq 'member' ) {
+            $args->{email} = $claims->{preferred_username}
+                           .'@'. $c->config->{mail_domain};
+        }
+        else {
+            $args->{email} = $claims->{email};
+        }
+    }
+
+    my $order = {
+        email            => $args->{email},
+        locale           => 'en',
+        payment_provider => 'manual',
+        positions        => [],
+        fees             => [],
+    };
+
+    PRODUCT:
+    foreach my $product ( @products ) {
+        my $item = {
+            item      => $product->{id},
+            variation => $product->{variation},
+            attendee_name => $args->{name},
+            price => $product->{price},
+            company => $args->{company},
+        };
+
+        if ( $product->{id} =~ MAIN_PRODUCTS ) {
+            RESPONSE:
+            foreach my $response ( @responses ) {
+                push @{ $item->{answers} }, {
+                    question => $response->{question_id},
+                    answer   => $response->{response},
+                };
+            }
+        }
+
+        push @{ $order->{positions} }, $item;
+    }
+
+    my $ua = Mojo::UserAgent->new;
+
+###### KONTROLA DUPLICITY
+
+    my $rc = $ua->post( $url,
+        { Authorization => 'Token ' . $c->config->{pretix_token} },
+        json => $order
+    )->result->json;
+
+    $c->render(json => $rc);
+}
+
+1;
diff --git a/lib/CF2022/Helpers/Auth.pm b/lib/CF2022/Helpers/Auth.pm
index ee3f2272d3d84dc15840f35576bde90eb3ac8dd9..7537e8798bb723e41b2f590cf2fa8db5da082883 100644
--- a/lib/CF2022/Helpers/Auth.pm
+++ b/lib/CF2022/Helpers/Auth.pm
@@ -74,12 +74,20 @@ sub register ( $class, $self, $conf) {
         return $c->stash->{claims};
     });
 
-    $self->helper( oauth_main_group_name => sub ( $c ) {
+    $self->helper( oauth_main_group => sub ( $c ) {
         my $claims = $c->oauth_claims // return;
 
         GROUP:
         foreach my $group ( sort @{ $claims->{groups} } ) {
-            return $c->oauth_groups->{ $group } if $group =~ REGIONS;
+            if ( $group =~ REGIONS ) {
+                my $region = $c->oauth_groups->{ $group };
+                $region =~ s/^KS\s+//i;
+
+                return {
+                    region => $region,
+                    role   => ( $2 eq 'f') ? 'member':'regp',
+                };
+            }
         }
     });
 
diff --git a/openapi.yaml b/openapi.yaml
index 63611e5af01a77a13eb493108750b375b1a4589e..89e82ae54dda3301bd411f6d3a8bb72849f79547 100644
--- a/openapi.yaml
+++ b/openapi.yaml
@@ -151,12 +151,6 @@ paths:
                       response: XXXXX
                     - question_id: 2
                       response: ZZZZZ
-              required:
-                - type
-                - name
-                - email
-                - products
-                - responses
       responses:
         201:
           description: Order created