openapi: 3.0.3
info:
  title: Your Project API
  version: 1.0.0
  description: Your project description
paths:
  /api/v1/auth/jwt/create/:
    post:
      operationId: v1_auth_jwt_create_create
      description: |-
        Takes a set of user credentials and returns an access and refresh JSON web
        token pair to prove the authentication of those credentials.
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TokenObtainPair'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/TokenObtainPair'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/TokenObtainPair'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenObtainPair'
          description: ''
  /api/v1/auth/jwt/refresh/:
    post:
      operationId: v1_auth_jwt_refresh_create
      description: |-
        Takes a refresh type JSON web token and returns an access type JSON web
        token if the refresh token is valid.
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TokenRefresh'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/TokenRefresh'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/TokenRefresh'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenRefresh'
          description: ''
  /api/v1/auth/jwt/verify/:
    post:
      operationId: v1_auth_jwt_verify_create
      description: |-
        Takes a token and indicates if it is valid.  This view provides no
        information about a token's fitness for a particular use.
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TokenVerify'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/TokenVerify'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/TokenVerify'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenVerify'
          description: ''
  /api/v1/auth/social/{provider}/:
    post:
      operationId: v1_auth_social_create
      description: Authenticate user with social provider token.
      parameters:
      - in: path
        name: provider
        schema:
          type: string
        required: true
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SocialLogin'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SocialLogin'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SocialLogin'
        required: true
      security:
      - jwtAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SocialLogin'
          description: ''
  /api/v1/auth/social/success/:
    get:
      operationId: v1_auth_social_success_retrieve
      description: Display success page with tokens.
      tags:
      - v1
      security:
      - {}
      responses:
        '200':
          description: No response body
  /api/v1/auth/users/:
    get:
      operationId: v1_auth_users_list
      tags:
      - v1
      security:
      - jwtAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
          description: ''
    post:
      operationId: v1_auth_users_create
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserCreate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/UserCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UserCreate'
        required: true
      security:
      - jwtAuth: []
      - {}
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserCreate'
          description: ''
  /api/v1/auth/users/{id}/:
    get:
      operationId: v1_auth_users_retrieve
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user.
        required: true
      tags:
      - v1
      security:
      - jwtAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: ''
    put:
      operationId: v1_auth_users_update
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user.
        required: true
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/User'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/User'
      security:
      - jwtAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: ''
    patch:
      operationId: v1_auth_users_partial_update
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user.
        required: true
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedUser'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedUser'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedUser'
      security:
      - jwtAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: ''
    delete:
      operationId: v1_auth_users_destroy
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user.
        required: true
      tags:
      - v1
      security:
      - jwtAuth: []
      responses:
        '204':
          description: No response body
  /api/v1/auth/users/activation/:
    post:
      operationId: v1_auth_users_activation_create
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Activation'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Activation'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Activation'
        required: true
      security:
      - jwtAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Activation'
          description: ''
  /api/v1/auth/users/me/:
    get:
      operationId: v1_auth_users_me_retrieve
      tags:
      - v1
      security:
      - jwtAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: ''
    put:
      operationId: v1_auth_users_me_update
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/User'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/User'
      security:
      - jwtAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: ''
    patch:
      operationId: v1_auth_users_me_partial_update
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedUser'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedUser'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedUser'
      security:
      - jwtAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: ''
    delete:
      operationId: v1_auth_users_me_destroy
      tags:
      - v1
      security:
      - jwtAuth: []
      responses:
        '204':
          description: No response body
  /api/v1/auth/users/resend_activation/:
    post:
      operationId: v1_auth_users_resend_activation_create
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendEmailReset'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SendEmailReset'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SendEmailReset'
        required: true
      security:
      - jwtAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendEmailReset'
          description: ''
  /api/v1/auth/users/reset_email/:
    post:
      operationId: v1_auth_users_reset_email_create
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendEmailReset'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SendEmailReset'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SendEmailReset'
        required: true
      security:
      - jwtAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendEmailReset'
          description: ''
  /api/v1/auth/users/reset_email_confirm/:
    post:
      operationId: v1_auth_users_reset_email_confirm_create
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UsernameResetConfirm'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/UsernameResetConfirm'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UsernameResetConfirm'
        required: true
      security:
      - jwtAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsernameResetConfirm'
          description: ''
  /api/v1/auth/users/reset_password/:
    post:
      operationId: v1_auth_users_reset_password_create
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendEmailReset'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SendEmailReset'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SendEmailReset'
        required: true
      security:
      - jwtAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendEmailReset'
          description: ''
  /api/v1/auth/users/reset_password_confirm/:
    post:
      operationId: v1_auth_users_reset_password_confirm_create
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PasswordResetConfirm'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PasswordResetConfirm'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PasswordResetConfirm'
        required: true
      security:
      - jwtAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PasswordResetConfirm'
          description: ''
  /api/v1/auth/users/set_email/:
    post:
      operationId: v1_auth_users_set_email_create
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetUsername'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SetUsername'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SetUsername'
        required: true
      security:
      - jwtAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetUsername'
          description: ''
  /api/v1/auth/users/set_password/:
    post:
      operationId: v1_auth_users_set_password_create
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetPassword'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SetPassword'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SetPassword'
        required: true
      security:
      - jwtAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetPassword'
          description: ''
  /api/v1/categories/:
    get:
      operationId: v1_categories_list
      tags:
      - v1
      security:
      - jwtAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Category'
          description: ''
  /api/v1/categories/{slug}/:
    get:
      operationId: v1_categories_retrieve
      parameters:
      - in: path
        name: slug
        schema:
          type: string
        required: true
      tags:
      - v1
      security:
      - jwtAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CategoryPost'
          description: ''
  /api/v1/post/:
    get:
      operationId: v1_post_list
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - v1
      security:
      - jwtAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedPostList'
          description: ''
  /api/v1/post/{slug}/:
    get:
      operationId: v1_post_retrieve
      parameters:
      - in: path
        name: slug
        schema:
          type: string
        required: true
      tags:
      - v1
      security:
      - jwtAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Post'
          description: ''
  /api/v1/settings/:
    get:
      operationId: v1_settings_retrieve
      tags:
      - v1
      security:
      - jwtAuth: []
      responses:
        '200':
          description: No response body
components:
  schemas:
    Activation:
      type: object
      properties:
        uid:
          type: string
        token:
          type: string
      required:
      - token
      - uid
    Cate:
      type: object
      properties:
        title:
          type: string
          title: Kategori
          maxLength: 254
        parent:
          type: string
          readOnly: true
        is_active:
          allOf:
          - $ref: '#/components/schemas/IsActiveEnum'
          title: Yayındamı
        created_at:
          type: string
          format: date-time
          readOnly: true
          title: Oluşturulma Tarihi
        order:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
          title: Görüntülenme Sırası
        slug:
          type: string
          maxLength: 250
          pattern: ^[-a-zA-Z0-9_]+$
        image:
          type: string
          format: uri
          nullable: true
          title: Resim 630 x 653 Olmali ve Transparan PNG Olmali
        keywords:
          type: string
          title: Seo Kelimeleri Aralarına Virgül Koyunuz
          maxLength: 254
        description:
          type: string
          title: Açıklama
          maxLength: 254
      required:
      - created_at
      - description
      - keywords
      - parent
      - slug
      - title
    Category:
      type: object
      properties:
        title:
          type: string
          title: Kategori
          maxLength: 254
        parent:
          type: integer
          nullable: true
          title: Üst Kategorisi
        is_active:
          allOf:
          - $ref: '#/components/schemas/IsActiveEnum'
          title: Yayındamı
        created_at:
          type: string
          format: date-time
          readOnly: true
          title: Oluşturulma Tarihi
        order:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
          title: Görüntülenme Sırası
        slug:
          type: string
          maxLength: 250
          pattern: ^[-a-zA-Z0-9_]+$
        image:
          type: string
          format: uri
          nullable: true
          title: Resim 630 x 653 Olmali ve Transparan PNG Olmali
        keywords:
          type: string
          title: Seo Kelimeleri Aralarına Virgül Koyunuz
          maxLength: 254
        description:
          type: string
          title: Açıklama
          maxLength: 254
        posts:
          type: array
          items:
            $ref: '#/components/schemas/PostSYalinerializer'
          readOnly: true
        child:
          type: string
          readOnly: true
      required:
      - child
      - created_at
      - description
      - keywords
      - posts
      - slug
      - title
    CategoryPost:
      type: object
      properties:
        title:
          type: string
          title: Kategori
          maxLength: 254
        parent:
          type: integer
          nullable: true
          title: Üst Kategorisi
        is_active:
          allOf:
          - $ref: '#/components/schemas/IsActiveEnum'
          title: Yayındamı
        created_at:
          type: string
          format: date-time
          readOnly: true
          title: Oluşturulma Tarihi
        order:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
          title: Görüntülenme Sırası
        slug:
          type: string
          maxLength: 250
          pattern: ^[-a-zA-Z0-9_]+$
        image:
          type: string
          format: uri
          nullable: true
          title: Resim 630 x 653 Olmali ve Transparan PNG Olmali
        keywords:
          type: string
          title: Seo Kelimeleri Aralarına Virgül Koyunuz
          maxLength: 254
        description:
          type: string
          title: Açıklama
          maxLength: 254
        posts:
          type: string
          readOnly: true
        child:
          type: string
          readOnly: true
      required:
      - child
      - created_at
      - description
      - keywords
      - posts
      - slug
      - title
    IsActiveEnum:
      enum:
      - true
      - false
      type: boolean
      description: |-
        * `True` - Evet
        * `False` - Hayır
    IsFrontEnum:
      enum:
      - true
      - false
      type: boolean
      description: |-
        * `True` - Evet
        * `False` - Hayır
    PaginatedPostList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/Post'
    PasswordResetConfirm:
      type: object
      properties:
        uid:
          type: string
        token:
          type: string
        new_password:
          type: string
      required:
      - new_password
      - token
      - uid
    PatchedUser:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        email:
          type: string
          format: email
          readOnly: true
          title: Email address
    Post:
      type: object
      properties:
        title:
          type: string
          title: Post Başlığı
          maxLength: 254
        content:
          type: string
          nullable: true
          title: Post İçeriği
        categories:
          type: array
          items:
            $ref: '#/components/schemas/Cate'
          readOnly: true
        keywords:
          type: string
          title: Seo Kelimeleri Aralarına Virgül Koyunuz
          maxLength: 254
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
          readOnly: true
        image:
          type: string
          format: uri
          nullable: true
        thumb:
          type: string
          format: uri
          readOnly: true
          nullable: true
        video:
          type: string
          nullable: true
          maxLength: 254
        slug:
          type: string
          maxLength: 250
          pattern: ^[-a-zA-Z0-9_]+$
        created_at:
          type: string
          format: date-time
          readOnly: true
          title: Oluşturulma Tarihi
        updated_at:
          type: string
          format: date-time
          readOnly: true
          title: Güncelleme Tarihi
        is_active:
          allOf:
          - $ref: '#/components/schemas/IsActiveEnum'
          title: Yayındamı ?
        is_front:
          allOf:
          - $ref: '#/components/schemas/IsFrontEnum'
          title: Önde Görünsünmü ?
      required:
      - categories
      - created_at
      - keywords
      - slug
      - tags
      - thumb
      - title
      - updated_at
    PostSYalinerializer:
      type: object
      properties:
        slug:
          type: string
          maxLength: 250
          pattern: ^[-a-zA-Z0-9_]+$
      required:
      - slug
    ProviderEnum:
      enum:
      - google-oauth2
      - github
      - facebook
      type: string
      description: |-
        * `google-oauth2` - google-oauth2
        * `github` - github
        * `facebook` - facebook
    SendEmailReset:
      type: object
      properties:
        email:
          type: string
          format: email
      required:
      - email
    SetPassword:
      type: object
      properties:
        new_password:
          type: string
        current_password:
          type: string
      required:
      - current_password
      - new_password
    SetUsername:
      type: object
      properties:
        current_password:
          type: string
        new_email:
          type: string
          format: email
          title: Email address
          maxLength: 254
      required:
      - current_password
      - new_email
    SocialLogin:
      type: object
      description: |-
        Serializer for social authentication.
        Accepts provider name and access_token from frontend.
      properties:
        provider:
          allOf:
          - $ref: '#/components/schemas/ProviderEnum'
          description: |-
            Social auth provider name

            * `google-oauth2` - google-oauth2
            * `github` - github
            * `facebook` - facebook
        access_token:
          type: string
          description: Access token from the social provider
        id_token:
          type: string
          description: ID token (optional, used by some providers like Google)
      required:
      - access_token
      - provider
    Tag:
      type: object
      properties:
        tag:
          type: string
          title: Post Tagları
          maxLength: 254
        slug:
          type: string
          maxLength: 250
          pattern: ^[-a-zA-Z0-9_]+$
      required:
      - tag
    TokenObtainPair:
      type: object
      properties:
        email:
          type: string
          writeOnly: true
        password:
          type: string
          writeOnly: true
        access:
          type: string
          readOnly: true
        refresh:
          type: string
          readOnly: true
      required:
      - access
      - email
      - password
      - refresh
    TokenRefresh:
      type: object
      properties:
        access:
          type: string
          readOnly: true
        refresh:
          type: string
          writeOnly: true
      required:
      - access
      - refresh
    TokenVerify:
      type: object
      properties:
        token:
          type: string
          writeOnly: true
      required:
      - token
    User:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        email:
          type: string
          format: email
          readOnly: true
          title: Email address
      required:
      - email
      - id
    UserCreate:
      type: object
      properties:
        email:
          type: string
          format: email
          title: Email address
          maxLength: 254
        id:
          type: integer
          readOnly: true
        password:
          type: string
          writeOnly: true
      required:
      - email
      - id
      - password
    UsernameResetConfirm:
      type: object
      properties:
        new_email:
          type: string
          format: email
          title: Email address
          maxLength: 254
      required:
      - new_email
  securitySchemes:
    jwtAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
