> ## Documentation Index
> Fetch the complete documentation index at: https://conductorone-nhi-visibility-draft.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Push Discovery

> PushDiscovery records the vocabulary a Time Bandit instance reports for
 itself -- principal, scope, destination, credential recipe, posture and
 route names -- replacing any prior snapshot. Called by timebanditd when
 its local configuration changes.



## OpenAPI

````yaml https://spec.speakeasy.com/conductor-one/conductorone/my-source-with-code-samples post /api/v1/tb-control-plane/discovery
openapi: 3.1.0
info:
  description: The C1 API is a HTTP API for managing C1 resources.
  title: C1 API
  version: 0.1.0-alpha
servers:
  - description: The C1 API server for the current tenant.
    url: https://{tenantDomain}.conductor.one
    variables:
      tenantDomain:
        default: example
        description: The domain of the tenant to use for this request.
security:
  - bearerAuth: []
    oauth: []
paths:
  /api/v1/tb-control-plane/discovery:
    post:
      tags:
        - Time Bandit Control Plane
      summary: Push Discovery
      description: |-
        PushDiscovery records the vocabulary a Time Bandit instance reports for
         itself -- principal, scope, destination, credential recipe, posture and
         route names -- replacing any prior snapshot. Called by timebanditd when
         its local configuration changes.
      operationId: c1.api.tbcontrolplane.v1.TBControlPlaneService.PushDiscovery
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/c1.api.tbcontrolplane.v1.TBControlPlaneServicePushDiscoveryRequest
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/c1.api.tbcontrolplane.v1.TBControlPlaneServicePushDiscoveryResponse
          description: Successful response
components:
  schemas:
    c1.api.tbcontrolplane.v1.TBControlPlaneServicePushDiscoveryRequest:
      description: The TBControlPlaneServicePushDiscoveryRequest message.
      properties:
        credentials:
          description: The credentials field.
          items:
            type: string
          type:
            - array
            - 'null'
        destinations:
          additionalProperties:
            $ref: >-
              #/components/schemas/c1.models.tbcontrolplane.v1.TBDiscoveryDestinationTargets
          description: The destinations field.
          type: object
        ingressScopes:
          description: The ingressScopes field.
          items:
            type: string
          type:
            - array
            - 'null'
        postures:
          description: The postures field.
          items:
            type: string
          type:
            - array
            - 'null'
        principals:
          description: The principals field.
          items:
            type: string
          type:
            - array
            - 'null'
        routes:
          description: The routes field.
          items:
            type: string
          type:
            - array
            - 'null'
        tbInstanceId:
          description: The tbInstanceId field.
          type: string
      title: Tb Control Plane Service Push Discovery Request
      type: object
      x-speakeasy-name-override: TBControlPlaneServicePushDiscoveryRequest
    c1.api.tbcontrolplane.v1.TBControlPlaneServicePushDiscoveryResponse:
      description: The TBControlPlaneServicePushDiscoveryResponse message.
      properties:
        snapshot:
          oneOf:
            - $ref: >-
                #/components/schemas/c1.models.tbcontrolplane.v1.TBDiscoverySnapshot
            - type: 'null'
      title: Tb Control Plane Service Push Discovery Response
      type: object
      x-speakeasy-name-override: TBControlPlaneServicePushDiscoveryResponse
    c1.models.tbcontrolplane.v1.TBDiscoveryDestinationTargets:
      description: |-
        TBDiscoveryDestinationTargets holds the destination-group values for one
         key of TBDiscoverySnapshot.destinations -- proto3 map values cannot be a
         bare `repeated string`.
      properties:
        values:
          description: The values field.
          items:
            type: string
          type:
            - array
            - 'null'
      title: Tb Discovery Destination Targets
      type: object
      x-speakeasy-name-override: TBDiscoveryDestinationTargets
    c1.models.tbcontrolplane.v1.TBDiscoverySnapshot:
      description: |-
        TBDiscoverySnapshot is one Time Bandit instance's self-reported
         vocabulary: the principals, ingress scopes, destinations, credential
         recipe names, posture names, and route names it knows about. Names
         only -- never token values or credential material.

         Dynamo-only: the control plane has no query pattern that needs
         Postgres (lookup is always a direct tenant_id+tb_instance_id get).
      properties:
        createdAt:
          format: date-time
          type:
            - string
            - 'null'
        credentials:
          description: The credentials field.
          items:
            type: string
          type:
            - array
            - 'null'
        destinations:
          additionalProperties:
            $ref: >-
              #/components/schemas/c1.models.tbcontrolplane.v1.TBDiscoveryDestinationTargets
          description: The destinations field.
          type: object
        ingressScopes:
          description: The ingressScopes field.
          items:
            type: string
          type:
            - array
            - 'null'
        postures:
          description: The postures field.
          items:
            type: string
          type:
            - array
            - 'null'
        principals:
          description: The principals field.
          items:
            type: string
          type:
            - array
            - 'null'
        reportedAt:
          format: date-time
          type:
            - string
            - 'null'
        routes:
          description: The routes field.
          items:
            type: string
          type:
            - array
            - 'null'
        tbInstanceId:
          description: The tbInstanceId field.
          type: string
        tenantId:
          description: The tenantId field.
          type: string
        updatedAt:
          format: date-time
          type:
            - string
            - 'null'
      title: Tb Discovery Snapshot
      type: object
      x-speakeasy-name-override: TBDiscoverySnapshot
  securitySchemes:
    bearerAuth:
      scheme: bearer
      type: http
    oauth:
      description: >-
        This API uses OAuth2 with the Client Credential flow.

        Client Credentials must be sent in the BODY, not the headers.

        For an example of how to implement this, refer to the
        [c1TokenSource.Token()](https://github.com/ConductorOne/conductorone-sdk-go/blob/3375fe7c0126d17e7ec4e711693dee7b791023aa/token_source.go#L101-L187)
        function.
      flows:
        clientCredentials:
          scopes: {}
          tokenUrl: /auth/v1/token
      type: oauth2

````