swagger: '2.0' info: description: 'This is Genius Sports Services Fixture API.

Changelog resume

Authentication

You need to provide two tokens in every API call. The access_token for Auth0 client AND your API key

What is new in Fixtures API v2.

Fixture Tree Structure

Examples

I am interested in round 2 fixtures for the English Premier League


I am interested in Arsenal and their players

' version: 2.0.280 title: Fixtures-v2 Competitions Persons API contact: email: sbonboarding@geniussports.com license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html host: fixtures.api.geniussports.com basePath: /v2 schemes: - https tags: - name: Persons paths: /persons: options: consumes: - application/json produces: - application/json responses: '200': description: 200 response schema: $ref: '#/definitions/Empty' headers: Access-Control-Allow-Origin: type: string Access-Control-Allow-Methods: type: string Access-Control-Allow-Headers: type: string tags: - Persons get: tags: - Persons summary: Retrieve persons by ID/s. MAX 200 per page. (Not available yet) description: Returns persons wrapped inside a HATEOAS model produces: - application/json parameters: - name: page in: query description: The number of page to be returned. The default value is 1. required: false type: string - name: pageSize in: query description: The size of the page to be returned. The default value is 10. required: false type: string - name: sortBy in: query description: 'The field to ''order by'' by. Descending ordering also allowed. Fields to order by for this endpoint: (id, name)' required: false type: string - name: x-api-key in: header required: true type: string - name: filter in: query description: 'The field to ''filter'' by. Check main description for filter comparators. Fields to filter by for this endpoint: (id, name)' required: false type: string responses: '200': description: successful operation schema: $ref: '#/definitions/PersonsListResponseModelHATEOASReponseModel' headers: Access-Control-Allow-Origin: type: string '520': description: Unknown error schema: $ref: '#/definitions/ErrorModel' '400': description: Bad request schema: $ref: '#/definitions/BadRequestModel' '500': description: Internal Server Error schema: $ref: '#/definitions/ErrorModel' '401': description: Unauthorized schema: $ref: '#/definitions/ErrorModel' '413': description: Payload Too Large schema: $ref: '#/definitions/ErrorModel' '403': description: Forbidden schema: $ref: '#/definitions/ErrorModel' '415': description: Unsupported Media Type schema: $ref: '#/definitions/ErrorModel' '404': description: Not found schema: $ref: '#/definitions/ErrorModel' '504': description: Gateway Timeout schema: $ref: '#/definitions/ErrorModel' '429': description: Too Many Requests OR Limit Exceeded - On reason = Too Many requests one should re-try, for Limit Exceeded that does not help you schema: $ref: '#/definitions/ErrorModel' security: - Auth0: [] - api_key: [] post: tags: - Persons summary: Create new person consumes: - application/json produces: - application/json parameters: - name: x-api-key in: header required: true type: string - name: gs-fixtures-api-sub-source in: header description: Sub Source Name required: false type: string - in: body name: CreatePersonViewModel required: true schema: $ref: '#/definitions/CreatePersonViewModel' responses: '520': description: Unknown error schema: $ref: '#/definitions/ErrorModel' '201': description: Created schema: $ref: '#/definitions/PersonResponseModel' '400': description: Bad request schema: $ref: '#/definitions/BadRequestModel' '202': description: Accepted schema: $ref: '#/definitions/AcceptedModel' '500': description: Internal Server Error schema: $ref: '#/definitions/ErrorModel' '404': description: Not found schema: $ref: '#/definitions/ErrorModel' '504': description: Gateway Timeout schema: $ref: '#/definitions/ErrorModel' '429': description: Too Many Requests OR Limit Exceeded - On reason = Too Many requests one should re-try, for Limit Exceeded that does not help you schema: $ref: '#/definitions/ErrorModel' '409': description: Conflict, see the response message or the 'geniussports-conflict-id' header to see the ID of the conflict! schema: $ref: '#/definitions/ErrorDuplicateModel' security: - Auth0: [] - api_key: [] put: tags: - Persons summary: Update existing person consumes: - application/json produces: - application/json parameters: - name: x-api-key in: header required: true type: string - name: gs-fixtures-api-sub-source in: header description: Sub Source Name required: false type: string - in: body name: UpdatePersonViewModel required: true schema: $ref: '#/definitions/UpdatePersonViewModel' responses: '200': description: Success schema: $ref: '#/definitions/PersonResponseModel' '520': description: Unknown error schema: $ref: '#/definitions/ErrorModel' '400': description: Bad request schema: $ref: '#/definitions/BadRequestModel' '202': description: Accepted schema: $ref: '#/definitions/AcceptedModel' '500': description: Internal Server Error schema: $ref: '#/definitions/ErrorModel' '404': description: Not found schema: $ref: '#/definitions/ErrorModel' '504': description: Gateway Timeout schema: $ref: '#/definitions/ErrorModel' '409': description: Conflict, see the response message or the 'geniussports-conflict-id' header to see the ID of the conflict! schema: $ref: '#/definitions/ErrorDuplicateModel' security: - Auth0: [] - api_key: [] /persons/coaches: options: consumes: - application/json produces: - application/json responses: '200': description: 200 response schema: $ref: '#/definitions/Empty' headers: Access-Control-Allow-Origin: type: string Access-Control-Allow-Methods: type: string Access-Control-Allow-Headers: type: string tags: - Persons get: tags: - Persons summary: Retrieve persons which were in the past or are currently coaches by ID/s. MAX 200 per page. (Not available yet) description: Returns persons wrapped inside a HATEOAS model produces: - application/json parameters: - name: page in: query description: The number of page to be returned. The default value is 1. required: false type: string - name: pageSize in: query description: The size of the page to be returned. The default value is 10. required: false type: string - name: sortBy in: query description: 'The field to ''order by'' by. Descending ordering also allowed. Fields to order by for this endpoint: (id, name)' required: false type: string - name: x-api-key in: header required: true type: string - name: filter in: query description: 'The field to ''filter'' by. Check main description for filter comparators. Fields to filter by for this endpoint: (id, name)' required: false type: string responses: '200': description: successful operation schema: $ref: '#/definitions/PersonsListResponseModelHATEOASReponseModel' headers: Access-Control-Allow-Origin: type: string '520': description: Unknown error schema: $ref: '#/definitions/ErrorModel' '400': description: Bad request schema: $ref: '#/definitions/BadRequestModel' '500': description: Internal Server Error schema: $ref: '#/definitions/ErrorModel' '401': description: Unauthorized schema: $ref: '#/definitions/ErrorModel' '413': description: Payload Too Large schema: $ref: '#/definitions/ErrorModel' '403': description: Forbidden schema: $ref: '#/definitions/ErrorModel' '415': description: Unsupported Media Type schema: $ref: '#/definitions/ErrorModel' '404': description: Not found schema: $ref: '#/definitions/ErrorModel' '504': description: Gateway Timeout schema: $ref: '#/definitions/ErrorModel' '429': description: Too Many Requests OR Limit Exceeded - On reason = Too Many requests one should re-try, for Limit Exceeded that does not help you schema: $ref: '#/definitions/ErrorModel' security: - Auth0: [] - api_key: [] /persons/{id}: options: consumes: - application/json produces: - application/json parameters: - name: id in: path required: true type: string responses: '200': description: 200 response schema: $ref: '#/definitions/Empty' headers: Access-Control-Allow-Origin: type: string Access-Control-Allow-Methods: type: string Access-Control-Allow-Headers: type: string tags: - Persons get: tags: - Persons summary: Retrieve persons details by ID. (not available yet) description: Returns persons details including sport specific details (metadata properties) produces: - application/json parameters: - name: x-api-key in: header required: true type: string - name: id in: path description: Single person ID to return details for required: true type: string responses: '200': description: successful operation schema: $ref: '#/definitions/PersonResponseModel' headers: Access-Control-Allow-Origin: type: string '520': description: Unknown error schema: $ref: '#/definitions/ErrorModel' '400': description: Bad request schema: $ref: '#/definitions/BadRequestModel' '202': description: Accepted schema: $ref: '#/definitions/AcceptedModel' '500': description: Internal Server Error schema: $ref: '#/definitions/ErrorModel' '401': description: Unauthorized schema: $ref: '#/definitions/ErrorModel' '413': description: Payload Too Large schema: $ref: '#/definitions/ErrorModel' '403': description: Forbidden schema: $ref: '#/definitions/ErrorModel' '415': description: Unsupported Media Type schema: $ref: '#/definitions/ErrorModel' '404': description: Not found schema: $ref: '#/definitions/ErrorModel' '504': description: Gateway Timeout schema: $ref: '#/definitions/ErrorModel' '429': description: Too Many Requests OR Limit Exceeded - On reason = Too Many requests one should re-try, for Limit Exceeded that does not help you schema: $ref: '#/definitions/ErrorModel' security: - Auth0: [] - api_key: [] delete: tags: - Persons summary: Delete existing person produces: - application/json parameters: - name: x-api-key in: header required: true type: string - name: gs-fixtures-api-sub-source in: header description: Sub Source Name required: false type: string - name: id in: path required: true type: string responses: '200': description: Success '520': description: Unknown error schema: $ref: '#/definitions/ErrorModel' '400': description: Bad request schema: $ref: '#/definitions/BadRequestModel' '202': description: Accepted schema: $ref: '#/definitions/AcceptedModel' '500': description: Internal Server Error schema: $ref: '#/definitions/ErrorModel' '404': description: Not found schema: $ref: '#/definitions/ErrorModel' '504': description: Gateway Timeout schema: $ref: '#/definitions/ErrorModel' security: - Auth0: [] - api_key: [] /persons/{id}/contracts: options: consumes: - application/json produces: - application/json parameters: - name: id in: path required: true type: string responses: '200': description: 200 response schema: $ref: '#/definitions/Empty' headers: Access-Control-Allow-Origin: type: string Access-Control-Allow-Methods: type: string Access-Control-Allow-Headers: type: string tags: - Persons /persons/{id}/officials: options: consumes: - application/json produces: - application/json parameters: - name: id in: path required: true type: string responses: '200': description: 200 response schema: $ref: '#/definitions/Empty' headers: Access-Control-Allow-Origin: type: string Access-Control-Allow-Methods: type: string Access-Control-Allow-Headers: type: string tags: - Persons get: tags: - Persons summary: Retrieve person's officials by person ID. MAX 200 per page. description: Returns person's officials wrapped inside a HATEOAS model produces: - application/json parameters: - name: page in: query description: The number of page to be returned. The default value is 1. required: false type: string - name: pageSize in: query description: The size of the page to be returned. The default value is 10. required: false type: string - name: sortBy in: query description: The field to 'order by' by. Descending ordering also allowed. required: false type: string - name: x-api-key in: header required: true type: string - name: filter in: query description: The field to 'filter' by. Check main description for filter comparators. required: false type: string - name: id in: path description: Single person ID to return officials for required: true type: string responses: '200': description: successful operation schema: $ref: '#/definitions/PersonOfficialResponseModelHATEOASReponseModel' headers: Access-Control-Allow-Origin: type: string '520': description: Unknown error schema: $ref: '#/definitions/ErrorModel' '400': description: Bad request schema: $ref: '#/definitions/BadRequestModel' '301': description: redirect operation headers: Location: type: string '500': description: Internal Server Error schema: $ref: '#/definitions/ErrorModel' '401': description: Unauthorized schema: $ref: '#/definitions/ErrorModel' '413': description: Payload Too Large schema: $ref: '#/definitions/ErrorModel' '403': description: Forbidden schema: $ref: '#/definitions/ErrorModel' '415': description: Unsupported Media Type schema: $ref: '#/definitions/ErrorModel' '404': description: Not found schema: $ref: '#/definitions/ErrorModel' '504': description: Gateway Timeout schema: $ref: '#/definitions/ErrorModel' '429': description: Too Many Requests OR Limit Exceeded - On reason = Too Many requests one should re-try, for Limit Exceeded that does not help you schema: $ref: '#/definitions/ErrorModel' security: - Auth0: [] - api_key: [] definitions: BadRequestModel: type: object properties: messages: type: array items: type: string Error: type: object required: - domain - message - reason properties: reason: type: string domain: type: string locationType: type: string location: type: string message: type: string CreatePersonViewModel: type: object required: - firstName - genderType - lastName - localityId - useNickname properties: firstName: type: string description: The first name of the person title: First Name maxLength: 256 lastName: type: string description: The last name of the person title: Last Name maxLength: 256 nickName: type: string description: The nickname of the person title: Nickname maxLength: 128 useNickname: type: boolean description: Whether the nickname should be used instead of the name of the person when displaying the person. If the useNickname property is set to true nickname is required! title: Is active localityId: type: integer format: int64 description: Id of the country,virtual place, etc. of the person! title: Locality Id dateOfBirth: type: string format: date-time description: The date of birth of the person title: Date of birth genderType: $ref: '#/definitions/PersonGenderType' sports: type: array description: Array of sport Ids to be added to the person. title: Sports items: type: integer description: Sports to which the person belongs to. title: Sports ErrorDuplicateModel: type: object properties: messages: type: array items: type: string geniusSportsConflictId: type: string description: This is the official genius sports ID, which you have conflict with. JsonbModel: type: object properties: name: type: string value: type: string isDeleted: type: boolean HALEmbededResponse: type: object required: - id - name - ref properties: id: type: integer format: int64 name: type: string externalIds: $ref: '#/definitions/ExternalIdsViewModel' ref: type: string PersonsListResponseModelHATEOASReponseModel: type: object properties: page: type: integer format: int32 pageSize: type: integer format: int32 totalItems: type: integer format: int64 items: type: array items: $ref: '#/definitions/PersonResponseModel' self: type: string previous: type: string next: type: string first: type: string last: type: string UpdatePersonViewModel: type: object required: - firstName - genderType - id - isActive - lastName - localityId - useNickname properties: firstName: type: string description: The first name of the person title: First Name maxLength: 256 lastName: type: string description: The last name of the person title: Last Name maxLength: 256 nickName: type: string description: The nickname of the person title: Nickname maxLength: 128 useNickname: type: boolean description: Whether the nickname should be used instead of the name of the person when displaying the person. If the useNickname property is set to true nickname is required! title: Is active localityId: type: integer format: int64 description: Id of the country,virtual place, etc. of the person! title: Locality Id dateOfBirth: type: string format: date-time description: The date of birth of the person title: Date of birth genderType: description: 'This property defines the possible gender types which can be set as integer values. Each integer value is associated with relevant gender type as follows: 0 - Undefined; 1 - Male; 2 - Female; 3 - Mixed. It can only be updated if the person does not have active relations to the any competitor' $ref: '#/definitions/PersonGenderType' id: type: integer format: int64 description: The ID of the person. title: Id isActive: type: boolean description: Whether the person can be used as fixture official or as part of a competitor. Setting this to false will deactivate all relations of a person to fixtures as fixture official or to competitor as coach/player or any other type of relation between person and competitor. It will also prevent using the person in future competitor/ fixture relations title: Is Active sports: type: array description: Array of sport Ids to be added to the person. title: Sports items: type: integer description: Sports to which the person belongs to. title: Sports ExternalIdsViewModel: type: object properties: optaId: type: string optaLegacyId: type: string fibaId: type: string vesselId: type: string statsEngineId: type: string description: External system identifiers. Key represents the external system name (e.g., 'optaId', 'optaLegacyId', 'fibaId', 'vesselId','statsEngineId'), value represents the identifier. The property also allows filtering by specific external system identifiers. For example '?filter=externalIds.optaId[equals]:12345' to filter entities with a specific Opta ID. Empty: type: object PersonOfficialResponseModel: type: object required: - createdOn - fixture - id - sport - updatesCount properties: id: type: integer format: int64 createdOn: type: string format: date-time modifiedOn: type: string format: date-time updatesCount: type: integer format: int32 fixture: $ref: '#/definitions/HALEmbededResponse' sport: $ref: '#/definitions/HALEmbededResponse' metadataProperties: type: array items: $ref: '#/definitions/JsonbModel' ErrorModel: type: object properties: code: type: integer format: int32 message: type: string error: $ref: '#/definitions/Error' PersonResponseModel: type: object required: - createdOn - firstName - fullName - genderType - id - isActive - lastName - locality - updatesCount - useNickname properties: id: type: integer format: int64 fullName: type: string firstName: type: string lastName: type: string genderType: type: string description: Undefined, Male, Female, Mixed. dateOfBirth: type: string format: date-time isActive: type: boolean nickName: type: string useNickname: type: boolean locality: $ref: '#/definitions/HALEmbededResponse' sports: type: array items: $ref: '#/definitions/HALEmbededResponse' createdOn: type: string format: date-time modifiedOn: type: string format: date-time updatesCount: type: integer format: int32 externalIds: $ref: '#/definitions/ExternalIdsViewModel' PersonOfficialResponseModelHATEOASReponseModel: type: object properties: page: type: integer format: int32 pageSize: type: integer format: int32 totalItems: type: integer format: int64 items: type: array items: $ref: '#/definitions/PersonOfficialResponseModel' self: type: string previous: type: string next: type: string first: type: string last: type: string PersonGenderType: type: integer title: Gender Type format: int32 description: 'This property defines the possible person gender types which can be set as integer values. Each integer value is associated with relevant gender type as follows: 0 - Undefined; 1 - Male; 2 - Female;' enum: - '0' - '1' - '2' AcceptedModel: type: object properties: messages: type: array items: type: string securityDefinitions: Auth0: type: apiKey name: Authorization in: header x-amazon-apigateway-authtype: oauth2 api_key: type: apiKey name: x-api-key in: header x-amazon-apigateway-security-policy: TLS_1_0