> ## Documentation Index
> Fetch the complete documentation index at: https://docs.golfjoin.co.kr/llms.txt
> Use this file to discover all available pages before exploring further.

# 티 매물 수정·마감

> 보낸 필드만 바꿉니다. 값을 지우려면 null로 보냅니다. 실제로 바뀐 값이 있으면 매물이 목록 위로 올라가고(한도 차감 없음), 바뀐 게 없으면 `updated: false`로 아무것도 하지 않습니다.
`action: "close"`를 보내면 마감합니다. 마감한 매물은 다시 열 수 없습니다.




## OpenAPI

````yaml /api-reference/openapi.yaml patch /api/v1/manager/contents
openapi: 3.1.0
info:
  title: 조인성공 파트너 API
  version: '2026-11-02'
  description: 매니저 본인의 권한으로 조인성공 티 매물을 등록·수정·마감합니다.
servers:
  - url: https://golfjoin.co.kr
security:
  - bearerAuth: []
paths:
  /api/v1/manager/contents:
    patch:
      tags:
        - 티 매물
      summary: 티 매물 수정·마감
      description: >
        보낸 필드만 바꿉니다. 값을 지우려면 null로 보냅니다. 실제로 바뀐 값이 있으면 매물이 목록 위로 올라가고(한도 차감 없음),
        바뀐 게 없으면 `updated: false`로 아무것도 하지 않습니다.

        `action: "close"`를 보내면 마감합니다. 마감한 매물은 다시 열 수 없습니다.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - type: object
                  required:
                    - id
                  properties:
                    id:
                      type: integer
                      description: 매물 번호
                      example: 188201
                    action:
                      type: string
                      enum:
                        - close
                      description: 마감할 때만 보냅니다.
                - $ref: '#/components/schemas/ContentFields'
            examples:
              수정:
                value:
                  id: 188201
                  price: 140000
                  deposit: null
              마감:
                value:
                  id: 188201
                  action: close
      responses:
        '200':
          description: 수정 결과 또는 마감 결과
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    title: 수정
                    properties:
                      id:
                        type: integer
                      updated:
                        type: boolean
                        description: 바뀐 값이 있었으면 true
                  - type: object
                    title: 마감
                    properties:
                      ok:
                        type: boolean
                      status:
                        type: string
                        enum:
                          - EXPIRED
        '400':
          $ref: '#/components/responses/InvalidInput'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: 없는 매물·내 매물 아님(not_found) 또는 없는 골프장(course_not_found)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: not_found
components:
  schemas:
    ContentFields:
      type: object
      properties:
        golfCourseId:
          type: integer
          description: 골프장 ID
          example: 3
        contentType:
          type: string
          enum:
            - JOIN
            - TRANSFER
          description: JOIN(조인) 또는 TRANSFER(양도)
        playDate:
          type: string
          description: 플레이 날짜 YYYY-MM-DD (KST)
          example: '2026-12-20'
        teeTime:
          type: string
          description: 티업 시간 HH:MM, 24시간제 (KST)
          example: '07:12'
        courseLabel:
          type:
            - string
            - 'null'
          maxLength: 30
          description: 코스 이름. 골프장 목록의 fields[].name. <, > 불가
          example: 레이크
        playerCount:
          type:
            - integer
            - 'null'
          description: 조인은 모집 인원, 양도는 팀 인원(1~4)
          example: 1
        joinCondition:
          type:
            - string
            - 'null'
          description: '조인 조건: 무관, 부부커플, 남자, 여자. 양도는 null'
          example: 무관
        price:
          type:
            - integer
            - 'null'
          description: 1인 그린피, 원 단위
          example: 150000
        deposit:
          type:
            - integer
            - 'null'
          minimum: 0
          description: 선입금, 원 단위. 0은 선입금 없음
          example: 0
        caddyType:
          type:
            - string
            - 'null'
          description: '캐디 조건: 일반캐디, 노캐디, 운전캐디, 새싹캐디'
          example: 일반캐디
        holeCount:
          type:
            - integer
            - 'null'
          description: 9, 18, 27, 36
          example: 18
        cartIncluded:
          type:
            - boolean
            - 'null'
          description: 카트비 포함 여부
        mealIncluded:
          type:
            - boolean
            - 'null'
          description: 식사 포함 여부
        allowCall:
          type: boolean
          description: 전화 문의 허용. 기본 true, false면 문자 문의만
        contentText:
          type:
            - string
            - 'null'
          description: 매물 안내문(메모)
          example: 카트비 포함, 캐디피 별도입니다.
        title:
          type:
            - string
            - 'null'
          maxLength: 100
          description: 제목. 비우면 '골프장명 날짜 시간' 자동. <, > 불가
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: 오류 코드
          example: invalid_input
  responses:
    InvalidInput:
      description: 필수 필드 누락 또는 형식 오류
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: invalid_input
    Forbidden:
      description: 토큰 없음·만료·무효, 권한 범위 밖, 매니저 승인 해제(forbidden) 또는 플랜 없음(no_plan)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: forbidden
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: OAuth 로그인으로 받은 access token. 1시간 동안 유효합니다.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.