openapi: 3.0.3
info:
  title: 'GrandRanker API Documentation'
  description: 'REST API for managing domains, keywords, content, rank tracking and AI-search visibility data on Grandranker.'
  version: 1.0.0
servers:
  -
    url: 'https://app.grandranker.com'
tags:
  -
    name: 'AI Overviews'
    description: ''
  -
    name: 'Account & Domains'
    description: ''
  -
    name: Analytics
    description: ''
  -
    name: Articles
    description: ''
  -
    name: Content
    description: ''
  -
    name: 'Content Planner'
    description: ''
  -
    name: Domains
    description: ''
  -
    name: E-commerce
    description: ''
  -
    name: 'GEO Audit'
    description: ''
  -
    name: 'Google Analytics 4'
    description: ''
  -
    name: 'Google Search Console'
    description: ''
  -
    name: 'Internal Links'
    description: ''
  -
    name: Keywords
    description: ''
  -
    name: Languages
    description: ''
  -
    name: Liftability
    description: ''
  -
    name: 'Local SEO'
    description: ''
  -
    name: Plugin
    description: ''
  -
    name: 'Rank Tracking'
    description: ''
  -
    name: Schema
    description: ''
  -
    name: Settings
    description: ''
  -
    name: Sitemap
    description: ''
  -
    name: Subscription
    description: ''
  -
    name: Webhooks
    description: ''
components:
  securitySchemes:
    default:
      type: http
      scheme: bearer
      description: 'Generate a token from your dashboard under <b>Settings → API Tokens</b>. Each token carries scopes that gate which endpoints it may call.'
security:
  -
    default: []
paths:
  /api/v1/ai-overviews:
    get:
      summary: ''
      operationId: getApiV1AiOverviews
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'AI Overviews'
  /api/v1/ai-overviews/queries:
    get:
      summary: ''
      operationId: getApiV1AiOverviewsQueries
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'AI Overviews'
    post:
      summary: ''
      operationId: postApiV1AiOverviewsQueries
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'AI Overviews'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: 'Must not be greater than 500 characters.'
                  example: b
                category:
                  type: string
                  description: 'Must not be greater than 100 characters.'
                  example: 'n'
                  nullable: true
                is_local:
                  type: boolean
                  description: ''
                  example: false
                country_code:
                  type: string
                  description: 'Must be 2 characters.'
                  example: gz
                  nullable: true
                language_code:
                  type: string
                  description: 'Must not be greater than 5 characters.'
                  example: m
                  nullable: true
                platforms:
                  type: array
                  description: ''
                  example:
                    - deepseek
                  items:
                    type: string
                    enum:
                      - google_aio
                      - google_ai_mode
                      - chatgpt
                      - perplexity
                      - claude
                      - gemini
                      - copilot
                      - deepseek
                      - grok
              required:
                - query
  /api/v1/ai-overviews/platforms:
    get:
      summary: ''
      operationId: getApiV1AiOverviewsPlatforms
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'AI Overviews'
  /api/v1/ai-overviews/competitors:
    get:
      summary: ''
      operationId: getApiV1AiOverviewsCompetitors
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'AI Overviews'
  /api/v1/ai-overviews/citations:
    get:
      summary: ''
      operationId: getApiV1AiOverviewsCitations
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'AI Overviews'
  /api/v1/ai-overviews/trends:
    get:
      summary: ''
      operationId: getApiV1AiOverviewsTrends
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'AI Overviews'
  /api/v1/ai-overviews/alerts:
    get:
      summary: ''
      operationId: getApiV1AiOverviewsAlerts
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'AI Overviews'
  /api/v1/ai-overviews/ranking:
    get:
      summary: ''
      operationId: getApiV1AiOverviewsRanking
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'AI Overviews'
  /api/v1/ai-overviews/share-of-voice:
    get:
      summary: ''
      operationId: getApiV1AiOverviewsShareOfVoice
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'AI Overviews'
  /api/v1/ai-overviews/sentiment:
    get:
      summary: ''
      operationId: getApiV1AiOverviewsSentiment
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'AI Overviews'
  '/api/v1/ai-overviews/queries/{queryId}':
    put:
      summary: ''
      operationId: putApiV1AiOverviewsQueriesQueryId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'AI Overviews'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: 'Must not be greater than 500 characters.'
                  example: b
                category:
                  type: string
                  description: 'Must not be greater than 100 characters.'
                  example: 'n'
                  nullable: true
                is_active:
                  type: boolean
                  description: ''
                  example: true
                is_local:
                  type: boolean
                  description: ''
                  example: true
                country_code:
                  type: string
                  description: 'Must be 2 characters.'
                  example: gz
                  nullable: true
                language_code:
                  type: string
                  description: 'Must not be greater than 5 characters.'
                  example: m
                  nullable: true
                platforms:
                  type: array
                  description: ''
                  example:
                    - copilot
                  items:
                    type: string
                    enum:
                      - google_aio
                      - google_ai_mode
                      - chatgpt
                      - perplexity
                      - claude
                      - gemini
                      - copilot
                      - deepseek
                      - grok
    delete:
      summary: ''
      operationId: deleteApiV1AiOverviewsQueriesQueryId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'AI Overviews'
    parameters:
      -
        in: path
        name: queryId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/ai-overviews/queries/{queryId}/toggle':
    post:
      summary: ''
      operationId: postApiV1AiOverviewsQueriesQueryIdToggle
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'AI Overviews'
    parameters:
      -
        in: path
        name: queryId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/ai-overviews/alerts/{alertId}/read':
    post:
      summary: ''
      operationId: postApiV1AiOverviewsAlertsAlertIdRead
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'AI Overviews'
    parameters:
      -
        in: path
        name: alertId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/me:
    get:
      summary: ''
      operationId: getApiV1Me
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Account & Domains'
  /api/v1/analytics/performance:
    get:
      summary: ''
      operationId: getApiV1AnalyticsPerformance
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Analytics
  /api/v1/analytics/countries:
    get:
      summary: ''
      operationId: getApiV1AnalyticsCountries
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Analytics
  /api/v1/analytics/keywords:
    get:
      summary: ''
      operationId: getApiV1AnalyticsKeywords
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Analytics
  /api/v1/analytics/brand-keywords:
    get:
      summary: ''
      operationId: getApiV1AnalyticsBrandKeywords
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Analytics
  /api/v1/analytics/recommendations:
    get:
      summary: ''
      operationId: getApiV1AnalyticsRecommendations
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Analytics
  /api/v1/articles:
    get:
      summary: ''
      operationId: getApiV1Articles
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Articles
  /api/v1/articles/first-unpublished:
    get:
      summary: ''
      operationId: getApiV1ArticlesFirstUnpublished
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Articles
  /api/v1/articles/wordpress-categories:
    get:
      summary: ''
      operationId: getApiV1ArticlesWordpressCategories
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Articles
  /api/v1/articles/image/regenerations-remaining:
    get:
      summary: ''
      operationId: getApiV1ArticlesImageRegenerationsRemaining
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Articles
  '/api/v1/articles/{uuid}':
    get:
      summary: ''
      operationId: getApiV1ArticlesUuid
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Articles
    patch:
      summary: ''
      operationId: patchApiV1ArticlesUuid
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Articles
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: b
                meta_title:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: 'n'
                  nullable: true
                subtitle:
                  type: string
                  description: ''
                  example: architecto
                  nullable: true
                content_markdown:
                  type: string
                  description: ''
                  example: architecto
                content_html:
                  type: string
                  description: ''
                  example: architecto
                category:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: 'n'
                meta_description:
                  type: string
                  description: ''
                  example: architecto
                slug:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: 'n'
                status:
                  type: string
                  description: ''
                  example: architecto
                type:
                  type: string
                  description: ''
                  example: architecto
                image_url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 2048 characters.'
                  example: 'http://bailey.com/'
                  nullable: true
                author_name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: m
                  nullable: true
                author_title:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: i
                  nullable: true
                read_time:
                  type: string
                  description: 'Must not be greater than 50 characters.'
                  example: 'y'
                  nullable: true
                faqs:
                  type: array
                  description: ''
                  example: null
                  items:
                    type: object
                    nullable: true
                    properties:
                      name:
                        type: string
                        description: ''
                        example: architecto
                      answer:
                        type: string
                        description: ''
                        example: architecto
                    required:
                      - name
                      - answer
    delete:
      summary: ''
      operationId: deleteApiV1ArticlesUuid
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Articles
    parameters:
      -
        in: path
        name: uuid
        description: ''
        example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
        required: true
        schema:
          type: string
  '/api/v1/articles/{uuid}/preview':
    get:
      summary: ''
      operationId: getApiV1ArticlesUuidPreview
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Articles
    parameters:
      -
        in: path
        name: uuid
        description: ''
        example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
        required: true
        schema:
          type: string
  '/api/v1/articles/{uuid}/score':
    get:
      summary: ''
      operationId: getApiV1ArticlesUuidScore
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Articles
    parameters:
      -
        in: path
        name: uuid
        description: ''
        example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
        required: true
        schema:
          type: string
  /api/v1/articles/bulk-delete:
    post:
      summary: ''
      operationId: postApiV1ArticlesBulkDelete
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Articles
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                uuids:
                  type: array
                  description: 'Must be a valid UUID.'
                  example:
                    - 6ff8f7f6-1eb3-3525-be4a-3932c805afed
                  items:
                    type: string
              required:
                - uuids
  '/api/v1/articles/{uuid}/publish':
    post:
      summary: ''
      operationId: postApiV1ArticlesUuidPublish
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Articles
    parameters:
      -
        in: path
        name: uuid
        description: ''
        example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
        required: true
        schema:
          type: string
  '/api/v1/articles/{uuid}/unpublish':
    post:
      summary: ''
      operationId: postApiV1ArticlesUuidUnpublish
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Articles
    parameters:
      -
        in: path
        name: uuid
        description: ''
        example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
        required: true
        schema:
          type: string
  /api/v1/articles/publish-drafts:
    post:
      summary: ''
      operationId: postApiV1ArticlesPublishDrafts
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Articles
  '/api/v1/articles/{uuid}/image/upload':
    post:
      summary: ''
      operationId: postApiV1ArticlesUuidImageUpload
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Articles
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                image:
                  type: string
                  format: binary
                  description: 'Must be a file. Must be an image. Must not be greater than 5120 kilobytes.'
              required:
                - image
    parameters:
      -
        in: path
        name: uuid
        description: ''
        example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
        required: true
        schema:
          type: string
  '/api/v1/articles/{uuid}/regenerate':
    post:
      summary: ''
      operationId: postApiV1ArticlesUuidRegenerate
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Articles
    parameters:
      -
        in: path
        name: uuid
        description: ''
        example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
        required: true
        schema:
          type: string
  '/api/v1/articles/{uuid}/analyze':
    post:
      summary: ''
      operationId: postApiV1ArticlesUuidAnalyze
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Articles
    parameters:
      -
        in: path
        name: uuid
        description: ''
        example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
        required: true
        schema:
          type: string
  /api/v1/articles/analyze-realtime:
    post:
      summary: ''
      operationId: postApiV1ArticlesAnalyzeRealtime
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Articles
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                content:
                  type: string
                  description: ''
                  example: architecto
                title:
                  type: string
                  description: ''
                  example: architecto
                  nullable: true
                meta_title:
                  type: string
                  description: ''
                  example: architecto
                  nullable: true
                meta_description:
                  type: string
                  description: ''
                  example: architecto
                  nullable: true
                keyword:
                  type: string
                  description: ''
                  example: architecto
              required:
                - content
                - keyword
  '/api/v1/articles/{uuid}/image/regenerate':
    post:
      summary: ''
      operationId: postApiV1ArticlesUuidImageRegenerate
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Articles
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                prompt:
                  type: string
                  description: 'Must not be greater than 2000 characters.'
                  example: b
                type:
                  type: string
                  description: ''
                  example: cover
                  enum:
                    - cover
                    - content
                image_index:
                  type: integer
                  description: 'This field is required when <code>type</code> is <code>content</code>. Must be at least 0.'
                  example: 39
              required:
                - prompt
                - type
    parameters:
      -
        in: path
        name: uuid
        description: ''
        example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
        required: true
        schema:
          type: string
  /api/v1/content/analyze:
    post:
      summary: ''
      operationId: postApiV1ContentAnalyze
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Content
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                article_uuid:
                  type: string
                  description: ''
                  example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
              required:
                - article_uuid
  /api/v1/content-planner:
    get:
      summary: ''
      operationId: getApiV1ContentPlanner
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Content Planner'
  /api/v1/content-planner/month:
    get:
      summary: ''
      operationId: getApiV1ContentPlannerMonth
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Content Planner'
  /api/v1/content-planner/schedule:
    post:
      summary: ''
      operationId: postApiV1ContentPlannerSchedule
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Content Planner'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                keyword_id:
                  type: integer
                  description: 'The <code>id</code> of an existing record in the keywords table.'
                  example: 16
                scheduled_date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-06-01T11:41:47'
              required:
                - keyword_id
                - scheduled_date
  /api/v1/content-planner/unschedule:
    post:
      summary: ''
      operationId: postApiV1ContentPlannerUnschedule
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Content Planner'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                keyword_id:
                  type: integer
                  description: 'The <code>id</code> of an existing record in the keywords table.'
                  example: 16
              required:
                - keyword_id
  /api/v1/content-planner/keyword:
    delete:
      summary: ''
      operationId: deleteApiV1ContentPlannerKeyword
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Content Planner'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                keyword_id:
                  type: integer
                  description: 'The <code>id</code> of an existing record in the keywords table.'
                  example: 16
              required:
                - keyword_id
  /api/v1/content-planner/move:
    post:
      summary: ''
      operationId: postApiV1ContentPlannerMove
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Content Planner'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                keyword_id:
                  type: integer
                  description: 'The <code>id</code> of an existing record in the keywords table.'
                  example: 16
                new_date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-06-01T11:41:47'
                from_date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-06-01T11:41:47'
                  nullable: true
              required:
                - keyword_id
                - new_date
  /api/v1/content-planner/bulk-schedule:
    post:
      summary: ''
      operationId: postApiV1ContentPlannerBulkSchedule
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Content Planner'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                schedules:
                  type: array
                  description: ''
                  example:
                    - []
                  items:
                    type: object
                    properties:
                      keyword_id:
                        type: integer
                        description: 'The <code>id</code> of an existing record in the keywords table.'
                        example: 16
                      scheduled_date:
                        type: string
                        description: 'Must be a valid date.'
                        example: '2026-06-01T11:41:47'
                    required:
                      - keyword_id
                      - scheduled_date
              required:
                - schedules
  /api/v1/content-planner/auto-schedule:
    post:
      summary: ''
      operationId: postApiV1ContentPlannerAutoSchedule
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Content Planner'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                start_date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-06-01T11:41:47'
                end_date:
                  type: string
                  description: 'Must be a valid date. Must be a date after or equal to <code>start_date</code>.'
                  example: '2052-06-24'
                exclude_weekends:
                  type: boolean
                  description: ''
                  example: true
              required:
                - start_date
                - end_date
  /api/v1/content-planner/schedule-all:
    post:
      summary: ''
      operationId: postApiV1ContentPlannerScheduleAll
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Content Planner'
  /api/v1/content-planner/schedule-next:
    post:
      summary: ''
      operationId: postApiV1ContentPlannerScheduleNext
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Content Planner'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                keyword_id:
                  type: integer
                  description: 'The <code>id</code> of an existing record in the keywords table.'
                  example: 16
              required:
                - keyword_id
  /api/v1/content-planner/bulk-schedule-next:
    post:
      summary: ''
      operationId: postApiV1ContentPlannerBulkScheduleNext
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Content Planner'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                keyword_ids:
                  type: array
                  description: ''
                  example:
                    - 16
                  items:
                    type: integer
              required:
                - keyword_ids
  /api/v1/content-planner/settings:
    patch:
      summary: ''
      operationId: patchApiV1ContentPlannerSettings
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Content Planner'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                keyword_id:
                  type: integer
                  description: 'The <code>id</code> of an existing record in the keywords table.'
                  example: 16
                article_length:
                  type: string
                  description: ''
                  example: medium
                  enum:
                    - short
                    - medium
                    - long
                  nullable: true
                custom_instructions:
                  type: string
                  description: 'Must not be greater than 2000 characters.'
                  example: 'n'
                  nullable: true
              required:
                - keyword_id
  /api/v1/content-planner/optimize-local-mix:
    post:
      summary: ''
      operationId: postApiV1ContentPlannerOptimizeLocalMix
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Content Planner'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                preview:
                  type: boolean
                  description: ''
                  example: true
  /api/v1/content-planner/generate-next-week:
    post:
      summary: ''
      operationId: postApiV1ContentPlannerGenerateNextWeek
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Content Planner'
  /api/v1/domains:
    get:
      summary: ''
      operationId: getApiV1Domains
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Domains
    post:
      summary: ''
      operationId: postApiV1Domains
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Domains
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: b
                domain:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: 'n'
                  nullable: true
              required:
                - name
  '/api/v1/domains/{domain}':
    get:
      summary: ''
      operationId: getApiV1DomainsDomain
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Domains
    patch:
      summary: ''
      operationId: patchApiV1DomainsDomain
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Domains
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: b
                domain:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: 'n'
                  nullable: true
              required:
                - name
    delete:
      summary: ''
      operationId: deleteApiV1DomainsDomain
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Domains
    parameters:
      -
        in: path
        name: domain
        description: 'The domain.'
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/domains/{domain}/activate':
    post:
      summary: ''
      operationId: postApiV1DomainsDomainActivate
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Domains
    parameters:
      -
        in: path
        name: domain
        description: 'The domain.'
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/domains/{domain}/set-primary':
    post:
      summary: ''
      operationId: postApiV1DomainsDomainSetPrimary
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Domains
    parameters:
      -
        in: path
        name: domain
        description: 'The domain.'
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/ecommerce/products:
    get:
      summary: ''
      operationId: getApiV1EcommerceProducts
      description: ''
      parameters: []
      responses: {  }
      tags:
        - E-commerce
    post:
      summary: ''
      operationId: postApiV1EcommerceProducts
      description: ''
      parameters: []
      responses: {  }
      tags:
        - E-commerce
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: b
                url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 500 characters.'
                  example: 'http://bailey.com/'
                description:
                  type: string
                  description: 'Must not be greater than 1000 characters.'
                  example: 'Velit et fugiat sunt nihil accusantium.'
                  nullable: true
                category:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: 'n'
                  nullable: true
                price:
                  type: string
                  description: 'Must not be greater than 100 characters.'
                  example: i
                  nullable: true
                key_features:
                  type: array
                  description: 'Must not be greater than 100 characters.'
                  example:
                    - k
                  items:
                    type: string
                image_url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 500 characters.'
                  example: 'http://www.schuster.biz/perspiciatis-quo-omnis-nostrum-aut-adipisci-quidem-nostrum-qui'
                  nullable: true
                is_active:
                  type: boolean
                  description: ''
                  example: true
              required:
                - name
                - url
  '/api/v1/ecommerce/products/{id}':
    get:
      summary: ''
      operationId: getApiV1EcommerceProductsId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - E-commerce
    patch:
      summary: ''
      operationId: patchApiV1EcommerceProductsId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - E-commerce
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: b
                url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 500 characters.'
                  example: 'http://bailey.com/'
                description:
                  type: string
                  description: 'Must not be greater than 1000 characters.'
                  example: 'Velit et fugiat sunt nihil accusantium.'
                  nullable: true
                category:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: 'n'
                  nullable: true
                price:
                  type: string
                  description: 'Must not be greater than 100 characters.'
                  example: i
                  nullable: true
                key_features:
                  type: array
                  description: 'Must not be greater than 100 characters.'
                  example:
                    - k
                  items:
                    type: string
                image_url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 500 characters.'
                  example: 'http://www.schuster.biz/perspiciatis-quo-omnis-nostrum-aut-adipisci-quidem-nostrum-qui'
                  nullable: true
                is_active:
                  type: boolean
                  description: ''
                  example: true
    delete:
      summary: ''
      operationId: deleteApiV1EcommerceProductsId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - E-commerce
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the product.'
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/ecommerce/products/bulk-action:
    post:
      summary: ''
      operationId: postApiV1EcommerceProductsBulkAction
      description: ''
      parameters: []
      responses: {  }
      tags:
        - E-commerce
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                action:
                  type: string
                  description: ''
                  example: delete
                  enum:
                    - delete
                    - activate
                    - deactivate
                product_ids:
                  type: array
                  description: ''
                  example:
                    - 16
                  items:
                    type: integer
              required:
                - action
  /api/v1/ecommerce/products/import:
    post:
      summary: ''
      operationId: postApiV1EcommerceProductsImport
      description: ''
      parameters: []
      responses: {  }
      tags:
        - E-commerce
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                products:
                  type: array
                  description: 'Must have at least 1 items. Must not have more than 500 items.'
                  example:
                    - []
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                        description: 'Must not be greater than 255 characters.'
                        example: b
                      url:
                        type: string
                        description: 'Must be a valid URL. Must not be greater than 500 characters.'
                        example: 'http://bailey.com/'
                      description:
                        type: string
                        description: 'Must not be greater than 1000 characters.'
                        example: 'Velit et fugiat sunt nihil accusantium.'
                        nullable: true
                      category:
                        type: string
                        description: 'Must not be greater than 255 characters.'
                        example: 'n'
                        nullable: true
                      price:
                        type: string
                        description: 'Must not be greater than 100 characters.'
                        example: i
                        nullable: true
                      key_features:
                        type: array
                        description: 'Must not be greater than 100 characters.'
                        example:
                          - k
                        items:
                          type: string
                      image_url:
                        type: string
                        description: 'Must be a valid URL. Must not be greater than 500 characters.'
                        example: 'http://www.schuster.biz/perspiciatis-quo-omnis-nostrum-aut-adipisci-quidem-nostrum-qui'
                        nullable: true
                    required:
                      - name
                      - url
              required:
                - products
  /api/v1/ecommerce/sync:
    post:
      summary: ''
      operationId: postApiV1EcommerceSync
      description: ''
      parameters: []
      responses: {  }
      tags:
        - E-commerce
  /api/v1/geo-audit/status:
    get:
      summary: ''
      operationId: getApiV1GeoAuditStatus
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'GEO Audit'
  /api/v1/geo-audit/latest:
    get:
      summary: ''
      operationId: getApiV1GeoAuditLatest
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'GEO Audit'
  /api/v1/geo-audit/history:
    get:
      summary: ''
      operationId: getApiV1GeoAuditHistory
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'GEO Audit'
  /api/v1/geo-audit/pages:
    get:
      summary: ''
      operationId: getApiV1GeoAuditPages
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'GEO Audit'
  '/api/v1/geo-audit/pages/{id}':
    get:
      summary: ''
      operationId: getApiV1GeoAuditPagesId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'GEO Audit'
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the page.'
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/geo-audit/proposals:
    get:
      summary: ''
      operationId: getApiV1GeoAuditProposals
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'GEO Audit'
  /api/v1/geo-audit/schema-opportunities:
    get:
      summary: ''
      operationId: getApiV1GeoAuditSchemaOpportunities
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'GEO Audit'
  '/api/v1/geo-audit/proposals/{id}/apply':
    post:
      summary: ''
      operationId: postApiV1GeoAuditProposalsIdApply
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'GEO Audit'
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the proposal.'
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/geo-audit/proposals/bulk-apply:
    post:
      summary: ''
      operationId: postApiV1GeoAuditProposalsBulkApply
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'GEO Audit'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                ids:
                  type: array
                  description: ''
                  example:
                    - 16
                  items:
                    type: integer
  '/api/v1/geo-audit/proposals/{id}/dismiss':
    post:
      summary: ''
      operationId: postApiV1GeoAuditProposalsIdDismiss
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'GEO Audit'
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the proposal.'
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/geo-audit/schema/apply:
    post:
      summary: ''
      operationId: postApiV1GeoAuditSchemaApply
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'GEO Audit'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                article_id:
                  type: integer
                  description: ''
                  example: 16
                schema:
                  type: object
                  description: ''
                  example: []
                  properties: {  }
              required:
                - article_id
                - schema
  /api/v1/geo-audit/sitemap-override:
    patch:
      summary: ''
      operationId: patchApiV1GeoAuditSitemapOverride
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'GEO Audit'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                sitemap_url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 500 characters.'
                  example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
                  nullable: true
  /api/v1/geo-audit/run:
    post:
      summary: ''
      operationId: postApiV1GeoAuditRun
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'GEO Audit'
  /api/v1/geo-audit/run-full:
    post:
      summary: ''
      operationId: postApiV1GeoAuditRunFull
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'GEO Audit'
  /api/v1/geo-audit/schema/generate:
    post:
      summary: ''
      operationId: postApiV1GeoAuditSchemaGenerate
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'GEO Audit'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 2048 characters.'
                  example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
              required:
                - url
  /api/v1/ga4/status:
    get:
      summary: ''
      operationId: getApiV1Ga4Status
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Analytics 4'
  /api/v1/ga4/properties:
    get:
      summary: ''
      operationId: getApiV1Ga4Properties
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Analytics 4'
  /api/v1/ga4/performance:
    get:
      summary: ''
      operationId: getApiV1Ga4Performance
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Analytics 4'
  /api/v1/ga4/pages:
    get:
      summary: ''
      operationId: getApiV1Ga4Pages
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Analytics 4'
  /api/v1/ga4/sources:
    get:
      summary: ''
      operationId: getApiV1Ga4Sources
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Analytics 4'
  /api/v1/ga4/devices:
    get:
      summary: ''
      operationId: getApiV1Ga4Devices
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Analytics 4'
  /api/v1/ga4/select-property:
    post:
      summary: ''
      operationId: postApiV1Ga4SelectProperty
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Analytics 4'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                property_id:
                  type: string
                  description: 'Must not be greater than 20 characters.'
                  example: bngzmiyvdljnikhw
              required:
                - property_id
  /api/v1/ga4/disconnect:
    delete:
      summary: ''
      operationId: deleteApiV1Ga4Disconnect
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Analytics 4'
  /api/v1/gsc/status:
    get:
      summary: ''
      operationId: getApiV1GscStatus
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Search Console'
  /api/v1/gsc/properties:
    get:
      summary: ''
      operationId: getApiV1GscProperties
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Search Console'
  /api/v1/gsc/performance:
    get:
      summary: ''
      operationId: getApiV1GscPerformance
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Search Console'
  /api/v1/gsc/queries:
    get:
      summary: ''
      operationId: getApiV1GscQueries
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Search Console'
  /api/v1/gsc/pages:
    get:
      summary: ''
      operationId: getApiV1GscPages
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Search Console'
  /api/v1/gsc/page-queries:
    post:
      summary: ''
      operationId: postApiV1GscPageQueries
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Search Console'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  description: 'Must be a valid URL.'
                  example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
              required:
                - url
  /api/v1/gsc/sitemaps:
    get:
      summary: ''
      operationId: getApiV1GscSitemaps
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Search Console'
    delete:
      summary: ''
      operationId: deleteApiV1GscSitemaps
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Search Console'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  description: 'Must be a valid URL.'
                  example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
              required:
                - url
  /api/v1/gsc/inspect-url:
    post:
      summary: ''
      operationId: postApiV1GscInspectUrl
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Search Console'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  description: 'Must be a valid URL.'
                  example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
              required:
                - url
  /api/v1/gsc/select-property:
    post:
      summary: ''
      operationId: postApiV1GscSelectProperty
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Search Console'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                property:
                  type: string
                  description: ''
                  example: architecto
              required:
                - property
  /api/v1/gsc/clear-property:
    post:
      summary: ''
      operationId: postApiV1GscClearProperty
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Search Console'
  /api/v1/gsc/disconnect:
    delete:
      summary: ''
      operationId: deleteApiV1GscDisconnect
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Search Console'
  /api/v1/gsc/sitemaps/submit:
    post:
      summary: ''
      operationId: postApiV1GscSitemapsSubmit
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Google Search Console'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  description: 'Must be a valid URL.'
                  example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
              required:
                - url
  /api/v1/internal-links/pages:
    get:
      summary: ''
      operationId: getApiV1InternalLinksPages
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Internal Links'
    post:
      summary: ''
      operationId: postApiV1InternalLinksPages
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Internal Links'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 1000 characters.'
                  example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
                title:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: i
                  nullable: true
              required:
                - url
  /api/v1/internal-links/detect:
    post:
      summary: ''
      operationId: postApiV1InternalLinksDetect
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Internal Links'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                sitemap_url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 500 characters.'
                  example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
                  nullable: true
  /api/v1/internal-links/configuration:
    patch:
      summary: ''
      operationId: patchApiV1InternalLinksConfiguration
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Internal Links'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                link_source:
                  type: string
                  description: ''
                  example: architecto
                sitemap_url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 500 characters.'
                  example: 'http://bailey.com/'
                  nullable: true
                internal_links_count:
                  type: integer
                  description: 'Must be at least 0. Must not be greater than 20.'
                  example: 17
                  nullable: true
              required:
                - link_source
  /api/v1/internal-links/pages/exclude:
    post:
      summary: ''
      operationId: postApiV1InternalLinksPagesExclude
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Internal Links'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  description: 'Must not be greater than 1000 characters.'
                  example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
              required:
                - url
  /api/v1/internal-links/pages/restore:
    post:
      summary: ''
      operationId: postApiV1InternalLinksPagesRestore
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Internal Links'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  description: 'Must not be greater than 1000 characters.'
                  example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
              required:
                - url
  /api/v1/internal-links/pages/custom:
    delete:
      summary: ''
      operationId: deleteApiV1InternalLinksPagesCustom
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Internal Links'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  description: 'Must not be greater than 1000 characters.'
                  example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
              required:
                - url
  /api/v1/keywords:
    get:
      summary: ''
      operationId: getApiV1Keywords
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Keywords
    post:
      summary: ''
      operationId: postApiV1Keywords
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Keywords
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                keyword:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: b
                category:
                  type: string
                  description: 'Must not be greater than 100 characters.'
                  example: 'n'
                  nullable: true
                content_type:
                  type: string
                  description: ''
                  example: both
                  enum:
                    - blog
                    - guide
                    - both
                  nullable: true
                language_code:
                  type: string
                  description: 'Must not be greater than 5 characters.'
                  example: g
                  nullable: true
              required:
                - keyword
  /api/v1/keywords/stats:
    get:
      summary: ''
      operationId: getApiV1KeywordsStats
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Keywords
  '/api/v1/keywords/{id}':
    get:
      summary: ''
      operationId: getApiV1KeywordsId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Keywords
    patch:
      summary: ''
      operationId: patchApiV1KeywordsId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Keywords
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                keyword:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: b
                category:
                  type: string
                  description: 'Must not be greater than 100 characters.'
                  example: 'n'
                  nullable: true
                content_type:
                  type: string
                  description: ''
                  example: guide
                  enum:
                    - blog
                    - guide
                    - both
                  nullable: true
                language_code:
                  type: string
                  description: 'Must not be greater than 5 characters.'
                  example: g
                  nullable: true
                priority:
                  type: integer
                  description: 'Must be at least 0. Must not be greater than 100.'
                  example: 16
                  nullable: true
                article_length:
                  type: string
                  description: ''
                  example: medium
                  enum:
                    - short
                    - medium
                    - long
                  nullable: true
                custom_instructions:
                  type: string
                  description: 'Must not be greater than 2000 characters.'
                  example: m
                  nullable: true
    delete:
      summary: ''
      operationId: deleteApiV1KeywordsId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Keywords
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the keyword.'
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/keywords/bulk-delete:
    post:
      summary: ''
      operationId: postApiV1KeywordsBulkDelete
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Keywords
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                keyword_ids:
                  type: array
                  description: ''
                  example:
                    - 16
                  items:
                    type: integer
  /api/v1/keywords/import:
    post:
      summary: ''
      operationId: postApiV1KeywordsImport
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Keywords
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                keywords:
                  type: array
                  description: 'Must have at least 1 items. Must not have more than 500 items.'
                  example:
                    - []
                  items:
                    type: object
                    properties:
                      keyword:
                        type: string
                        description: 'Must not be greater than 255 characters.'
                        example: b
                      category:
                        type: string
                        description: 'Must not be greater than 100 characters.'
                        example: 'n'
                        nullable: true
                      content_type:
                        type: string
                        description: ''
                        example: blog
                        enum:
                          - blog
                          - guide
                          - both
                        nullable: true
                    required:
                      - keyword
              required:
                - keywords
  '/api/v1/keywords/{id}/generate':
    post:
      summary: ''
      operationId: postApiV1KeywordsIdGenerate
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Keywords
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the keyword.'
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/keywords/{id}/generate-local':
    post:
      summary: ''
      operationId: postApiV1KeywordsIdGenerateLocal
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Keywords
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the keyword.'
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/keywords/generate-all:
    post:
      summary: ''
      operationId: postApiV1KeywordsGenerateAll
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Keywords
  /api/v1/keywords/research:
    post:
      summary: ''
      operationId: postApiV1KeywordsResearch
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Keywords
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                limit:
                  type: integer
                  description: 'Must be at least 10. Must not be greater than 500.'
                  example: 1
                  nullable: true
                relevance_threshold:
                  type: integer
                  description: 'Must be at least 0. Must not be greater than 100.'
                  example: 22
                  nullable: true
                include_own_domain:
                  type: boolean
                  description: ''
                  example: false
                  nullable: true
                include_competitors:
                  type: boolean
                  description: ''
                  example: true
                  nullable: true
                include_ai_seeds:
                  type: boolean
                  description: ''
                  example: false
                  nullable: true
  /api/v1/keywords/score-relevance:
    post:
      summary: ''
      operationId: postApiV1KeywordsScoreRelevance
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Keywords
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                keyword_ids:
                  type: array
                  description: ''
                  example:
                    - 16
                  items:
                    type: integer
  /api/v1/keywords/enrich:
    post:
      summary: ''
      operationId: postApiV1KeywordsEnrich
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Keywords
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                keyword_ids:
                  type: array
                  description: ''
                  example:
                    - 16
                  items:
                    type: integer
  /api/v1/keywords/enrich-all:
    post:
      summary: ''
      operationId: postApiV1KeywordsEnrichAll
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Keywords
  /api/v1/languages:
    get:
      summary: ''
      operationId: getApiV1Languages
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Languages
    post:
      summary: ''
      operationId: postApiV1Languages
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Languages
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                language_code:
                  type: string
                  description: 'Must be 2 characters.'
                  example: bn
              required:
                - language_code
  '/api/v1/languages/{id}':
    delete:
      summary: ''
      operationId: deleteApiV1LanguagesId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Languages
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the language.'
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/languages/{id}/pause':
    post:
      summary: ''
      operationId: postApiV1LanguagesIdPause
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Languages
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the language.'
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/languages/{id}/resume':
    post:
      summary: ''
      operationId: postApiV1LanguagesIdResume
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Languages
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the language.'
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/languages/{id}/settings':
    patch:
      summary: ''
      operationId: patchApiV1LanguagesIdSettings
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Languages
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                settings:
                  type: object
                  description: ''
                  example: []
                  properties:
                    brand_voice:
                      type: string
                      description: 'Must not be greater than 500 characters.'
                      example: b
                      nullable: true
                    tone:
                      type: string
                      description: ''
                      example: professional
                      enum:
                        - professional
                        - casual
                        - friendly
                        - academic
                      nullable: true
                    custom_instructions:
                      type: string
                      description: 'Must not be greater than 2000 characters.'
                      example: 'n'
                      nullable: true
              required:
                - settings
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the language.'
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/liftability/history:
    get:
      summary: ''
      operationId: getApiV1LiftabilityHistory
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Liftability
  /api/v1/liftability/scan:
    post:
      summary: ''
      operationId: postApiV1LiftabilityScan
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Liftability
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 2048 characters.'
                  example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
              required:
                - url
  /api/v1/liftability/scan-cited:
    post:
      summary: ''
      operationId: postApiV1LiftabilityScanCited
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Liftability
  /api/v1/local-seo/local-pack-history:
    get:
      summary: ''
      operationId: getApiV1LocalSeoLocalPackHistory
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Local SEO'
  /api/v1/local-seo/reviews:
    get:
      summary: ''
      operationId: getApiV1LocalSeoReviews
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Local SEO'
  /api/v1/local-seo/review-insights:
    get:
      summary: ''
      operationId: getApiV1LocalSeoReviewInsights
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Local SEO'
  /api/v1/local-seo/posts:
    get:
      summary: ''
      operationId: getApiV1LocalSeoPosts
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Local SEO'
    post:
      summary: ''
      operationId: postApiV1LocalSeoPosts
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Local SEO'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                gmb_location_id:
                  type: integer
                  description: ''
                  example: 16
                type:
                  type: string
                  description: ''
                  example: STANDARD
                  enum:
                    - STANDARD
                    - EVENT
                    - OFFER
                summary:
                  type: string
                  description: 'Must not be greater than 1500 characters.'
                  example: 'n'
                cta_type:
                  type: string
                  description: 'Must not be greater than 50 characters.'
                  example: g
                  nullable: true
                cta_url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 500 characters.'
                  example: 'http://www.okuneva.com/fugiat-sunt-nihil-accusantium-harum-mollitia.html'
                  nullable: true
                event_title:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: k
                  nullable: true
                event_start:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-06-01T11:41:47'
                  nullable: true
                event_end:
                  type: string
                  description: 'Must be a valid date. Must be a date after or equal to <code>event_start</code>.'
                  example: '2052-06-24'
                  nullable: true
                offer_coupon_code:
                  type: string
                  description: 'Must not be greater than 50 characters.'
                  example: 'n'
                  nullable: true
                offer_terms:
                  type: string
                  description: 'Must not be greater than 500 characters.'
                  example: g
                  nullable: true
                scheduled_at:
                  type: string
                  description: 'Must be a valid date. Must be a date after <code>now</code>.'
                  example: '2052-06-24'
                  nullable: true
              required:
                - gmb_location_id
                - type
                - summary
  /api/v1/local-seo/recommendations:
    get:
      summary: ''
      operationId: getApiV1LocalSeoRecommendations
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Local SEO'
  /api/v1/local-seo/geogrid/history:
    get:
      summary: ''
      operationId: getApiV1LocalSeoGeogridHistory
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Local SEO'
  '/api/v1/local-seo/geogrid/{scanId}':
    get:
      summary: ''
      operationId: getApiV1LocalSeoGeogridScanId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Local SEO'
    parameters:
      -
        in: path
        name: scanId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/local-seo/gmb/sync:
    post:
      summary: ''
      operationId: postApiV1LocalSeoGmbSync
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Local SEO'
  '/api/v1/local-seo/recommendations/{actionId}':
    patch:
      summary: ''
      operationId: patchApiV1LocalSeoRecommendationsActionId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Local SEO'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                status:
                  type: string
                  description: ''
                  example: dismissed
                  enum:
                    - pending
                    - in_progress
                    - completed
                    - dismissed
              required:
                - status
    parameters:
      -
        in: path
        name: actionId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/local-seo/geogrid/scan:
    post:
      summary: ''
      operationId: postApiV1LocalSeoGeogridScan
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Local SEO'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                keyword:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: b
                gmb_location_id:
                  type: integer
                  description: ''
                  example: 16
                  nullable: true
                city:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: 'n'
                  nullable: true
                grid_size:
                  type: integer
                  description: ''
                  example: 5
                  enum:
                    - 3
                    - 5
                    - 7
                radius_miles:
                  type: number
                  description: 'Must be at least 1. Must not be greater than 50.'
                  example: 7
              required:
                - keyword
                - grid_size
                - radius_miles
  /api/v1/plugin/connect:
    post:
      summary: ''
      operationId: postApiV1PluginConnect
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Plugin
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                site_url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 500 characters.'
                  example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
              required:
                - site_url
  /api/v1/plugin/status:
    get:
      summary: ''
      operationId: getApiV1PluginStatus
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Plugin
  /api/v1/plugin/disconnect:
    delete:
      summary: ''
      operationId: deleteApiV1PluginDisconnect
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Plugin
  /api/v1/plugin/deliveries:
    get:
      summary: ''
      operationId: getApiV1PluginDeliveries
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Plugin
  '/api/v1/plugin/deliveries/{pluginDelivery_id}/confirm':
    post:
      summary: ''
      operationId: postApiV1PluginDeliveriesPluginDelivery_idConfirm
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Plugin
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                post_id:
                  type: integer
                  description: ''
                  example: 16
                  nullable: true
                url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 2000 characters.'
                  example: 'http://bailey.com/'
                  nullable: true
                error:
                  type: string
                  description: 'Must not be greater than 2000 characters.'
                  example: m
                  nullable: true
    parameters:
      -
        in: path
        name: pluginDelivery_id
        description: 'The ID of the pluginDelivery.'
        example: 16
        required: true
        schema:
          type: integer
  /api/v1/rank-tracking/overview:
    get:
      summary: ''
      operationId: getApiV1RankTrackingOverview
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Rank Tracking'
  /api/v1/rank-tracking/keywords:
    get:
      summary: ''
      operationId: getApiV1RankTrackingKeywords
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Rank Tracking'
  '/api/v1/rank-tracking/keywords/{id}/history':
    get:
      summary: ''
      operationId: getApiV1RankTrackingKeywordsIdHistory
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Rank Tracking'
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the keyword.'
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/rank-tracking/distribution:
    get:
      summary: ''
      operationId: getApiV1RankTrackingDistribution
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Rank Tracking'
  /api/v1/rank-tracking/top-movers:
    get:
      summary: ''
      operationId: getApiV1RankTrackingTopMovers
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Rank Tracking'
  '/api/v1/rank-tracking/keywords/{id}/toggle':
    post:
      summary: ''
      operationId: postApiV1RankTrackingKeywordsIdToggle
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Rank Tracking'
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the keyword.'
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/rank-tracking/bulk-track:
    post:
      summary: ''
      operationId: postApiV1RankTrackingBulkTrack
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Rank Tracking'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                keyword_ids:
                  type: array
                  description: ''
                  example:
                    - 16
                  items:
                    type: integer
                track:
                  type: boolean
                  description: ''
                  example: false
              required:
                - track
  /api/v1/rank-tracking/refresh:
    post:
      summary: ''
      operationId: postApiV1RankTrackingRefresh
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Rank Tracking'
  /api/v1/schema/generate:
    post:
      summary: ''
      operationId: postApiV1SchemaGenerate
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Schema
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                article_uuid:
                  type: string
                  description: ''
                  example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
              required:
                - article_uuid
  /api/v1/settings/brand-profile:
    get:
      summary: ''
      operationId: getApiV1SettingsBrandProfile
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Settings
  /api/v1/settings/local-seo:
    get:
      summary: ''
      operationId: getApiV1SettingsLocalSeo
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Settings
    patch:
      summary: ''
      operationId: patchApiV1SettingsLocalSeo
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Settings
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                enabled:
                  type: boolean
                  description: ''
                  example: false
                business_type:
                  type: string
                  description: ''
                  example: hybrid
                  enum:
                    - storefront
                    - service_area
                    - hybrid
                city:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: b
                  nullable: true
                state_region:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: 'n'
                  nullable: true
                neighborhood:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: g
                  nullable: true
                service_categories:
                  type: array
                  description: 'Must not be greater than 255 characters.'
                  example:
                    - z
                  items:
                    type: string
              required:
                - enabled
                - business_type
  /api/v1/settings/articles:
    get:
      summary: ''
      operationId: getApiV1SettingsArticles
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Settings
    patch:
      summary: ''
      operationId: patchApiV1SettingsArticles
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Settings
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                auto_publish:
                  type: boolean
                  description: ''
                  example: false
                  nullable: true
                show_branding:
                  type: boolean
                  description: ''
                  example: true
                  nullable: true
                article_style:
                  type: string
                  description: ''
                  example: professional
                  enum:
                    - professional
                    - casual
                    - friendly
                    - academic
                  nullable: true
                global_instructions:
                  type: string
                  description: 'Must not be greater than 2000 characters.'
                  example: b
                  nullable: true
                include_emojis:
                  type: boolean
                  description: ''
                  example: true
                  nullable: true
                use_first_person:
                  type: boolean
                  description: ''
                  example: false
                  nullable: true
                image_style:
                  type: string
                  description: ''
                  example: pencil_sketch
                  enum:
                    - watercolor
                    - cinematic
                    - digital_illustration
                    - pencil_sketch
                    - real_life
                  nullable: true
                include_youtube_videos:
                  type: boolean
                  description: ''
                  example: false
                  nullable: true
                author_name:
                  type: string
                  description: 'Must not be greater than 100 characters.'
                  example: 'n'
                  nullable: true
                author_title:
                  type: string
                  description: 'Must not be greater than 100 characters.'
                  example: g
                  nullable: true
                enable_cta:
                  type: boolean
                  description: ''
                  example: false
                  nullable: true
                brand_color:
                  type: string
                  description: 'Must match the regex /^#[0-9A-Fa-f]{6}$/. Must not be greater than 7 characters.'
                  example: zmiyvdl
                  nullable: true
                cta_text:
                  type: string
                  description: 'Must not be greater than 100 characters.'
                  example: j
                  nullable: true
                cta_url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 255 characters.'
                  example: 'http://tillman.com/'
                  nullable: true
                cta_style:
                  type: string
                  description: ''
                  example: inline
                  enum:
                    - button
                    - banner
                    - inline
                  nullable: true
                cta_position:
                  type: string
                  description: ''
                  example: bottom
                  enum:
                    - bottom
                    - both
                    - inline
                  nullable: true
                ctas_per_article:
                  type: integer
                  description: 'Must be at least 1. Must not be greater than 3.'
                  example: 1
                  nullable: true
                sitemap_url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 500 characters.'
                  example: 'http://www.dubuque.net/quo-omnis-nostrum-aut-adipisci'
                  nullable: true
                blog_root_url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 500 characters.'
                  example: 'https://cronin.com/incidunt-iure-odit-et-et-modi-ipsum.html'
                  nullable: true
                use_sitemap_links:
                  type: boolean
                  description: ''
                  example: true
                  nullable: true
                example_articles:
                  type: array
                  description: 'Must be a valid URL. Must not be greater than 500 characters.'
                  example:
                    - p
                  items:
                    type: string
                    nullable: true
  /api/v1/settings/business:
    patch:
      summary: ''
      operationId: patchApiV1SettingsBusiness
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Settings
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                business_name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: b
                  nullable: true
                website_url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 500 characters.'
                  example: 'http://bailey.com/'
                  nullable: true
                language:
                  type: string
                  description: 'Must be 2 characters.'
                  example: mi
                country:
                  type: string
                  description: 'Must not be greater than 2 characters.'
                  example: yv
                  nullable: true
                product_description:
                  type: string
                  description: 'Must not be greater than 2000 characters.'
                  example: d
                  nullable: true
                industry:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: l
                  nullable: true
  /api/v1/settings/audience:
    patch:
      summary: ''
      operationId: patchApiV1SettingsAudience
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Settings
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                target_audience:
                  type: array
                  description: 'Must not be greater than 255 characters.'
                  example:
                    - b
                  items:
                    type: string
                competitors:
                  type: array
                  description: 'Must not be greater than 500 characters.'
                  example:
                    - 'n'
                  items:
                    type: string
                icp_description:
                  type: string
                  description: 'Must not be greater than 2000 characters.'
                  example: g
                  nullable: true
                pain_points:
                  type: array
                  description: 'Must not be greater than 500 characters.'
                  example:
                    - z
                  items:
                    type: string
  /api/v1/settings/ecommerce/toggle:
    post:
      summary: ''
      operationId: postApiV1SettingsEcommerceToggle
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Settings
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                enabled:
                  type: boolean
                  description: ''
                  example: true
              required:
                - enabled
  /api/v1/sitemap/entries:
    get:
      summary: ''
      operationId: getApiV1SitemapEntries
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Sitemap
    post:
      summary: ''
      operationId: postApiV1SitemapEntries
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Sitemap
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                content_type:
                  type: string
                  description: ''
                  example: guide
                  enum:
                    - blog
                    - guide
                category:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: b
                url_pattern:
                  type: string
                  description: 'Must not be greater than 500 characters.'
                  example: 'n'
                priority:
                  type: integer
                  description: ''
                  example: 16
                  nullable: true
              required:
                - content_type
                - category
                - url_pattern
  /api/v1/sitemap/suggested-url:
    post:
      summary: ''
      operationId: postApiV1SitemapSuggestedUrl
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Sitemap
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                content_type:
                  type: string
                  description: ''
                  example: guide
                  enum:
                    - blog
                    - guide
                category:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: b
                slug:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: 'n'
              required:
                - content_type
                - category
                - slug
  '/api/v1/sitemap/entries/{id}':
    patch:
      summary: ''
      operationId: patchApiV1SitemapEntriesId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Sitemap
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                content_type:
                  type: string
                  description: ''
                  example: guide
                  enum:
                    - blog
                    - guide
                category:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: b
                url_pattern:
                  type: string
                  description: 'Must not be greater than 500 characters.'
                  example: 'n'
                priority:
                  type: integer
                  description: ''
                  example: 16
                  nullable: true
    delete:
      summary: ''
      operationId: deleteApiV1SitemapEntriesId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Sitemap
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the entry.'
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/subscription:
    get:
      summary: ''
      operationId: getApiV1Subscription
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Subscription
    post:
      summary: ''
      operationId: postApiV1Subscription
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Subscription
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                tier:
                  type: string
                  description: ''
                  example: semiannual
                  enum:
                    - monthly
                    - semiannual
                    - yearly
                coupon_code:
                  type: string
                  description: 'Must not be greater than 80 characters.'
                  example: b
                  nullable: true
              required:
                - tier
    patch:
      summary: ''
      operationId: patchApiV1Subscription
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Subscription
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                tier:
                  type: string
                  description: ''
                  example: semiannual
                  enum:
                    - monthly
                    - semiannual
                    - yearly
              required:
                - tier
    delete:
      summary: ''
      operationId: deleteApiV1Subscription
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Subscription
  /api/v1/subscription/plans:
    get:
      summary: ''
      operationId: getApiV1SubscriptionPlans
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Subscription
  /api/v1/subscription/checkout-link:
    post:
      summary: ''
      operationId: postApiV1SubscriptionCheckoutLink
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Subscription
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                tier:
                  type: string
                  description: ''
                  example: semiannual
                  enum:
                    - monthly
                    - semiannual
                    - yearly
                success_url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 500 characters.'
                  example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
                  nullable: true
                cancel_url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 500 characters.'
                  example: 'https://www.runte.com/ab-provident-perspiciatis-quo-omnis-nostrum-aut-adipisci'
                  nullable: true
              required:
                - tier
  /api/v1/subscription/billing-portal:
    post:
      summary: ''
      operationId: postApiV1SubscriptionBillingPortal
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Subscription
  /api/v1/webhooks:
    get:
      summary: ''
      operationId: getApiV1Webhooks
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Webhooks
    post:
      summary: ''
      operationId: postApiV1Webhooks
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Webhooks
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: b
                url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 2048 characters.'
                  example: 'http://bailey.com/'
                events:
                  type: array
                  description: ''
                  example:
                    - architecto
                  items:
                    type: string
              required:
                - name
                - url
  '/api/v1/webhooks/deliveries/{deliveryId}':
    get:
      summary: ''
      operationId: getApiV1WebhooksDeliveriesDeliveryId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Webhooks
    parameters:
      -
        in: path
        name: deliveryId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/webhooks/{id}':
    get:
      summary: ''
      operationId: getApiV1WebhooksId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Webhooks
    patch:
      summary: ''
      operationId: patchApiV1WebhooksId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Webhooks
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: b
                url:
                  type: string
                  description: 'Must be a valid URL. Must not be greater than 2048 characters.'
                  example: 'http://bailey.com/'
                events:
                  type: array
                  description: ''
                  example:
                    - architecto
                  items:
                    type: string
                secret:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: 'n'
                  nullable: true
                auth_type:
                  type: string
                  description: ''
                  example: architecto
                  nullable: true
                headers:
                  type: object
                  description: ''
                  example: null
                  properties: {  }
                  nullable: true
                is_active:
                  type: boolean
                  description: ''
                  example: true
                verify_ssl:
                  type: boolean
                  description: ''
                  example: false
                timeout:
                  type: integer
                  description: 'Must be at least 5. Must not be greater than 60.'
                  example: 22
                retry_count:
                  type: integer
                  description: 'Must be at least 0. Must not be greater than 5.'
                  example: 2
    delete:
      summary: ''
      operationId: deleteApiV1WebhooksId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Webhooks
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the webhook.'
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/webhooks/{id}/secret':
    get:
      summary: ''
      operationId: getApiV1WebhooksIdSecret
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Webhooks
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the webhook.'
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/webhooks/{id}/deliveries':
    get:
      summary: ''
      operationId: getApiV1WebhooksIdDeliveries
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Webhooks
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the webhook.'
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/webhooks/deliveries/{deliveryId}/retry':
    post:
      summary: ''
      operationId: postApiV1WebhooksDeliveriesDeliveryIdRetry
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Webhooks
    parameters:
      -
        in: path
        name: deliveryId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/webhooks/{id}/toggle':
    post:
      summary: ''
      operationId: postApiV1WebhooksIdToggle
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Webhooks
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the webhook.'
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/webhooks/{id}/test':
    post:
      summary: ''
      operationId: postApiV1WebhooksIdTest
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Webhooks
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the webhook.'
        example: architecto
        required: true
        schema:
          type: string
