---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.1
  name: apiportals.hub.traefik.io
spec:
  group: hub.traefik.io
  names:
    kind: APIPortal
    listKind: APIPortalList
    plural: apiportals
    singular: apiportal
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: APIPortal defines a developer portal for accessing the documentation
          of APIs.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: The desired behavior of this APIPortal.
            properties:
              description:
                description: Description of the APIPortal.
                type: string
              title:
                description: Title is the public facing name of the APIPortal.
                type: string
              trustedUrls:
                description: TrustedURLs are the urls that are trusted by the OAuth
                  2.0 authorization server.
                items:
                  type: string
                maxItems: 1
                minItems: 1
                type: array
                x-kubernetes-validations:
                - message: must be a valid URLs
                  rule: self.all(x, isURL(x))
              ui:
                description: UI holds the UI customization options.
                properties:
                  logoUrl:
                    description: LogoURL is the public URL of the logo.
                    type: string
                type: object
            required:
            - trustedUrls
            type: object
          status:
            description: The current status of this APIPortal.
            properties:
              hash:
                description: Hash is a hash representing the APIPortal.
                type: string
              oidc:
                description: OIDC is the OIDC configuration for accessing the exposed
                  APIPortal WebUI.
                properties:
                  clientId:
                    description: ClientID is the OIDC ClientID for accessing the exposed
                      APIPortal WebUI.
                    type: string
                  companyClaim:
                    description: CompanyClaim is the name of the JWT claim containing
                      the user company.
                    type: string
                  emailClaim:
                    description: EmailClaim is the name of the JWT claim containing
                      the user email.
                    type: string
                  firstnameClaim:
                    description: FirstnameClaim is the name of the JWT claim containing
                      the user firstname.
                    type: string
                  generic:
                    description: Generic indicates whether or not the APIPortal authentication
                      relies on Generic OIDC.
                    type: boolean
                  groupsClaim:
                    description: GroupsClaim is the name of the JWT claim containing
                      the user groups.
                    type: string
                  issuer:
                    description: Issuer is the OIDC issuer for accessing the exposed
                      APIPortal WebUI.
                    type: string
                  lastnameClaim:
                    description: LastnameClaim is the name of the JWT claim containing
                      the user lastname.
                    type: string
                  scopes:
                    description: Scopes is the OIDC scopes for getting user attributes
                      during the authentication to the exposed APIPortal WebUI.
                    type: string
                  secretName:
                    description: SecretName is the name of the secret containing the
                      OIDC ClientSecret for accessing the exposed APIPortal WebUI.
                    type: string
                  syncedAttributes:
                    description: SyncedAttributes configure the user attributes to
                      sync.
                    items:
                      type: string
                    type: array
                  userIdClaim:
                    description: UserIDClaim is the name of the JWT claim containing
                      the user ID.
                    type: string
                type: object
              syncedAt:
                format: date-time
                type: string
              version:
                type: string
            type: object
        type: object
    served: true
    storage: true
